Slack
Bitrise

BitriseでビルドがFailedした時だけSlackで通知する

More than 1 year has passed since last update.

BitriseではWorkflowのGUI上でSlack通知を簡単に設定出来ますが、どうもビルドが失敗した時だけ特定のフローを走らせるみたいな設定がないっぽい?
テストが落ちた時のみ通知したかったので、どうしようか迷った挙句普通にbashでWebhookを叩いてSlack通知するようにしました。

やりかた

WorkflowでSlackではなくScriptを追加します。
1.png

Script contentの部分に以下みたいな感じでwebhookを叩くコードを貼り付けます。
bashからwebhookを叩くコードはこちらの記事を参考にしました。
http://qiita.com/tt2004d/items/50d79d1569c0ace118d6

#!/bin/bash
# fail if any commands fails
set -e
# debug log
set -x

# write your script here
if [ $BITRISE_BUILD_STATUS = 1 ]; then
    WEBHOOKURL="ここにwebhookのURL"
    MESSAGE=${MESSAGE:-"Androidのテストが落ちたみたいです"}
    curl -s -S -X POST --data-urlencode "payload={\"text\": \"${MESSAGE} ${BITRISE_BUILD_URL}\" }" ${WEBHOOKURL} >/dev/null
fi

# or run a script from your repository, like:
# bash ./path/to/script.sh
# not just bash, e.g.:
# ruby ./path/to/script.rb

Bitriseではいくつか環境変数が用意されていて、[Insert variable]ボタンで挿入することが出来る。
$BITRISE_BUILD_STATUSはビルドが成功していれば0、失敗していたら1を返すようなのでそれを判定しているだけです。
とりあえずこれでビルドが失敗した時だけお知らせしてくれるようになった。

...うーん、もっと良い方法があるような気がする。。。