私たちはここ数年、ジェンキンスをcronドロップインとして使用していますが、ここに賛否両論があります:
長所
多数のサーバーと複数の環境で多数のプロセスを管理している場合、多くのことが簡単になります。すぐに使用できる電子メールアラート、すべての共通ダッシュボード、ログ用のWebインターフェイス、およびジョブを実行するための追加ノードをセットアップする簡単な方法を取得できます。サポートチームは、問題をチェックし、ジョブを再実行するためにこの中心的な場所にあることに特に感謝しています。
Jenkinsプラグインエコシステムは非常にアクティブで、多くの追加機能を提供します...これは本当にJenkinsの「キラー」機能だと思います。多くの場合、そうするプラグインがあります。私のお気に入りのいくつか:Cron Column、Rebuild、NodeLabel Parameter、Log Parser、およびEmail-ext。
高度なスケジューリング/トリガーのサポート:スケジュール構文は基本的にcronであるため、同じ柔軟性がありますが、これはトリガー、REST API、およびGroovy / Java APIによって補完されます
短所
障害の中心点:すべてのジョブが1台のサーバーによって開始されるため、そのボックスがダウンして誰も気付かない場合は、Big Trouble。したがって、ソース管理に保存されているすべての構成と同様に、停止をすぐにキャッチするための適切な監視が必要です。元のサーバーをバックアップできない場合でも、ジョブの構成があれば、別の場所にセットアップするのは簡単です。解決までの時間が問題になる場合は、どこかにスタンバイを事前に設定しておくこともおそらく良い考えです。
複数の環境(Dev、UAT、Prod)がある場合、通常は各環境で実行されるジョブのバージョンがわずかに異なります。これらすべてのジョブを1つのJenkinsで処理すると、扱いにくくなる可能性があり、それらを手動で構成するのは非常に苦痛になります。この場合、環境ごとに個別のJenkins 'Cron'インスタンスを実行します。インスタンスは、社内展開ツールを使用して自動的にインストールおよび構成されます。そのようなものはないかもしれませんが、同様のことを行う(テンプレートを使用して構成を生成する)オープンソースツールがあります。構成生成の問題を解決できる場合、これによりJenkinsのセットアップとデプロイがはるかに簡単になり、ソース管理ですべてのものを保持しやすくなります。
Jenkinsをアップグレードすると、特にプラグインで機能が壊れることがあります。最初に新しいバージョンを試してみるまで、ミッションクリティカルなJenkinsインスタンスをアップグレードしないでください。これは、独自のJenkinsインスタンスを備えたミラーDev環境を持つことが非常に便利な場所です。
強調すべきことの1つは、CIにもJenkinsを実際に使用していることですが、これは別のインスタンスです...「cron」インスタンスはジョブ管理専用であり、「CI」インスタンスはCI専用です。懸念を分離することは、物事をよりきれいにするようです。
サイドノートとして、私は自宅のLinuxボックスでcronの代わりにJenkinsを使用しています:)
ちなみに、これは実際にはかなり一般的なジェンキンスのユースケースです。たとえば、Sandia National LabはJenkinsを次のように使用しています:https :
//software.sandia.gov/trac/fast/wiki/Hudson
また、これを説明する多数のブログ投稿とチュートリアルがあります。次に例を示します。http:
//blog.vuksan.com/2011/08/22/using-jenkins-as-a-cron-server/
http://morgajel.net/2011/12/12/1108
また、これは本当にすべてのCIツールではなく、ジェンキンスにのみ関係していることも付け加えてください。Jenkinsがこれを行うのに適しているからといって、他の人(TeamCity、buildbotなど)が...