概要
jenkinsci/slack-pluginにアップデートがあり、タイトルの内容でググると良く出てくる参考になりそうな記事では以下のように設定内容が異なります。
とても紛らわしく、本家に以下のIssueを作り、フィードバッグをもらってようやく理解できて連携できまして笑
Response: null, Response Code: 404 and Response: {"ok":false,"error":"invalid_auth"} #649
なので今回、JenkinsとSlackの最新の連携方法をまとめていきます。
古いバージョン
※詳細:JenkinsとSlack連携
※詳細:Jenkinsおじさんビルド結果Slackに通知して
現在
環境
- OS
- macOS 10.15.1
- Jenkins
- 2.190.2
- slack-plugin
- 2.35
- Maven
- 3.6.3
- Java
- 11.0.2
前提知識
連携方法の大枠を知っておかないと初見ですぐ理解するのは難しいかもしれません。
過去の記事やjenkinsci/slack-pluginを確認しておくことをオススメします。
what "legacy"?
いろいろ調べているとレガシーと読んでいる解説がちょくちょく見られます。
これは上記の古いバージョンのjenkinsci/slack-plugin
を指しており、現在はJenkins CI
だけでは連携できないようになっております。
Jenkins CI
Jenkinsのジョブの結果を通知させたいSlackにこれまでJenkins CIを導入し、トークンが発行され、以前まではこれをもとにJenkinsとSlackを連携できていました。
ですが現在のバージョンでは使用せず、Custom Slack App
を作成してJenkins専用のBotを各自で作成する必要があるようです。
※Jenkinsの設定画面をよく見ると上記の古いバージョンと同じでそもそも参考にならない笑汗
Custom Slack App
api.slack.comにアクセスし、「Start Building」をクリックしてボットを作っていきます。
「Create a Slack App」にBotアカウントの名前とWorkspaceの指定を決めていきます。
次にBotsとPermissions、Botのアイコンなどを決めていきます。
ちなみにこの画面で表示されている「App Credentials」の情報でIDやTokenなどの情報がありますが、今回は一切使いません。
Registration
ここからはjenkinsci/slack-pluginのREADMEにも書かれている内容になります。
Botアカウント作成
Bot User
にアクセスし、正式にBotアカウントを作成しました。
認証や承認など
次にOAuth & Permissions
にアクセスし、OAuth Tokens & Redirect URLs
とScopes
に設定を行なっていきます。
「Install App」をクリックし、BotとWorkspaceの紐付けを承認します。
このときのアイコンは、Display Informationページ上で設定したアイコンになります。
Bot User OAuth Access Token
の内容をコピーし、このトークンがJenkins CI
のトークンの代わりになります。
コピーしたトークンをJenkins -> システム設定 -> Slack配下にあるCredential
の追加からSecret text
でSecret
にペーストして認証情報を発行し、そのままCredential
に設定しておきます(このへんの設定は以前と同じ)。
Scopes
には公式で解説されている次の設定を行います。
次に通知したいチャンネルにBotアカウントを追加します。
(もしJenkins CIを追加してたら以下スクショのように紛らわしい状況になります笑)
これでJenkins -> システム設定 -> Slack配下にあるTest Connection
をクリックすると次のように成功すると思います。
もしBotアカウントの追加が忘れていると次のようにエラーになります。
ビルド後の処理 -> Slack Notifications
これで完了になります、お疲れ様でした。