我正在使用Jenkins管道配置Android应用程序构建过程。
在构建的开始和结束时,将消息发送到相关的Slack通道。
Jenkinsfile的相关部分如下所示:
slackSend (channel: '#slack-test', color: 'warning', message: "Finished: Job '${env.JOB_NAME} [${env.BUILD_NUMBER}]' State: ${STATE}. Artifacts can be viewed here: ${env.BUILD_URL}artifact/Product/build/outputs/ ")
除了上述信息之外,我还想包括构建运行到该消息的时间,该消息通知构建结束。
是否可以在不添加任何外部插件的情况下做到这一点?如果有一个环境变量可以保存此信息,那将是完美的,但我找不到这样的变量。
由于此 jenkins-pipeline 脚本位于 Groovy中,因此 您可以new Date()
在其上简单地使用它。这样"Current time ${new Date()}"
的message
论点必须起作用:
slackSend (channel: '#slack-test', color: 'warning', message: "Current time ${new Date()}")
这将在您的频道中产生以下消息:
Current time: Thu Oct 13 17:25:12 CEST 2016
如果需要特定的日期格式,可以使用format(String format)
方法,例如"${new Date().format('dd/MM/yyyy')}"
:
slackSend (channel: '#slack-test', color: 'warning', message: "Current time ${new Date().format('dd/MM/yyyy')}")
相反,它将产生以下消息:
Current time: 13/10/2016
更新
由于您不想使用任何外部插件(这样做有些棘手),因此可以使用jenkins-pipeline中的follow脚本将开始时间保存在文件中:
def f = new File("/tmp/buildStart.txt")
def start = new Date().format('dd/MM/yyyy HH:mm:ss')
f.text = start
slackSend color: 'red', message: "Build start at ${start}"
然后在构建完成的另一个jenkins管道中,从文件中解析日期,并获得与当前时间的差值:
def f = new File("/tmp/buildStart.txt")
def startDate = new Date().parse('dd/MM/yyyy HH:mm:ss',f.text)
def endDate = new Date()
def tookTime = groovy.time.TimeCategory.minus(endDate,startDate).toString()
slackSend color: 'red', message: "Total time: ${tookTime}"
问题内容: 我是第一次配置Jenkins,到目前为止一直是它的用户。 我阅读了文档,了解了“ $ WORKSPACE”在 从属服务器 上的含义。 我有一个误解, 默认情况下 ,Jenkins Slave上的作业在工作区目录中每个作业的唯一目录中运行。似乎并非如此。 如何为每个作业运行分配唯一目录?作业完成后,詹金斯会自动清除此作业运行目录吗? 问题答案: 默认情况下,jenkins从运行;这里在节
问题内容: 我需要获取执行时间(以毫秒为单位)。 当时接受的答案是使用newDate()。getTime()。但是,我们现在都可以同意使用标准performance.now()API更合适。因此,我正在更改对此答案的公认答案。 问题答案: 使用 performance.now(): :需要导入类 使用 console.time: (非标准) (living standard) 注意 : 传递给和方
问题内容: 尝试运行我的构建脚本时出现以下错误。 我尝试切换到用户,并且能够顺利运行脚本。我还检查了并尝试重新安装。没运气! CentOS 5/6 PHP 5.4(Zend服务器) jenkins1.477 PHP QA组件(最新) 问题答案: 我终于想通了…检查变量在这种情况下没有帮助。运行Jenkins作业时不会执行各种Shell启动文件,因此未正确填充变量。可以通过以下三个步骤来纠正此问题:
我想在Jenkins有以下工作流程: 用户点击“立即构建” 用户填写构建参数 用户点击“构建” 信息(通过脚本)生成并与“继续”按钮一起呈现给用户 用户单击“继续”按钮,只需触发另一个作业 如何做到这一点?
计算一个函数执行的时间。 使用 console.time() 和 console.timeEnd() 来测量开始和结束时间之间的差,以确定回调执行的时间。 const timeTaken = callback => { console.time('timeTaken'); const r = callback(); console.timeEnd('timeTaken'); ret