0

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 コマンドが実行される前にサーバーが正常に停止されます。

では、何がサーバーの再起動を妨げているのでしょうか?

4

2 に答える 2

1

IMO が webapp フォルダーを削除し、時々サーバーを再起動するスクリプトを作成するのは良い考えではありません。次の手順を実行してから、jenkins ビルド サーバーから AppServer リポジトリ/展開/サーバー/webapps への展開を試すことをお勧めします。

1.) サーバーを停止します 2.) [AS_HOME]/repository/conf/tomcat/catalina-server.xml 構成ファイルを開きます 3.) Host 要素の unpackWARs 属性を「false」にします 4.) サーバーを再起動します

デフォルトでは、AppServer は Web アプリケーション内の WAR ファイルを抽出します。これにより、同じ Web アプリケーションを何度もデプロイするときに断続的な問題が発生する可能性があります。この方法で試してみてください。

于 2013-08-28T08:08:34.837 に答える
0

WSO2 サーバーは OSGI ベースです。モジュールは、管理コンソールで実行できるすべてのタスクの Web サービスも提供します。としてサーバーを起動し、./wso2server.sh -DosgiConsoleすべてのサービス インターフェイスをosgi> listAdminServices. つまり、WAR、CAR、および AAR アーカイブをアップロードするためのインターフェースがあります。アップロードは 1 つのステートレス コールですが、アーティファクトのアップロードの処理は少しトリッキーで、WSO2 サーバーの自己署名証明書も処理する必要があります。選択したスクリプト言語でアップロードを行うか、単純な Jenkins プラグインを作成してビルド ジョブに統合できます。

快適さが必要で、自分でやらない場合は、この Jenkins ビルド後のプラグインを使用して、デプロイメント Web サービス API 経由で WAR を WSO2 AS にデプロイします: https://github.com/ma-ha/Jenkins- WSO2AS-デプロイヤー

于 2014-06-16T14:12:46.233 に答える