3

Jenkins が実行されている同じサーバー上で、Jenkins を使用して Play Framework (2.4) アプリケーションをローカルに自動デプロイするにはどうすればよいですか? いつかちゃんとした本番環境を別途セットアップして、おそらく同じようにテスト環境を実装する予定ですが、この時点で簡単なテスト環境をセットアップできるかどうかを確認したいと思います。 Jenkinsが実行されている同じサーバーに。

テストを実行している Jenkins ジョブがあり、問題なく動作しているようです。基本的には、アクティベーター コマンドを実行する「シェルを実行」します (1 行にまとめることができます)。

./activator clean
./activator test

Play 1 ではplay start&play stopを同様の目的で使用しました。開発環境を試しactivator startてみると、次のメッセージが表示されます。

The start command is deprecated, and will be removed in a future version of Play.
To run Play in production mode, run 'stage' instead, and then execute the generated start script in target/universal/stage/bin.
To test your application using production mode, run 'testProd' instead.

そこで、「シェルの実行」とステージを使用して 2 つの (不完全な) 代替案を評価しました。

nohup を使用したステージングと実行:

./activator clean
./activator stage
nohup target/universal/stage/bin/my-app -Dplay.evolutions.db.default.autoApply=true

-> アプリケーションは正常に起動しましたが、Jenkins タスクは停止しませんでした。

バックグラウンドで nohup を使用してステージング & 実行:

./activator clean
./activator stage
nohup target/universal/stage/bin/my-app -Dplay.evolutions.db.default.autoApply=true &

-> アプリケーションはある時点で開始されたようですが、実行を継続しませんでしたか?

ここで推奨される(または機能するだけの)方法は何ですか?

4

3 に答える 3

3

特定のケースでは、最終的に Docker を使用しました。

  • Docker をサーバーにインストール
  • play-docker-ciに基づいて Dockerfile を作成しました
  • Jenkins を次のように構成しました。
    • Docker イメージをビルドする
    • 実行中の場合は既存のコンテナーを停止し、既存のコンテナーが存在する場合は削除します
    • Docker イメージを実行する

これはこれまでのところかなりうまく機能しているようです。

于 2015-06-26T11:09:56.567 に答える
0

これを設定するには、Play サーバーをバックグラウンド プロセスとして起動するコマンドを含む startup.sh スクリプトを Team City に生成させます。

nohup /pathToApp/bin/app_name -Dhttp.port=8180 &

次に、次のビルド ステップで、このシェル スクリプトを実行して起動します。nohup&はこれをバックグラウンド プロセスとして実行し、ビルド サーバーが切断されても実行を続けます。わかりやすくするために、スタートアップ スクリプトから多くの余分なものを切り取っていますが、アプリケーションに使用するスタートアップ パラメーターは何でも追加できます。

于 2015-07-06T20:02:31.537 に答える