2

バックグラウンド:

私のチームは Jenkins を使用して、Grails アプリケーションの継続的インテグレーション (CI) を実行しています。デプロイ パイプラインをセットアップし、複数の環境 (Dev、Itg、Prod) へのプッシュ ボタン デプロイを行うことで、継続的デリバリーに近づけようとしています。Jenkins Tomcat プラグインを使用してコードをデプロイしようとしましたが、Tomcat で時折 PermGen の問題が発生し、デプロイ後に手動で再起動する必要がありました。

質問:

  1. Jenkins は、Grails での自動デプロイメントに使用する適切なツールですか?
  2. あとで手動で再起動することなく、Tomcat へのデプロイを自動化するにはどうすればよいでしょうか?
4

3 に答える 3

2
  1. Jenkins が「正しい」ツールかどうかは誰にも言えないと思いますが、良いツールです。
  2. Tomcat にホットデプロイすると、その PermGen はほぼ必然的に大きくなります。再起動は、これを処理する最も簡単な方法です。ホットデプロイメントを「困難な問題」にするものは何ですか?などの他の質問を参照してください。詳細については。ビルド後のタスクを使用して、Jenkins サーバーでシェル スクリプトを実行し、war をデプロイして Tomcat を再起動できます。
于 2013-07-31T14:40:45.657 に答える
1

Grails、Tomcat、エラスティック ロード バランサーを使用し、AWS インフラストラクチャを介してスクリプト化されたインスタンスの起動/プロビジョニング/デプロイを行います。S3 バケットには、設定したプラグインの一部として Jenkins サーバーによって配置された war ファイルが含まれています。これはビルド番号と Jenkins ジョブ名によってバージョン管理されているため、環境ごとに 1 つあります。シェフ スクリプトが依存関係と戦争をインスタンスに取り込み、すべての実際の作業を行います。一方、Jenkins はオーケストレーション スクリプト ループを実行し、新しいインスタンスが完全に起動してロード バランサーのヘルス チェックに合格するまで、成功の各段階でスリープし、その時点で停止します。古いインスタンス (ロード バランサーは新しいインスタンスに排出されます)。何かが失敗したり、タイムアウトになったりした場合、新しいインスタンスをシャットダウンした後、Jenkins ジョブを失敗させます。

于 2015-06-30T23:20:14.850 に答える
0

私の観点からは (確かに偏見があります)、Jenkins はデプロイを実行するためのものではありません。そのように設定されていません。はさみがオレンジの皮をむくためのものではないという点で、Jenkins はデプロイメントを行うための適切なツールではありません。しかし、それは関係なく仕事をします。

于 2015-03-27T14:25:32.893 に答える