如何从声明性管道中的另一项工作开始一项工作?
How to start a job from another job in a declarative pipeline?
假设有两份工作:
- 微服务存储库的作业
- 一份端到端测试工作
在特定情况下,我希望从微服务作业开始端到端测试作业。例如,在引入一个更改后,即使通过了单元测试和集成测试,它仍需要进一步测试,可在端到端测试作业中获得。
我希望开发人员使用特定短语进行提交。为此,我在微服务管道中实现了以下内容:
pipeline {
...
...
stages {
...
}
post {
success {
if (BRANCH_NAME == "develop") {
result = sh (script: "git log -1 | grep '.*\[e2e\].*'", returnStatus: true)
if (result == 0) {
build job: '****', wait: false
}
}
}
...
...
}
}
这似乎有效,因为我在日志中看到以下内容:
git log -1
grep '.[e2e].'
Run tests [e2e] [Pipeline] build (Building ****)
Scheduling item: ****
所以它找到了“[e2e]”,并且应该在端到端测试作业中安排了一个构建,但实际上什么也没发生——没有作业 scheduled/run。
因为我使用的是多分支作业,所以我不得不 - 当然 - 还要指定分支名称...d'oh。
build job: '****/master', wait: false
假设有两份工作:
- 微服务存储库的作业
- 一份端到端测试工作
在特定情况下,我希望从微服务作业开始端到端测试作业。例如,在引入一个更改后,即使通过了单元测试和集成测试,它仍需要进一步测试,可在端到端测试作业中获得。
我希望开发人员使用特定短语进行提交。为此,我在微服务管道中实现了以下内容:
pipeline {
...
...
stages {
...
}
post {
success {
if (BRANCH_NAME == "develop") {
result = sh (script: "git log -1 | grep '.*\[e2e\].*'", returnStatus: true)
if (result == 0) {
build job: '****', wait: false
}
}
}
...
...
}
}
这似乎有效,因为我在日志中看到以下内容:
git log -1
grep '.[e2e].'
Run tests [e2e] [Pipeline] build (Building ****)
Scheduling item: ****
所以它找到了“[e2e]”,并且应该在端到端测试作业中安排了一个构建,但实际上什么也没发生——没有作业 scheduled/run。
因为我使用的是多分支作业,所以我不得不 - 当然 - 还要指定分支名称...d'oh。
build job: '****/master', wait: false