検証中、成功していたGitHub Actionsが意図しない箇所で失敗するようになりました。失敗したログがGitHub Actions上にあるものの、SSHでのアクセスができないのでログファイルを取得することはできません。
ログをArtifactoryに上げるworkflowは使用していたものの、テスト成功時のみアップロードする意味のないものになっていました。
※ その時書いた記事。【CICD】GitHub ActionsでJavaのテスト結果をアップロードする
今回の記事では、workflowをテスト失敗時、または常に実行して、失敗時に処理を追いやすくします。
この記事を読んでわかること
- ステップの成功、失敗を問わずに目的の処理をするステップを作れるようになる
- テストの後処理を実行できる
ジョブステータスのチェック関数
if
条件ステータス関数を使用することで、以前のステップの実行結果を元に対象のステップを実行判断させます。デフォルトはsuccess
です。
公式使用例
steps: ... - name: The job has succeeded if: ${{ success() }}
チェック関数一覧
- success
- 失敗やキャンセルが1つもない場合に実行する
- always
- 常に実行する
- failure
- 失敗した場合に実行する
- cancelled
- キャンセルしたときに実行する
今回の処理で使用したステップ
- if: always() name: Upload test result uses: actions/upload-artifact@v2 with: name: test path: build/reports/**/*
ソースコード
終わりに
テスト結果をGitHub ActionsのArtifactoryにアップロードする記事を書いたときに、エラーが発生した時にもArtifactoryにアップロードされていることを確認すべきでした。こういう時に横着していると気づけないですね。
自分のミスに早期で気付くためのCI/CDなので、もっと有効な機能を知って今後に生かしていきたいです。
もしこの記事が役に立ったのであれば、はてぶ、Twitterでの記事の拡散、Twitterのフォローもよろしくお願いします。私の励みになります。
参考資料
GitHub Actions公式サイト docs.github.com