1

マイルストーンを使用して古いビルドをキャンセルしたいと考えています。 Githubから各プルリクエストを構築するために、マルチブランチパイプラインを使用します。ビルドは4〜5分で完了し、5段階に分かれています。新しい変更がGithubにプッシュされたとき(新しいビルドが開始されたとき)、現在のビルドをキャンセルしたい(その段階に関係なく)。マイルストーンでJenkins 2.0ビルドキャンセル

ビルドの開始時に1つのマイルストーンを割り当てます。マイルストーンのビルド番号を使用するので、新しいビルドが開始されると、次のマイルストーンが完了し、前のビルドがキャンセルされます。

問題は、パイプラインがすぐに終了し、時には不正な状態になることがあることです。

キャンセルする前に現在のステップが完了するまでビルドを設定できますか?

別のオプションは、各ステージの後に異なるマイルストーンを設定することです。この場合、別のビルドが現在のマイルストーンを完了し、次のマイルストーンを入力しない場合は、ビルドをキャンセルしないことにします。これは可能ですか?

ありがとうございます。

答えて

0

「状態が正しくありません」とはどういう意味ですか、これは解決できるのでしょうか?

おそらくマイルストーン/ロックの組み合わせでこれを達成できます。 デプロイメントステップの周りにロックを使用しています。これにより、中断することはできません。

0

これが役立つことがあります。

/* This method should be added to your Jenkinsfile and called at the very beginning of the build*/ 
@NonCPS 
def cancelPreviousBuilds() { 
    def jobName = env.JOB_NAME 
    def buildNumber = env.BUILD_NUMBER.toInteger() 
    /* Get job name */ 
    def currentJob = Jenkins.instance.getItemByFullName(jobName) 

    /* Iterating over the builds for specific job */ 
    for (def build : currentJob.builds) { 
     /* If there is a build that is currently running and it's not current build */ 
     if (build.isBuilding() && build.number.toInteger() != buildsNumber) { 
      /* Than stopping it */ 
      build.doStop() 
     } 
    } 
} 
関連する問題