我希望为我的Jenkinsfile添加一个条件阶段,该阶段根据构建的触发方式运行.目前我们的设置使得构建可以通过以下方式触发:
是否有任何方法可以运行不同的管道步骤,具体取决于哪些操作触发了构建?
执行名为"A"的上游作业.A执行测试用例成功,即下游项目"B".但是当从B发送邮件时,我们必须在邮件中包含上游项目详细信息(上游项目名称,构建号码).因此,我们可以轻松地将测试运行与各自的上游作业进行映射/核心化.
在下游项目仪表板中,显示详细信息.
Started by upstream project Dev_RM_3.0_CI_Test build number 10
originally caused by:
Run Code Online (Sandbox Code Playgroud)
我查了https://wiki.jenkins-ci.org/display/JENKINS/Building+a+software+project.但在下游找不到任何可以继承的东西.
创建具有以下详细信息的示例作业以显示当前作业详细信息.
echo $BUILD_NUMBER
echo $JOB_NAME
echo $BUILD_ID
Run Code Online (Sandbox Code Playgroud)
但输出是
Building on master in workspace /var/lib/jenkins/workspace/env
[env] $ /bin/sh -xe /tmp/hudson970280339057643719.sh
+ echo 1
1
+ echo env
env
+ echo 1
1
Finished: SUCCESS
Run Code Online (Sandbox Code Playgroud)
我的repo中有一个带有Jenkinsfile的multibranch管道,我可以在每次提交时使用我的CI工作流程(构建和单元测试 - > deploy-dev - >批准 - > deploy-QA - >批准 - > deploy-prod) .我想做的是在第一阶段构建和单元测试的夜间构建中添加SonarQube Analysis.由于我的构建是由Gitlab触发的,我已经定义了我的管道触发器如下:
pipeline {
...
triggers {
gitlab(triggerOnPush: true, triggerOnMergeRequest: true, branchFilterType: 'All')
}
...
}
Run Code Online (Sandbox Code Playgroud)
为了设置我的夜间构建,我添加了
triggers {
...
cron('H H * * *')
}
Run Code Online (Sandbox Code Playgroud)
但是现在,如果我们只在晚上构建由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)
}
Run Code Online (Sandbox Code Playgroud)