はじめに
circleciからslack-orbのversion4以降を使ったslack通知方法の記事が見つからず、公式もわかりにくかったので備忘録かねて記載。
設定方法
基本的に公式のwikiを見て設定すればOK
https://github.com/CircleCI-Public/slack-orb/wiki/Setup
slackアプリを作成する
ここが従来の設定方法と異なるところ。
今まではwebhookURLをcircleciのProject SettingのEnvironment Variableに設定すればよかったがslackでアプリを作りOAuth tokenを設定して欲しいとのこと。
補足(というか余談)
webhookURLからtokenに設定方法が変わった理由については不明。
以前までslackが出してるcircleciのアプリにwebhookURL設定追加して使ってたけど
アプリのDeveloperがslackだったからアプリの責任範囲を各自にしたかったのかもですね。
環境変数の設定
記事によると以下をcircleciのProject SettingのEnvironment Variableで指定すれば良い。
SLACK_ACCESS_TOKEN: slackアプリのアクセストークン
SLACK_DEFAULT_CHANNEL: slack通知のデフォルトチャネル
補足
現在のcircleciのProject Setting > Slack Integrationの設定画面では
- webhookURLを設定しましょ
- orbs連携しましょ
と記載がある。
が、これはorbsのver3までの話であり
orbs4ではwebhookURLは使われてないので1.は無視して良い。
config.ymlの設定
基本的に(これ位しか資料が見つからなかったので)orbsのexample記事を見ながら設定する。
https://circleci.com/developer/orbs/orb/circleci/slack?version=4.1.1
orbs連携の記載
orbs:
slack: circleci/slack@4.1.1
必須設定。これはorbs3でも同じ。
stepsに通知メッセージを記載
- slack/notify: #slack通知のステップ名。orbs3は設定方法が全く異なるので注意。
custom: |
{
"blocks": [
{
"type": "section",
"fields": [
{
"type": "plain_text",
"text": "*This is a text notification* :smile:", #メッセージ内容
"emoji": true #絵文字(:xxx:)を使いたい場合の指定
}
]
}
]
}
event: always #circleの結果指定。failの場合は失敗時、passは成功時。alwaysは結果問わず。
channel: ABCXYZ #slackチャネル指定。記載がなければSLACK_DEFAULT_CHANNELに届く
補足
公式exampleのjobs配下にある以下記載について
context:
- slack-secrets
wikiの環境変数の設定方法は
Organization Settingでこの名前のcontextを設定する場合を記載しており
本記事のようにProject Settingで設定した場合は記載不要。
contextについての公式説明はこちら
おわりに
slack-orbだけ新しくなってたけど
circleciのUIはついてきてないし
slack公式のwebhook用circleciアプリは残ってるしで
これから整備されてく(されて欲しい)のかなー。
という感じでした。