相关疑难解决方法(0)

阻止jenkins任务直到所有下游任务完成?

在jenkins中有什么方法可以阻止所有下游任务的特定任务吗?我有一系列功能测试阶段,每个阶段都需要在服务器上运行.服务器应该不会被运行测试时更新.但是,.

所以我有工作:

A -> B -> C

我需要A阻止直到C完成.

我怎样才能做到这一点?

continuous-integration hudson jenkins

13
推荐指数
2
解决办法
8255
查看次数

优先考虑较旧的管道运行

简而言之,有没有办法根据构建/运行年龄而不是队列中的多长时间对Jenkins队列进行排序?

在一些背景知识中,我们有一个管道脚本可以并行执行多个任务,最后有一个步骤可以聚合并行任务的结果.这是一个简化版本:

stage ('Do Parrallel stuff') {
    def par = [:]
    for (int i = 0; i < 4; i++) { par[i] = {sleep(10)} }
    parallel par;
}

stage ('Aggregate') {
    node {
      echo "Aggregating stuff"
    }
}
Run Code Online (Sandbox Code Playgroud)

通常情况下,当只有一个正在进行的运行时,这工作正常.即它运行四个并行任务,然后执行聚合部分.但是在高负载期间,此设置失败.让我们考虑以下场景:我们有一个Jenkins实例和一个执行器:

  1. 我们有一份如上所述的工作
  2. 我们为这个作业启动两个并发运行(中间几秒),运行#1和#2.
  3. 马上我们将在队列中8个子任务,四项任务每次运行,让我们给他们打电话#1[1],#1[2],#1[3],#1[4],#2[1],#2[2],#2[3]#2[4]
  4. Jenkins将开始执行第一个任务,#1[1]我们将在队列中有七个任务.
  5. 这继续,我们执行#1[2],#1[3]#1[4].
  6. 此时,管道脚本#1可以继续并调度聚合子任务,#1-Aggr
  7. 接下来詹金斯将执行#2[1],#2[2]依此类推
  8. 最后#1-Aggr,#2-Aggr …

jenkins jenkins-pipeline

6
推荐指数
0
解决办法
172
查看次数