現在、約15の異なるJava Webアプリケーションのデプロイメントを自動化する1つのJenkinsサーバーがあります。各アプリケーションには、別々のLinuxボックス上に3つのデプロイメント環境があります。
Jenkinsでは、すべてのアプリケーションに独自の「ビュー」があります。すべてのビューの中に、すべてのブランチの仕事があります。これらのジョブは単にwarファイルを作成し、それをJenkinsサーバーに配置します。次に、DevOps担当者をデプロイするには、特定のアプリケーションのデプロイメント環境(dev、test、prodにかかわらず)にSSHで接続し、Jenkinsサーバーからデプロイメント環境に(通常はTomcat webappsフォルダーに)warファイルを移動するSCPスクリプトを実行します。展開用)。
明らかにこれは非常にばかげたプロセスです。実際にアプリケーションをデプロイするJenkinsデプロイメントプロセスが必要です(そのため、SSHでボックスにログインし、SCPスクリプトシェルスクリプトを実行する必要はありません)。小さなアプリケーションのいくつかでこのプロセスが機能しているのですが、2つの問題が発生しています。
問題#1で-明らかな総当たりの方法は、各デプロイメント環境のジョブを作成することです。ただし、その場合、「デプロイメント環境のテスト」ジョブがデプロイしたいブランチをパラメーターとして取り込めるようにする方法がわかりません。新しいブランチごとに(デプロイメント環境ごとに1つ)3つのジョブを作成する必要はありません。さらに、すべてのブランチのジョブを作成できますが、展開環境をパラメーターとして送信する方法がわかりません。これらのジョブをビルドごとに再構成する必要はありません。これは、これまでに見つけた唯一の方法です。
問題#2で-悪意のある本番デプロイメントから保護するために使用されるプラグインのタイプまたは一般的な戦略はありますか?この質問は、質問1に対する私の回答に大きく基づいているのではないかと思います。特にプロダクションビルド用に別のアカウントを持っていると、これを防ぐための効率的な方法ですか?
もう少し複雑ですが、はるかに柔軟なシステムに移行することをお勧めします。基本的に、環境にリンクされているSVNブランチから離れることをお勧めします。これを数年間使用しましたが、深刻な問題はありませんでした。
それでこれはあなたに何を与えるでしょうか?
いくつかの釣り針があります。
これはあなたのチームにとってかなりの変更になるかもしれないと思いますので、頑張ってください!