Pocket

CircleCI OrbsによるSlack通知に移行してみた

2年前のクリスマス(2年前!?)に個人で利用しているCircleCIのSlack通知をOrbs v3に移行しましたが、今回v4にバージョンアップしてみました。v4から破壊的変更があったので、もろもろご紹介できればと思います。


circleci/slack@4.10.1

https://circleci.com/developer/ja/orbs/orb/circleci/slack

https://github.com/CircleCI-Public/slack-orb/wiki

  • Custom Message Template

v3まではmessageでラフにtextを指定すれば独自の通知ができていましたが、廃止されて新たにCustom Message Templateが加わりました。カスタマイズする際にSlack Block Kit Builderを利用してJSONを書かなければならないので、結構手間がかかります。今回は個人ということもあって面倒くさいので、Customは利用せずにTemplatesを使って修正してみました。さらにSlackのWebhookも廃止されて、Slack App/APIに変更されました。まずはSlack APIから作っていきましょう。


Setup Slack API

https://github.com/CircleCI-Public/slack-orb/wiki/Setup

  • https://api.slack.com/appsにアクセス

Create New App を選択

  • OAuth & Permissionsのscopesを設定
MethodReason
chat:writePost to Slack (bot must be invited to channel)
chat:write.publicPost to any channel
files:writeFile uploading (Not yet used, check for updates)
  • OAuth Tokens for Your WorkspaceでAccess Tokenを作成
  • CircleCIの環境変数にSLACK_ACCESS_TOKENで上記のAccess Tokenを登録


Fix CircleCI config.yml

  • Templates

[DigitalOcean][Terraform][CircleCI]TFLintを導入してみたらWarningだらけになったお話

直近Terraform CI/CD環境はTFLintを導入とOrbsに移行しました。以前の書き方は上記のブログを参考にしてみてください。以前はJobsごとにslack-notifyを指定していましたが、リファクタリングしてcommandsで slack-notify-failslack-notify-success を追加しました。Jobsにはcommandsで定義した名称を指定するだけなので、コードが短くなりました。テスト通知してみましょう。

  • テスト通知

ん〜Templatesだと見にくいというかv3と比べるとデカイ..やはりcustomに移行したほうが良さそう…

  • v3


まとめ

Slack App/APIに統一されたことで、毎回通知のためにWebhookを作成することがなくなったのはかなりメリットですね。1つAPI作っておければあとは環境変数追加するだけで、使い回しができるのは楽!customは気が向いたら変更します…

Pocket

カテゴリー: CircleCIslack

adachin

1989年生まれのSRE。 ホスティングから大規模なアドテクなどのインフラエンジニアとして携わる。好きなツールはAnsible,Terraform,CircleCIで、ECS/Fargateでのインフラ構築を得意とする。副業では数社サーバー保守とベンチャー企業のインフラコンサルティングやMENTAで未経験者にインフラのコーチングを実施している。また、「脆弱性スキャナVuls」のOSS活動もしており、自称エバンジェリスト/技術広報/テクニカルサポート/コントリビュータでもある。現在はサービスの信頼性向上、DevOps、可用性、レイテンシ、パフォーマンス、モニタリング、緊急対応、インフラコード化、リファクタリング、セキュリティ強化、新技術の検証、Docker開発環境の提供、AWSでのインフラ構築、GCPでのGKE/Kubernetes保守などを担当している。

0件のコメント

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください