概要
この投稿では以下の方法について説明する。
- BitbucketのPipelinesを使ってRSpecを実行する。
- Pipelinesの実行結果をSlackに通知する。
類似の投稿はあると思うが、自分がささっと探したところ、ちょうど良い日本語の記事が見当たらなかったので、自分で書くことにした。
前提条件
-
以下の条件を満たすBitbucketのリポジトリが用意してあること。
-
bundleでgemをインストールするためのGemfileがルートディレクトリにあること。
- 具体的には
bundle install
で必要なgemがインストールされること。 - 最低限の内容を書くと、以下のようなGemfileになる。
source 'https://rubygems.org' gem 'rspec'
- 具体的には
-
bundlerを使ってrspecが実行できること。
- 具体的には
bundle exec rspec
が通ること。
- 具体的には
-
- Slackのチームが用意してあること。
BitbucketのPipelinesでRSpecを実行
- Bitbucketのサイトを開き、「Pipelines」をクリック
- 「Enable Pipelines」をクリック
- Pipelinesの実行内容を設定するためのtemplateが提示されるので、Rubyを選択して「Next」をクリック
- templateを編集できるのでrspecの実行コマンドを追記してコミット
image: ruby:2.3.0
pipelines:
default:
- step:
script: # Modify the commands below to build your repository.
- bundler --version
- bundle install
- bundle exec rspec # これを追加
- bundle exec rspec --format documentation # お好み次第で、こうでも良い
- 確認ダイアログが出るので「この変更のプルリクエストを作成」にチェックを入れてコミット
- bitbucket-pipelines.ymlというファイルがルートディレクトリに作られる。
- この時点で、Pipelinesが実行される。
- Pipelinesはリポジトリへのプッシュをトリガーにして実行される。
- この場合、プルリクエストしたブランチのプッシュがトリガーとなるようだ。
- プルリクエストを確認し、マージする。
Pipelinesの実行結果をSlackに通知
※英語で良ければ、このページのSlack欄にすべて書いてある。
https://confluence.atlassian.com/bitbucket/notifications-for-bitbucket-pipelines-857053284.html
SlackのチームにBitbucketのIntegrationをインストール
※Slackの無料プランではインストールできるIntegrationの上限が5個であることに注意
- Slackのトップページから「Developer Tools」をクリック
- Bitbucketで検索し、「Install」をクリック
- 通知を送る先のチャンネルを選択して「Add Bitbucket Integration」をクリック
- ここで新規にチャンネルを作ることもできる
- 無事成功すれば、Bitbucket側の設定方法が書かれたページが表示される
- このページをスクロールしていくと「Webhook URL」とうい欄があるので、ここに表示されるURLを控えておく
- もちろん、このページは後から見ることもできる
- Slackのトップページから「Developer Tools」、「Bitbucket」と辿り、「Configurations」の編集ボタンを押せば良い
BitbucketのWebhookを設定
- Bitbucketの「設定」を開き、Webhooksを選択
- 「Add webhook」をクリック
- Tilteを適当に(例えばSlack)入力し、URLには先程控えたSlackのWebhook URLを入力
- Triggersは「Choose from a full list of triggers」を選択し、展開された項目から必要なものを選択
- Pipelinesに直接関係あるのは以下の2項目
- Build status created
- Build status updated
- 他の項目も併せて選択しても良い。特にリポジトリへのプッシュなどはチェックしておくと便利だろう。
- Pipelinesに直接関係あるのは以下の2項目
- 選択が終わったら「Save」をクリックして完了
実行
以上の設定をすると、以降のプッシュに対してPipelinesの処理(今回の場合はRSpecなど)が実行され、その結果がSlackに通知される。
おまけ
Pipelinesの機能
Pipelinesの結果はPipelinesのページにも表示されるが、その他、以下の箇所にも表示される。
- コミットの「Builds」
- ブランチの「Builds」
- プルリクエストの「Builds」