我将Groovy脚本作为Jenkins中Pipeline工作的一部分,如下所示:
node {
stage('Testing') {
build job: 'Test', parameters: [string(name: 'Name', value: 'Foo1')], quietPeriod: 2, wait: false
build job: 'Test', parameters: [string(name: 'Name', value: 'Bar1')], quietPeriod: 2, wait: false
build job: 'Test', parameters: [string(name: 'Name', value: 'Baz1')], quietPeriod: 2, wait: false
build job: 'Test', parameters: [string(name: 'Name', value: 'Foo2')], quietPeriod: 2, wait: false
build job: 'Test', parameters: [string(name: 'Name', value: 'Bar2')], quietPeriod: 2, wait: false
build job: 'Test', parameters: [string(name: 'Name', value: 'Baz2')], quietPeriod: 2, wait: false
}
}
由于将wait
标记设置为,因此它并行执行多个其他自由式作业false
。但是,我希望所有作业完成后才能完成呼叫者作业。目前,Pipeline作业会触发所有作业并在几秒钟后自行完成,这不是我想要的,因为我无法跟踪总时间,而且我无法一次取消所有已触发的作业。
当并行完成所有作业时,如何纠正上述脚本以完成管道作业?
我试图将构建作业包装在waitUntil {}
块中,但是没有用。
您应该使用管道 并行 表达式,它将等待所有产生的作业/子任务完成:
stage('testing') {
def branches = [:]
for(i = 0; i < params.size(); i += 1) {
def param = params[i]
branches["Test${i}"] = {
build job: 'Test', parameters: [string(name: 'Name', value: param)], quietPeriod: 2
}
}
parallel branches
}
您可以在jenkins.io的管道文档中找到更多示例。
我正在尝试设置各种Jenkins管道,其最后阶段总是运行一些验收测试。长话短说,所有产品的验收测试和测试数据(其中大部分是共享的)都被检查到同一个存储库中,该存储库的大小约为0.5 GB。因此,似乎最好为验收测试设置一个单独的作业,并通过每个管道的“构建”步骤触发它,并提供适当的参数来运行相关测试。(有时在不重建产品的情况下重新运行这些测试也很有用) 到目前为止,我发现我可以: 正常触发作业。但这
我有一个工作,将连续访问一个数据库,并计算一个表中的行数。当数量达到某个阈值时,作业必须停止检查表并触发一些新的作业。现在,我正在尝试使用来执行此操作,但我不确定如何删除第一个作业。即: (2)当有5行时,Job1将。 (3)现在Job2需要启动,Job1必须停止运行。如何删除Job1?我知道,但我不确定何时或何处调用它,因为我不能在类中为更改。 此外,我如何触发Job2开始运行在这一点?我已经读
问题内容: 如何更改以下代码,以触发两个异步操作并有机会同时运行? 我需要做这样的事情吗? 问题答案: TL; DR 不要在获得承诺的问题中使用模式,而是分别等待它们;而是使用(至少现在): 虽然您的解决方案 确实 并行运行这两个操作,但如果两个诺言都被拒绝,它就无法正确处理拒绝。 细节: 您的解决方案并行运行它们,但始终等待第一个完成,然后再等待第二个。 如果您只想启动它们,并行运行它们,并获得
问题内容: 我如何更改以下代码,以触发两个异步操作并有机会同时运行? 我需要做这样的事情吗? 问题答案: TL; DR 不要在获得承诺的问题中使用模式,而是分别等待它们;而是使用(至少现在): 虽然您的解决方案确实并行运行这两个操作,但是如果两个诺言都被拒绝,它就无法正确处理拒绝。 细节: 您的解决方案并行运行它们,但始终等待第一个完成,然后再等待第二个。如果您只想启动它们,并行运行它们,并获得两
我有一个系统,其中REST API(Flask)使用spark-sumbit向正在运行的PySpark发送作业。 出于各种原因,我需要spark同时运行所有任务(即我需要设置执行器的数量=运行时的任务数量)。 这可能通过一项工作来实现吗?
问题内容: 我希望我的Jenkins多分支管道工作避免触发自身。作业之所以提交,是因为它将递增版本文件并将其检入源代码管理,这将导致无限循环。 在常规工作中,我可以按照以下说明操作来避免这种循环(尽管这不是最干净的方法)。 这些说明不适用于多分支管道(没有“忽略某些用户的提交”选项)。Jenkins多分支管道中是否有任何方法可以防止自我触发的提交? 问题答案: 如果使用GIT,一种解决方法: 更改