我的repo中有一个带有Jenkinsfile的multibranch管道,我可以在每次提交时使用我的CI工作流程(构建和单元测试 - > deploy-dev - >批准 - > deploy-QA - >批准 - > deploy-prod) . 我想做的是在第一阶段构建和单元测试的夜间构建中添加SonarQube Analysis . 由于我的构建是由Gitlab触发的,我已经定义了我的管道触发器如下:
pipeline {
...
triggers {
gitlab(triggerOnPush: true, triggerOnMergeRequest: true, branchFilterType: 'All')
}
...
}
为了设置我的夜间构建,我添加了
triggers {
...
cron('H H * * *')
}
但是现在,如果我们只是在晚上构建由cron表达式触发的作业,如何执行分析步骤?
我简化的构建阶段如下所示:
stage('Build & Tests & Analysis') {
// HERE THE BEGIN SONAR ANALYSIS (to be executed on nightly builds)
bat 'msbuild.exe ...'
bat 'mstest.exe ...'
// HERE THE END SONAR ANALYSIS (to be executed on nightly builds)
}
4 回答
有如何获取构建触发器信息的方法 . 它在这里描述:https://jenkins.io/doc/pipeline/examples/#get-build-cause
你也可以查看这个:how to get $CAUSE in workflow
对你的案例非常好的参考是https://hopstorawpointers.blogspot.com/2016/10/performing-nightly-build-steps-with.html . 以下是该来源的功能,完全符合您的需求:
您可以像这样检查构建原因:
但是,这需要
script-approval.xml
中的以下条目:这也可以通过https://YOURJENKINS/scriptApproval/批准 .
希望在JENKINS-41272修复后不需要这样做 .
在此之前,解决方法可能是检查
when
表达式中的一天中的小时(请记住,这些时间是指Jenkins的时区)对我来说,最简单的方法是在构建触发器中定义一个cron并使用
when expression
验证每晚的小时:我找到了一种方法,它不使用受限制的“currentBuild.rawBuild” . 开始您的管道:
测试您需要它的布尔值,例如: