私が本当に好きな新しいJenkinsパイプラインDSLを使用しています。私のJenkinsfile
はおそらくかなり一般的で、mavenを使用してGITのmaster
ブランチのコンパイル/ユニットテストコードを実行し、ドッカーをビルドし、ステージングなどにデプロイします。パイプラインの終わりに向かって、ビルドは生産に行くJenkinsパイプラインDSLは自動的に入力を中止します
stage name: 'Production Deploy', concurrency:1
input 'Do you want to deploy to production?'
node {
sh "./bin/production-deploy.sh"
}
ただし、ビルドは誰かが承認/拒否するまでブロックされます。他の誰かが(master
ブランチにコードをマージして)ビルドオフをキックすると、input
が自動的に拒否される方法はありますか?
CDパイプラインのCIパイプラインを分離します。 CIパイプラインでは、開発ステージからステージングステージへの展開、テスト、展開、ステージング展開の検証を行い、2番目の手順では、プロダクションステージに展開するときにDCパイプラインを有効にします。あなたは独立したライフサイクルのプロセスと独立した配送プロセスを持っています。 – johnnynemonic
プロジェクトごとに2つのパイプラインがあるとお考えですか?これを行うベストプラクティスの方法ですか?私は、単一のビルドパイプラインですべての段階(コンパイル - >ステージング - > QA - >その他 - >プロダクション)をしたいと思っています(本書「Continuous Delivery」http://martinfowler.com/books/continuousDelivery.htmlを読んでから)あなたの場合は – bobmarksie
、はい。本の提案の場合は、プロセス全体を自動化し、一時停止や人間のやりとりがないときにうまくいってください。インフラストラクチャーに青/緑のデプロイメントを実装し、他のVMノードにプロダクションサービスが提供されている間にaVMノードでのデプロイメントを検証できます。 – johnnynemonic