Jenkins管道:如何触发另一个作业并等待它,而无需使用额外的代理/执行器

时间:2019-03-11 09:57:16

标签: jenkins jenkins-pipeline

我正在尝试设置各种Jenkins管道,其最后阶段始终是运行一些验收测试。长话短说,所有产品的验收测试和测试数据(其中很多都是共享的)被检入同一存储库中,该存储库的大小约为0.5 GB。因此,似乎最好有一个单独的工作来进行验收测试,并通过每个管道的“构建”步骤触发它,并使用适当的参数来运行相关测试。 (有时在不重建产品的情况下重新运行这些测试也很有用)

stage('AcceptanceTest') {
    steps {
        build job: 'run-tests', parameters: ..., wait: true
    }
}

到目前为止,我已经知道我可以:

  1. 正常触发作业。但这使用了额外的代理/执行器, 似乎没有办法告诉它重复使用 构建(主管道)。这两个管道均以“ agent {label'master'}”开头,但是 似乎意味着“在与主服务器匹配的节点上分配新代理”。
  2. 使用“ wait:false”参数触发作业。这不是 阻止执行程序,但这确实意味着我无法报告执行结果 在主管道中进行测试。它给人的印象是测试 阶段总是成功的。

有更好的方法吗?

2 个答案:

答案 0 :(得分:0)

我认为声明式管道还没有另一种方法。

另一方面,对于脚本化管道,您可以在node {}之外执行此操作,它将只保留在主服务器上的一个执行器上,而在从服务器上释放该执行器。

stage("some") {
    build job: 'test'
    node {
        ...

答案 1 :(得分:0)