詹金斯管道和促销

时间:2016-08-24 11:19:38

标签: jenkins jenkins-pipeline

在构建具有实施的促销周期的工作时,即Dev-> QA-> Performance-> Production。

将此周期迁移到管道中的正确方法是什么?它看起来很干净\结构化,可以调用上面提到的每个作业,但是,如何查询构建ID(能够调用部署作业)?或者我完全误解了管道概念?

2 个答案:

答案 0 :(得分:0)

最好在不同的管道阶段调用每个构建。像这样:

stage "Dev"
node{
       build job: 'Dev', parameters:
       [
         [$class: 'StringParameterValue', name: 'param', value: "param"],
       ];
    }
stage "QA"
node{
    build job: 'QA'
}

etc...

要循环此过程,您可以在Groovy中使用重试选项或无限循环

答案 1 :(得分:0)

您可以考虑多种解决方案:

按顺序触发每个作业

使用build步骤依次调用每个作业:

node() {
  stage "Dev"
  build job: 'Dev'

  stage "QA"
  build job: 'QA'

  // Your other promotion cycles...
}

它易于使用,可能已经符合您的实际解决方案,但我不是这个解决方案的忠实粉丝,因为您的管道阶段(Dev,QA等)的实际输出真的会在专门的工作(开发工作,QA工作),而不是直接在你的管道内。您的管道将是一个空壳,只是调用其他工作......

调用管道功能而不是作业

为每个促销周期定义一个管道功能(最好在外部文件中),然后按顺序调用每个功能。示例:

node {
  git 'http://urlToYourGit/projectContainingYourFunctions'
  cycles = load 'promotions-cycles.groovy'

  stage "Dev"
  cycles.dev()

  stage "QA"
  cycles.qa()

  // Your other promotion cycles calls...
}

最大的优势是您的促销周期代码在您的Git存储库中提交,并且您的所有阶段输出实际上是管道输出的一部分,这对于轻松调试非常有用。 此外,您可以根据功能的成功/失败轻松应用条件(例如,如果您的QA阶段失败,您不想再继续)。

请注意,如果需要,这两种解决方案都允许您并行启动促销周期,并将参数传递给您的工作或功能。