【问题标题】:Allow next Jenkins job of same project to run before current job ended允许同一项目的下一个 Jenkins 作业在当前作业结束之前运行
【发布时间】:2020-12-15 10:24:49
【问题描述】:

在我们的项目中,当作业完成特定阶段后,它将离开当前工作区,只继续远程工作。此时可以在同一管道上开始处理下一个作业,而不会影响第一个作业的结果。

也就是说,这个问题不是关于触发依赖或下游作业,而只是启动当前管道队列中的下一个作业。

是否可以声明下一个作业可以在第一个作业完成特定阶段后立即开始?

这是一个例子:

                      When this stage has finished, the next job could start.              
                                              v
+------------+------------+------------+-------------+------------+------------+
|            |            |            |             |            |            |
| Preparing  | Building   | Testing    | Publishing  | Deploying  | Verifying  |
|            |            |            |             |            |            |
+------------+------------+------------+-------------+------------+------------+

【问题讨论】:

  • 请澄清。在Publishing 阶段,您是希望第一个作业触发第二个作业作为下游作业,还是希望第一个作业自行触发?
  • 我编辑了我的问题并希望更清楚地表明目标是再次触发相同的管道,或者更确切地说是在不实际再次触发管道的情况下开始队列中的下一个作业。
  • 谢谢!是的,使用一些脚本是可能的,但 Jenkins 不能在没有被告知的情况下这样做。当一个作业自己触发时,它只会得到queued,并且在之前的管道完成之前不会得到start,但是您可以通过在Publishing 阶段中​​使用选项build job: firstjob 来玩弄它。本质上,您需要get 来自您工作所在的远程机器的一些参数或变量,并且决策需要围绕这些值编写脚本。如果您在远程工作上粘贴工作管道和信息,可以提供更多帮助。

标签: jenkins jenkins-pipeline


【解决方案1】:

是否可以声明下一个工作可以在 第一份工作已完成特定阶段?

答案是。 我假设您想在当前工作区中开始另一个作业,而无需等待,您可以触发并行阶段或触发另一个作业。 如果您想在远程触发另一个作业,那么它将进入等待队列

考虑以下示例。

假设上述阶段在管道作业Release_Job 下定义,下一个作业名为Parallel_Job,此作业将在发布阶段后声明/触发。

触发条件可以是如果发布阶段成功则触发Parallel_Job我已经给出了需要的参考 build job plugin

boolean publishingPassed = false

stage('Publishing') {
    try{
        sh 'publish project' // or any operation
    }catch (Exception e){
        publishingPassed = true
    }//catch
    if(publishingPassed){
        //trigger parallel job
        // make sure that you have build job plugin
        build job:'Parallel_Job' , parameters:[
        string(name: 'keyNameOfParam1',value: 'valueOfParam1')
        booleanParam(name: 'keyNameOfParam2',value:'valueOfParam2')
        // based on your need change job 
    }//buildPassed
}//building

【讨论】:

  • 这不是回答提出的问题。期望一个特定的作业 A 触发自己,而不是触发另一个作业 B。
猜你喜欢
  • 2018-08-24
  • 2013-11-16
  • 1970-01-01
  • 2022-12-14
  • 2015-12-03
  • 2020-10-31
  • 1970-01-01
  • 2016-12-20
  • 1970-01-01
相关资源
最近更新 更多