jenkins CI を使用してプロジェクトをビルドしています。ビルド後、ポスト ステップ シェル スクリプトで war を WSO2 アプリケーション サーバーの /repository/deployment/server/webapps/ フォルダーにコピーしました。しかし、私が観察したのは、サーバーが Web アプリケーションの再デプロイに失敗する場合がありました (常にではありません)。ほとんどの場合、Web アプリケーションは、jenkins によって webapps フォルダーにコピーされた新しい war ファイルを使用して再デプロイされます。しかし、時々これは起こりませんでした。このような場合の唯一の解決策は、wso2as サーバーを停止し、web アプリケーション フォルダーを削除して、新しい war ファイルのみを wenapps ディレクトリに残し、wso2as サーバーを再起動することでした。これにより、新しい war ファイルが展開され、テストを続行できます。
ただし、自動化されたセレン テストを実行する必要があります。したがって、テストを実行するには、新しい war ファイルをすべての jenkins ビルドに確実にデプロイする必要があります。
だから私は以下のようなジェンキンスのポストステップで小さなスクリプトを書きました:
#!/bin/bash
/home/kk/wso2as-5.0.1/bin/wso2server.sh stop &&
sleep 1m &&
rm -rf /home/kk/wso2as-5.0.1/repository/deployment/server/webapps/Duster_App1* &&
cp /home/kk/.jenkins/workspace/Dusters_App1/target/Duster_App1-${MAVEN_VERSION}.war /home/kk/wso2as-5.0.1/repository/deployment/server/webapps/Duster_App1.war &&
/home/kk/wso2as-5.0.1/bin/wso2server.sh start &&
echo Starting wso2as
このスクリプトが実行されます。wso2as サーバーが停止し、webapp フォルダーが削除され、新しい war ファイルが正しい場所にコピーされます。jenkins コンソール出力に「Starting wso2as」メッセージが表示されますが、wso2as サーバーは起動しません。停止状態のままです。wso2server.sh stop コマンドの後に sleep 1m 行を導入しました。これは、サーバーのシャットダウンに時間がかかっている可能性があるため、wso2server.sh start コマンドを実行するまでに再起動に失敗する可能性があるためです。しかし、いいえ。ログファイルと ps aux コマンドを使用して確認したところ、start コマンドが実行される前にサーバーが正常に停止されます。
では、何がサーバーの再起動を妨げているのでしょうか?