次の手順をお勧めします。
1 つのシェル スクリプト (jenkins サーバーのどこかに保存されている) がすべてを実行します。基本的に、スクリプトはビルド アーティファクトの scp を実行し、サーバー (ssh) に接続して、デプロイに必要なすべてのタスクを実行します (メンテナンス ページのセットアップ、現在のアプリのバックアップ、新しいアプリのデプロイなど)。
jenkins サーバーには、少なくとも 2 つのジョブがあります。
- 最初のものは単にビルドを行います(maven、またはその他のビルドスクリプトを使用)
- 2 番目のジョブは deploy を実行します。したがって、このジョブはシェル スクリプトのみを実行します。(ターゲット環境ごとに 1 つのデプロイ ジョブをお勧めします: テスト、運用など)
この「ワンクリック展開」を実現するために、「特別な」jenkins プラグインは必要ありません。jenkins ユーザーがターゲット サーバーに ssh アクセスできることだけが必要です。
編集
これが私の投稿を説明するためのサンプルシェルスクリプトです
#This script will copy the last artifact build by the job "MyApp" to test.myserver.com
#and remotely execute the deployment script.
#copy the war to the server
#(the job "MyApp" is using maven, that's why the war can be found at this location)
scp -i <HOME_DIR>/.ssh/id_dsa $HUDSON_HOME/jobs/MyApp_Build/workspace/myapp/target/myapp.war deployeruser@test.myserver.com:/tmp/
#connect to the server and execute the deployment script
ssh -i <HOME_DIR>/.ssh/id_dsa deployeruser@test.myserver.com
#The following is just an example of what a deployment script can be.
#of course you must adapt it to your needs and environment
"cd <TOMCAT_DIR>;
#first copy the current war to a backup directory (additionaly, I have a cron task deleting old undeployed apps)
cp -rf myapp-apps/myapp* undeployed/myapp-apps/;
#execute a script (stored on the server) to properly stop the app
sh bin/myapp.sh stop;
#delete current app
rm -rf myapp-apps/myapp;
rm -rf myapp-apps/myapp.war;
#copy the uploaded war in tomcat app directory
cp /tmp/myapp.war myapp-apps/;
#execute a script (stored on the server) to start the app
sh bin/myapp.sh start"