0

マネージャーは、運用サーバー用の自動化されたビルド/デプロイ スクリプトを作成するタスクを私たちのチームに与えます。

スクリプトの要件は次のとおりです。

  1. git から Web アプリケーションの最新リリースの src コードを取得します。
  2. コンパイル - > WAR
  3. リモート サーバーに接続します (production\test)
  4. リモートでTomcatサーバーをシャットダウンする
  5. リモート DB サーバーでスキーマの更新を実行する (新しいリリースの場合)
  6. 新しい戦争をTomcatに展開して開始します。

私の質問は次のとおりです。

  1. build\deploy 領域の 3 つの主要なプレーヤーすべてがそれを行うことができますか (ant \ maven \ gradle)?
  2. この正確な手順を実行する小さなアプリケーション (Java アプリケーション) を構築することは良い習慣ですか? (おそらく、Java アプリを作成する方が、maven \ ant \ gradle でそれを行うことを学習するよりもはるかに高速になります)
  3. この種の作業のための代替ツールはありますか?
  4. 「ビルドマシン」のアイデア全体に対するより良い代替手段はありますか?

ありがとう!

4

1 に答える 1

0

ビルド/デプロイ領域の 3 つの主要なプレーヤー (ant/maven/gradle) はすべてそれを行うことができますか?

ターゲット/目標を十分にカスタマイズすることで、これらのどれでもあなたが望むことを行うことができます.

この正確な手順を実行する小さなアプリケーション (Java アプリケーション) を構築することは良い習慣ですか?

確かにできます (または単にシェル スクリプトを使用します)。これは、前述のビルド ツールをカスタマイズすることと本質的に同じことです。

この種の作業に代わるツールはありますか?

私の会社は、展開に関連するこれらの問題と追加の問題を解決するためにBuildMasterを作成しました。無料版がシナリオに適しているようです。

基本的な解決策は次のとおりです。

  1. Git ソース管理プロバイダーを追加して Git に接続します (または、GitHub を使用している場合は GitHub プロバイダー)。
  2. エージェントをターゲット サーバーに接続し、BuildMaster に追加します (Windows の場合はインストールが必要ですが、Linux にデプロイする場合は SSH 接続を使用するだけです)。
  3. 展開計画では、次のアクションを使用します。
    1. 実際のビルド処理を行う「Build Ant Project」または「Execute Maven」
    2. ビルド出力 (WAR ファイルまたはそのコンテンツ) を BuildMaster ビルドに関連付ける「Create Build Artifact」
    3. 「Stop Service」でTomcatを停止
    4. ディスク上でスクリプトを実行するための「データベーススクリプトの実行」(ソースから取得したかどうかに関係なく) または BuildMaster にアップロードした場合に自動的に機能する「データベース変更スクリプトの実行」
    5. 以前にキャプチャしたアーティファクトをリモート サーバーにデプロイするための「ビルド アーティファクトのデプロイ」
    6. 「サービス開始」Tomcat

このアプローチの素晴らしい点は、この展開計画を作成すると、上記の手順で書かれた内容と非常によく似ていることです。

簡単に追加できる、正確なシナリオに関係するかどうかに関係なく、追加の利点は次のとおりです。

  • 承認とサインオフ- ワークフローでこれらを指定して、昇格前に QA サインオフが確実に行われるようにすることができます
  • リリース管理と監査- どのビルドがどの環境にあり、いつそこに移動したかを知る
  • 可変デプロイメント- デプロイメント プランに分岐ロジックを追加して、たとえば、「デバッグ」ビルドまたは「リリース」ビルドのどちらをテストするかを簡単に選択できるようにすることができます。
  • 通知- ユーザーは、特定のイベント (展開、リリースなど) をサブスクライブし、それらのイベントが発生したときに電子メール通知を受け取ることができます
于 2013-11-08T00:11:44.793 に答える