anz blog

BitriseでXcodeTestに失敗した時だけSlackにメッセージ投げる方法

2019-08-18 #Bitrise

ざっくりまとめ。

  • 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

必要な情報わかったのでそれをもとに設定するとこんな感じになります。

いろいろ端折ってますが、slack ステップの run_if の設定箇所がやりたいことを実現するための設定です。