BitriseでXcodeTestに失敗した時だけSlackにメッセージ投げる方法
ざっくりまとめ。
- Xcode の UITest を実行する Workflow で失敗した時だけ Slack にメッセージなげたい
- bitrise.yml で
run_if
を設定する
です。
やりたいこと
Xcode の UITest を実行する Workflow で失敗した時だけ Slack にメッセージなげたい
UITest を実行する Workflow を作って、スケジューリングして定期的に実行して結果を Slack へメッセージなげるという Workflow があるのですが、
テストが成功した場合は特にこちらですることがなく、むしろ Slack のメッセージが余計にとどいて邪魔だったので、失敗した時だけ知らせてほしいということが発端です。
Workflow の設定
Workflow のステップ画面だけをみているとわからないですが、
実は bitrise.yml を直接編集することでステップを実行するかどうかという設定ができます。
そして、Xcode Test for iOS ステップは実行した時に以下の環境変数が設定されます。
- $BITRISE_XCODE_TEST_RESULT
- $BITRISE_XCODE_RAW_TEST_RESULT_TEXT_PATH
- $BITRISE_XCRESULT_PATH
- $BITRISE_XCODE_TEST_ATTACHMENTS_PATH
これで $BITRISE_XCODE_TEST_RESULT
を使って run_if に設定していけばできそうだというのがわかります。
$BITRISE_XCODE_TEST_RESULT
に何が設定されるのかというのは、残念ながら説明にないのでステップのコードを直接見て判断しました。
- BITRISE_XCODE_TEST_RESULT:
opts:
title: Result of the tests. 'succeeded' or 'failed'.
value_options:
- succeeded
- failed
bitrise-steplib/steps-xcode-test:L263-268
title に説明かかれても Bitrise の Worklow のステップ画面では表示されないので、description にも同じ内容書いて欲しいですね(笑)
bitrise.yml
必要な情報わかったのでそれをもとに設定するとこんな感じになります。
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
- xcode-test: | |
inputs: | |
- export_uitest_artifacts: 'true' | |
- scheme: "$BITRISE_UI_TEST_SCHEME" | |
- slack: | |
run_if: '{{enveq "BITRISE_XCODE_TEST_RESULT" "failed"}}' | |
inputs: | |
- webhook_url: "$SLACK_WEBHOOK_URL" | |
- message: 'テスト失敗' |
いろいろ端折ってますが、slack ステップの run_if
の設定箇所がやりたいことを実現するための設定です。