TeamCity 7 を使用していますが、前のステップが失敗した場合にのみステップを実行できるかどうか疑問に思いましたか? ビルド ステップ構成のオプションにより、ステップが失敗した場合でも、すべてのステップが成功した場合にのみ実行するか、常に実行するかを選択できます。
前のステップが失敗した場合にのみステップを実行する手段はありますか?
TeamCity 7 を使用していますが、前のステップが失敗した場合にのみステップを実行できるかどうか疑問に思いましたか? ビルド ステップ構成のオプションにより、ステップが失敗した場合でも、すべてのステップが成功した場合にのみ実行するか、常に実行するかを選択できます。
前のステップが失敗した場合にのみステップを実行する手段はありますか?
前のステップが失敗した場合にのみステップを実行するようにセットアップする方法はありません。
これに最も近いのは、最初のビルドが終了した後に常に実行される「Finish Build」トリガーを持つビルドをセットアップすることです。(成功失敗は問いません。)
次に、その 2 番目のビルドで、TeamCity REST API を使用して、最初のビルドの最後の実行が成功したかどうかを判断できます。それがうまくいかなかったとしても、やりたいことは何でもできます。
TeamCity が 2021 年にすぐにサポートしていないことに驚きました。しかし、API は多くの便利な機能を提供し、それを実行できます。
解決策として、bash スクリプトを作成し、内部で TeamCity API を呼び出す必要があります
#!/bin/bash
set -e -x
declare api_response=$(curl -v -H "Authorization: Bearer %env.teamcity_internal_api_key%" -H "Accept: application/json" %teamcity.serverUrl%/app/rest/latest/builds?locator=buildType:%system.teamcity.buildType.id%,running:any,canceled:all,count:2\&fields=build\(id,status\))
declare current_status=`echo ${api_response} | jq '.build[0].status'`
declare prev_status=`echo ${api_response} | jq '.build[1].status'`
if [ "$current_status" != "$prev_status" ]; then
do you code here
fi
上記のコードの説明。API 呼び出しを使用すると、現在の buildType の最後の 2 つのビルドを取得できます。これは最後のビルドであり、以前のビルドです。変数にステータスを割り当て、ifステートメントでそれらを比較した後。現在のビルドが使用に失敗した場合にコードを実行する必要がある場合
if [ "$current_status" = "FAILURE" ]; then
write your code here
fi