Jenkins管道:如何在不使用额外代理/执行器的情况下触发另一个作业并等待它
我正在尝试设置各种Jenkins管道,其最后阶段总是运行一些验收测试。长话短说,所有产品共享的验收测试和测试数据都被检入到相同的存储库中,该存储库的大小约为0.5 GB。因此,似乎最好为验收测试设置一个单独的作业,并使用每个管道的构建步骤触发它,并使用适当的参数来运行相关测试。有时,在不重建产品的情况下重新运行这些测试也很有用Jenkins管道:如何在不使用额外代理/执行器的情况下触发另一个作业并等待它,jenkins,jenkins-pipeline,Jenkins,Jenkins Pipeline,我正在尝试设置各种Jenkins管道,其最后阶段总是运行一些验收测试。长话短说,所有产品共享的验收测试和测试数据都被检入到相同的存储库中,该存储库的大小约为0.5 GB。因此,似乎最好为验收测试设置一个单独的作业,并使用每个管道的构建步骤触发它,并使用适当的参数来运行相关测试。有时,在不重建产品的情况下重新运行这些测试也很有用 stage('AcceptanceTest') { steps { build job: 'run-tests', parameters: ...
stage('AcceptanceTest') {
steps {
build job: 'run-tests', parameters: ..., wait: true
}
}
到目前为止,我发现我可以:
按正常方式触发作业。但这需要一个额外的代理人/执行人,
似乎没有办法告诉它重新使用来自
修建主管道。这两个管道都以代理{label'master'}开始,但是
似乎意味着在与主节点匹配的节点上分配一个新代理。
使用wait:false参数触发作业。这并不重要
阻止执行人,但这意味着我不能报告执行结果
在主管道中进行试验。它给人的印象是,测试
舞台总是成功的。
有更好的方法吗?我似乎已经解决了这个问题,在我的主管道顶部添加了代理none,并将代理{label'master}移动到构建阶段。然后,我可以在没有代理的情况下离开“AcceptanceTest”阶段,并像以前一样在“RunTests”作业中定义它。我从文件中得到的印象是,如果你将代理分阶段进行,那么所有阶段都需要一个,但事实似乎并非如此。这对于这个用例来说是幸运的…我似乎已经解决了这个问题,在我的主管道顶部添加了代理none,并将代理{label'master}移动到构建阶段。然后,我可以在没有代理的情况下离开“AcceptanceTest”阶段,并像以前一样在“RunTests”作业中定义它。我从文件中得到的印象是,如果你将代理分阶段进行,那么所有阶段都需要一个,但事实似乎并非如此。这对于这个用例来说是幸运的…我不认为有其他的方法来实现声明性管道 另一方面,对于脚本化管道,您可以在节点{}之外执行此操作,它只会保留主节点上的一个执行器,释放从节点上的一个执行器
stage("some") {
build job: 'test'
node {
...
我认为声明性管道没有其他方法 另一方面,对于脚本化管道,您可以在节点{}之外执行此操作,它只会保留主节点上的一个执行器,释放从节点上的一个执行器
stage("some") {
build job: 'test'
node {
...
相关问题:相关问题: