1

シンプルな Web アプリケーションを含む git リポジトリがあります。Web アプリケーションは、典型的な Scala アプリケーションとして実行されます (具体的に unfiltered を使用します)。つまり、「sbt start」で Web アプリケーションを本番環境で実行できます。

更新を Web アプリケーションにデプロイする簡単な方法が必要です。アセンブリを作成してサーバーにコピーし、古いサーバーを手動で停止して、新しいサーバー インスタンスを開始しました。

私が考えているのは、web運用サーバーに直接プッシュする新しいリモート リポジトリを用意することです。post-receive次に、古いサーバーを強制終了して新しいサーバーを起動するフックを本番用の git リポジトリに追加できます。

これは、自動展開の合理的な設定ですか? と でこれを行うのに役立つツールはありsbtますgitか?

4

3 に答える 3

1

ええ、あなたのソリューションは単純なケースに適しています。ただし、ソフトウェアがより複雑になると、命令的な方法でフックを変更する必要があるため、スケールが悪くなります。

継続的インテグレーション サーバーの 1 つを見てみましょう( JenkinsまたはTravisが開始点として適しています)。CI サーバーを使用すると、必要な結果を指定するだけで、宣言型アプローチを使用できます。CI サーバーは、リポジトリからの最新コードのフェッチ、ビルド、テスト、パッケージ化、デプロイ、電子メールの送信など、ほとんどのタスクを処理します。また、並列ブランチでチームで作業する場合にも役立ちます。要約: CI はビルド プロセスにスケーラビリティをもたらします。コードベースの複雑さが増してもデプロイが妨げられることはありません。

于 2013-02-28T23:38:56.497 に答える
1

私は通常、Git フックを使用して PHP アプリケーションをデプロイします。基本的な考え方は、更新後のフックから、2 番目の (ベアではない) リポジトリの更新と新しいバージョンのチェックアウトが実行されるというものです。その後、更新スクリプトがデータベースを更新し、私に電子メールを送信します。

このアプローチは、最小限の変更で使用できます。リポジトリのクローンを作成して Web サーバーの領域を構築し、次のようなスクリプトを作成します。

  1. cd を 2 番目のリポジトリに移動します。
  2. GIT_DIR 環境変数をリセットします (元のリポジトリがどこにあるかが示されていますが、今は使用したくありません)。
  3. 元のリポジトリから変更を取得します ( git fetch origin)。
  4. それらをチェックアウトします(git checkout --force master && git reset --hardまたはそのようなもので、常に成功することを確認してください)。
  5. アプリケーションをビルドしてデプロイします。

次に、元のリポジトリの更新後のフックからこのスクリプトを実行します。ここでは何も複雑ではありません。

于 2013-03-01T03:17:41.713 に答える
0

https://rubygems.org/gems/git-runner

これは、git リポジトリへのプッシュ後にタスクを実行するための ruby​​ gem (これを利用するためにアプリで Ruby を使用する必要はありません) です。その後、独自のクラスを作成して、必要なデプロイ タスクを実行できます (または、既存の git-runner-deploy gem の使用/変更を参照してください)。それはあなたの要求に合っているかもしれませんが、プロセスのどこかで既に ruby​​ を使用している場合は、おそらくそれを使用する方が幸せに感じるでしょうか?

于 2013-03-01T01:58:12.733 に答える