【问题标题】:Rerun option Pipeline Jenkins重新运行选项 Pipeline Jenkins
【发布时间】:2018-03-07 15:46:56
【问题描述】:

我正在 Jenkins 2.8 版中实现 Jenkins 管道。到目前为止一切正常,但我想将重新运行选项实现为复选框。

我的管道有 4 个阶段:

  1. 舞台
  2. 舞台
  3. 舞台
  4. 舞台

我运行管道,但在 2. 阶段失败。 现在我构建了 #1,但在 2 处失败。阶段,我现在想做的是构建 #2 并有一个重新运行的参数选项,这意味着如果我选择重新运行选项,下一个构建将从以前的构建失败并从那里继续。

构建 #1 -> 在 2. 阶段失败

Build #2 -> 跳过 1. Stage,从 2. Stage 继续,因为它在之前的构建中失败。

谢谢。

【问题讨论】:

    标签: jenkins jenkins-plugins jenkins-pipeline


    【解决方案1】:

    CloudBees 在其企业版 Jenkins 中对此提供了支持,请使用管道步骤 checkpoint

    不幸的是,作为企业,您必须支付大量资金才能访问此插件。相反,您可以做的是大量的手动编码。简而言之,我会通过以下方式解决它:

    1. 确定构建是否是先前构建的重建。这可以通过参数化构建来解决。
    2. 当构建完成第 1 阶段时,归档后续步骤所需的所有资源,以防重新运行,然后我会跳过第 1 阶段的常规部分,而是使用 Copy Artifact Plugin 从先前构建中检索工件。直接将检索到的工件存档以便可以再次重建重建可能很有用。
    3. 第 2 阶段不需要做额外的事情,只要在第 1 阶段恢复所需的所有资源即可。

    【讨论】:

      【解决方案2】:

      尝试添加类似失败阶段编号的序列化

      String fileName= 'stageNumber.txt'
      sh ("wget ${env.JENKINS_URL}/job/$yourJobName/lastBuild/artifact/$fileName")//will be failed on the first build
      failedStage= readFile(fileName)
      try {
          stage('First stage') {}//add if condition}
          stage('Second stage') {
              if (failedStage == '2') {
                  println('Skip 2. Stage, Continue from 3. Stage as it failed in prevoius build.')
              } else {
                 doSomething()
                 failedStage = '2'
          }
          stage('Last stage') {}//here failedStage could be zero for use in other if
      } finally {
          writeFile(file: fileName,
                    text: failedStage)
          archiveArtifacts(fileName)
      }
      

      【讨论】:

        猜你喜欢
        • 2018-07-15
        • 2019-03-04
        • 1970-01-01
        • 1970-01-01
        • 2016-10-18
        • 1970-01-01
        • 2021-03-12
        • 2018-11-14
        • 2020-11-24
        相关资源
        最近更新 更多