LoginSignup
31

More than 5 years have passed since last update.

Jenkinsで収集したカバレッジの変化情報をSlackに投稿する

Last updated at Posted at 2014-08-19

mokemokechicken氏の gitでPushする度にKarma-CoverageのCoverageの値をJenkinsで計測し、その増減をIdobataに投稿する に触発されて、最近自分のチーム内情報共有に活用している Slack でもやってみました。

Gitlab + Jenkins + 何かしらのCoverage + Slack という組み合わせになります。
ここでは JenkinsでNode.jsのテスト&カバレッジレポートを管理する で出力したカバレッジ情報を使っていますが、Cobertura形式であればプロジェクトの言語は問わないはずです。

できること

gitのcommit treeを考慮した上で前回のカバレッジ結果からの変化を計算し、増加・変化なし・減少の3パターンの報告をSlack上の指定のchannelに投稿します。
「Open」の部分はJenkins上の特定ビルドへのリンクとなっていて、詳細がすぐに確認できるようになっています。

これにより、テストコードを書かずにpushするとカバレッジを下げたことがチーム内で晒されるので、ツッコミを受けないよう頑張る方向に意識が働くようになります。たぶん。

Slack.png
Slack.png
Slack.png

設定手順

Gitlabへのpush -> Jenkinsのビルド実行、カバレッジ情報出力までの手順は割愛します。

GitLab と Jenkins を連携する (1)
JenkinsでNode.jsのテスト&カバレッジレポートを管理する
あたりを参考にしてください。
また、gitでPushする度にKarma-CoverageのCoverageの値をJenkinsで計測し、その増減をIdobataに投稿する のJenkinsの設定までを行っておきます(特にRubyのインストール)。

Slackの設定

Slackのintegration設定のページに行き、Jenkins CIを追加します。

slack_integrations.png

channelを選択し、「Add Jenkins Integration」ボタンを押します。

ここでとりあえずデフォルトのchannelは設定しますが、実際には投稿時に変更可能です。

slack_add_instegration.png

その後、Jenkins側の設定のインストラクションが表示されますが、無視してOKです。
重要なのは、左のメニュー下部に表示されるtokenで、これをコピーしておきます。

slack_token.png

Jenkinsのビルド手順の追加

Jenkinsのジョブ設定でビルド手順の追加を行い、単体テストを行った後に以下のシェルスクリプトを記載します。

環境変数の各部分は、自分のドメインやtokenに置き換えてください。

export COVERAGE_DIR=.coverage
export SLACK_ENDPOINT=https://<YOUR_SLACK_TEAM_DOMAIN>.slack.com/services/hooks/jenkins-ci
export SLACK_TOKEN=<YOUR_SLACK_TOKEN>
export SLACK_CHANNEL=<YOUR_SLACK_CHANNEL>
curl -s -L https://gist.githubusercontent.com/u-minor/d285e58a5c92e54d7188/raw/cobertura_slack.sh | sh -s coverage/cobertura-coverage.xml

jenkins_shell.png

スクリプトの内容について

基本的な処理内容は、
gitでPushする度にKarma-CoverageのCoverageの値をJenkinsで計測し、その増減をIdobataに投稿する
に記載のスクリプトとほぼ同一です。

相違点は、

  • レポートファイルを新規にCOVERAGE_DIRの場所に複製し、履歴はこのディレクトリで管理している
    • レポートファイルがあるディレクトリがcleanされても大丈夫なように
  • idobataからslackへの投稿に切り替えている

となります。

おまけ

Slackへの投稿は、シンプルなテキスト投稿の他に、今回のような複雑なフォーマットのメッセージを投稿することができます。
背景色を変えることはできませんがcolor barで似たような表現が実現できるので、活用範囲は広そうです。

監視スクリプトをちょっと改変して、障害等の際にメールでの通知の他にSlackへの通知を追加したりしていますが、なかなか便利でオススメです。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
31