如何从声明性管道中的另一项工作开始一项工作?

How to start a job from another job in a declarative pipeline?

假设有两份工作:

  1. 微服务存储库的作业
  2. 一份端到端测试工作

在特定情况下,我希望从微服务作业开始端到端测试作业。例如,在引入一个更改后,即使通过了单元测试和集成测试,它仍需要进一步测试,可在端到端测试作业中获得。

我希望开发人员使用特定短语进行提交。为此,我在微服务管道中实现了以下内容:

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