やりたいこと
セキュリティ的なアレで社内ではSlackが利用できないのでMattermostを利用しています。
開発経験が浅いメンバが多く、平気でコンパイルエラーになるソースコードをコミットしてくるので、Jenkinsでビルドエラーになった場合、Mattermostに自動でお叱りの投稿ができるようにしたいです。
Jenkinsにプラグインを追加する
JenkinsにMattermost Notification Pluginを追加します。
https://plugins.jenkins.io/mattermost
インターネットにつながる環境であればJenkinsのプラグインマネージャから追加できると思いますが、今回の環境はセキュリティ的なアレでつなががりません。(忌々しい・・・)
そのため、上記URLからhpiファイルをダウンロードし、Jenkinsのpluginsディレクトリに取得したhpiファイルを配置、再起動を行いプラグインを追加しました。
MattermostにIncoming Webhookを登録する
外部システムからMattermostに投稿するための設定を行います。
チーム名の横にある点々をクリックしてメニューを表示し、「統合機能」を選択します。(英語だとIntegrationとかだと思います。)
以下のような画面が出てくると思うので、「内向きのウェブフック」をクリックします。(英語だとIncoming Webhookとかだと思います。)
そこに、Webhookを新規作成するボタンがあるので、そこから作成します。
作成されたウェブフックのURLは後程利用します。
また、Mattermostのシステムコンソールから「統合機能によるユーザ名の上書きを許可する」を有効にしておきます。
Jenkinsの設定を行う
システムの設定からGlobal Mattermost Notifier Settingsの項目を設定します。
項目 | 設定内容 |
---|---|
Endpoint | 先ほど作成した内向きのウェブフックのURL |
Channel | 投稿するチャンネル。「ユーザ名@チャンネル名」と設定すれば、ユーザ名を指定できる。ユーザ名を省略した場合は、ウェブフックを作成したユーザとして投稿される。 |
Icon to use | 投稿する際のアイコンのURL。省略すればウェブフックデフォルトのアイコンになる。 |
Build Server URL | ビルドサーバ(Jenkins)のURL。 |
上記を入力した後、TestConnectionボタンを押して成功すれば設定完了です。(Mattermostにテストメッセージが投稿されるので注意。)
また、上記はジョブごとに設定することもできます。
Jenkinsのジョブを作成する
ビルド後の処理として、「Mattermost Notification」が追加できるようになっています。
通知するタイミングをチェックボックスで選択できます。今回は「Notify Failure」にしました。
高度な設定から「Include custom message」を定義すれば、投稿する内容をカスタマイズできます。
また、「Notify Repeated Failure」にチェックを入れておけば、連続で失敗した場合にも、その都度投稿が行われます。
(デフォルトでは、初回のみ投稿されます。)
以上でJenkinsからMattermostに投稿することができます。