25

組み込みの Tomcat サーブレット コンテナーで実行される Spring Boot アプリケーションがありますmvn spring-boot:run。そして、プロジェクトを別の戦争としてスタンドアロンのTomcatにデプロイしたくありません。

コードを BitBucket/Github にプッシュするたびに、フックが実行され、Jenkins ジョブ (Amazon EC2 で実行) がトリガーされてアプリケーションがデプロイされます。

Jenkins ジョブにはビルド後のアクションがあります: mvn spring-boot:run、問題は、ビルド後のアクションが終了したときにジョブがハングすることです。

これを行う別の方法があるはずです。どんな助けでも大歓迎です。

4

5 に答える 5

5

最初にアーティファクトをサーバー上の指定された領域にコピーして、デプロイされたアーティファクトを追跡し、jenkins ジョブ フォルダーからアプリを起動しないようにすることは非常に便利です。次に、そこにサーバー ログ ファイルを作成し、サーバーが起動するまでジェンキンス ウィンドウでリッスンを開始します。

そのために、ここで見つけることができる小さなシェルスクリプトを開発しました

また、jenkins でプロジェクトを構成する方法を説明する小さな記事もあります。

あなたのために働いたかどうか私に知らせてください。タナクス

于 2015-09-11T20:57:52.723 に答える
2

サーバーに Jenkins ユーザーがいて、このユーザーが Jenkins サービスの所有者であると仮定します。

  1. root としてサーバーにログインします。
  2. 走るsudo visudo
  3. 最後に「jenkins ALL=(ALL) NOPASSWD:ALL」を追加します (jenkins=your Jenkins-user)
  4. Jenkins にサインインしてジョブを選択し、クリックして構成します
  5. 「ビルド後のステップ」で「シェルの実行」を選択します
  6. これをコピーして貼り付けます:
   service=myapp
   if ps ax | grep -v grep | grep -v $0 | grep $service > /dev/null
   then
       sudo service myapp stop
       sudo unlink /etc/init.d/myapp
       sudo chmod +x /path/to/your/myapp.jar
       sudo ln -s /path/to/your/myapp.jar /etc/init.d/myapp
       sudo service myapp start 
    else
       sudo chmod +x  /path/to/your/myapp.jar
       sudo ln -s  /path/to/your/myapp.jar /etc/init.d/myapp
       sudo service myapp start 
    fi

ジョブを保存して実行すると、サービスが自動的に開始されます。

于 2016-11-23T23:30:36.830 に答える