2

現在のビルドが失敗した場合、Jenkinsは最後の成功ビルドの成果物を展開できますか?もしそうなら、どのように?Jenkins - ビルドに失敗した場合、最後に成功したビルドの成果物をデプロイ

私は現在rsyncを使用して自分のビルド手順の1つとしてワークスペースからファイルを展開しています。

BuildResultTriggerというプラグインがあることは知っていますが、私は使用することができますが、アーカイブされた成果物にアクセスして最新のビルドを教えてください。

+3

ビルドが成功するたびに単に配備しない理由はありますか?その場合、ビルドが失敗するたびに、最後に成功したバージョンが既にデプロイされています。すでにデプロイされているバージョンを再デプロイする必要はありません。 – juhist

+0

ビルドプロセスの一部として、ステージングサーバーへの展開が行われ、その後、いくつかのWebDriverテストが(behat/mink)で実行されるためです。これらのテストが失敗した場合は、最後に成功したビルドをステージングサーバーに展開することが必要です。実動へのデプロイメントは、ビルド後のステップとして行われます。 –

+1

ビルドに失敗した場合、ステージングにプッシュしないでください。ステージングでは、ビルドに相当するものが発生していないことがわかります。 (@juhistが言ったのと同じです) – Blrfl

答えて

3

デプロイメント時に、既にデプロイされた(正常にビルドされ、テストされた)バージョンをデプロイメントマシンのどこかにコピーすることをお勧めします。ジェンキンス(あなたがテストを開始するには、コマンドラインを使用すると仮定した場合)でテストを実行するとき

次に、:

ssh deploymentmachine rm -rf /where/you/store/them 
ssh deploymentmachine cp -R /where/you/deploy/them /where/you/store/them 
rsync -rvz /where/jenkins/built/the/files deploymentmachine:/where/you/deploy/them 
ssh deploymentmachine sh runtests.sh || \ 
(ssh deploymentmachine rm -rf /where/you/deploy/them; \ 
    ssh deploymentmachine cp -R /where/you/store/them /where/you/deploy/them; \ 
    ssh deploymentmachine rm -rf /where/you/store/them 
    exit 1) 
ssh deploymentmachine rm -rf /where/you/store/them 

これはあなたに失敗した場合にFALSE終了ステータスと再配備最後に成功したバージョンを与える必要があります。

「sh runtests.sh」以外の方法でテストを開始する場合は、ファイルをコピーするのではなくサーバーを再起動する必要があり、ディレクトリパスを調整する必要があります)。

+0

偉大な回答、ありがとう –

関連する問題