- Published on
CircleCI Orb を使って不安定なテスト(Flaky Tests)を Slack 通知する方法
- Authors
- Name
- Tadashi Nemoto
- @tadashi0713
この記事では、CircleCI Orb を使って不安定なテスト(Flaky Tests)を Slack 通知する方法について紹介します。
- Test Insights ダッシュボードから不安定なテスト(Flaky Tests)を確認する方法
- flaky-tests-notify Orb について
- 1) CircleCI Token と Slack Token を作成する
- 2) CircleCI 設定ファイルを作成する
- 3) Scheduled Pipeline(パイプラインのスケジュール実行) を設定する
Test Insights ダッシュボードから不安定なテスト(Flaky Tests)を確認する方法
2021 年に CircleCI は Test Insights ダッシュボードをリリースしました。
このダッシュボードでは Flaky Tests を検出することができ、これらのテストを素早く直すことによって開発スピードを高く保つことができます。
詳細については以下のブログ・ドキュメントを参考にしてください。
flaky-tests-notify Orb について
通常は、この Test Insights ダッシュボードを定期的に確認して Flaky Tests を見つけることになります。
今回これらの Flaky Tests をより早く発見・修正するために、Slack 通知を簡単に実装できる CircleCI Orb(設定ファイルのパッケージ)を作成しました。
1) CircleCI Token と Slack Token を作成する
この Orb を使うには、CircleCI Token と Slack Token が必要になります。
この Orb は Slack Orb をベースに作られているため、以下のドキュメントを参考に Slack Token を作成してください。
CircleCI Token は Flaky Tests を API 経由で取得するために利用します。
次のステップに進む前に、以下の環境変数が CircleCI に入っていることを確認してください。
CIRCLE_TOKEN
SLACK_ACCESS_TOKEN
SLACK_DEFAULT_CHANNEL
(どの channel にメッセージを送るか)
2) CircleCI 設定ファイルを作成する
この Orb は Certified Orb ではないため、お使いの Organization が Uncertified Orb を許可しているか確認してください。
次に、CircleCI の設定ファイル(.circleci/config.yml
)を記述します。
version: '2.1'
orbs:
flaky-tests-notify: tadashi/flaky-tests-notify@1.0.0
parameters:
notify_flaky_tests:
type: boolean
default: false
workflows:
notify_flaky_tests:
jobs:
- flaky-tests-notify/notify
when: << pipeline.parameters.notify_flaky_tests >>
この notify_flaky_tests
ワークフローは when
の部分で記述されていますが、外部から notify_flaky_tests
パラメーター(true)が渡されていないと起動されません。
次の Scheduled Pipeline(パイプラインのスケジュール実行) の設定でこのパラメーターを渡します。
3) Scheduled Pipeline(パイプラインのスケジュール実行) を設定する
先ほど作成したワークフローを定期実行させるために、Scheduled Pipeline(パイプラインのスケジュール実行) を設定します。
notify_flaky_tests
パラメーターを追加することによって、この Scheduled Pipeline の実行時のみ notify_flaky_tests
ワークフローが実行されるようにします。
Scheduled Pipelines が正しく設定されていれば、指定した定期実行のタイミングでワークフローが動いているのが確認できるかと思います。
不安定なテストがある場合には下記のような Slack メッセージが送信されます。