今日誕生日のアイドルを取得するCircleCI Orbに、Slack通知機能を追加したお話

2019年01月04日

こんにちは。、 .ごっちです。

正月休み。せっかくだしなんか作るかぁと思い立って、少し前のアイマスハッカソンで作った CircleCI Orb の追加機能を実装しました。 今日誕生日のアイドルを出力する CircleCI orb をつくったお話 *こんにちは、 .ごっちです。*medium.com

出力結果が CI ページ上だけだと確認されない可能性が高いので、Slack に通知が行くようにしました。

CircleCI Orbs に公開したもの ↓ v0.2.1

https://circleci.com/orbs/registry/orb/yutagoto/todays-imas-idol

リポジトリ ↓ YutaGoto/todays-imas-idol-orb *Contribute to YutaGoto/todays-imas-idol-orb development by creating an account on GitHub.*github.com

ざっとコードをみてみる

だいぶ長くなりましたが、追加した部分は slack-notification-todays-imas-idol: を追加しただけです。それ以外は特段変わっていないです。

ざっと解読すると、 im@sparql を curl で叩いて、レスポンスの json をいい感じに整形して、その結果を slack の webhook にポストしている感じです。

あとは circleci の parameters: で webhook url と icon とユーザ名を定義します。 $SLACK_WEB_HOOK になっている環境変数部分は CircleCI のページ上で設定します。

実際に使うときの .circleci/config.yml は下のようにします。

version: 2.1
orbs:
  todays-imas-idol: yutagoto/todays-imas-idol@0.2.1

jobs:
  slack:
    docker:
    - image: ubuntu:18.04
    steps:
      - run:
          command: |
            apt-get update
            apt-get install -y sudo
      - todays-imas-idol/slack-notification-todays-imas-idol:
          slack_username: CiecleCI
          slack_icon: ":ciecleci:"

workflows:
  main:
    jobs:
    - slack

orb コマンド(?)を実行するときにパラメータが設定できるので、上のように定義します。default が設定されているので、なくても動きます(たぶん)。

っで実行した結果は、

こんな感じになります。執筆当日(01/04)は誕生日アイドルがいないので null になってしまいました。 null のときに今日誕生日のアイドルはいません みたいなことは後日対応します。

アイドルが複数人誕生日を迎えて出力が崩れてしまう可能性もなきにしもあらずなので、崩れたら修正します。。(おい)

そんなこんな結局

です。

いつもありがとうございます。 🙏

追記 2019/01/07

複数人のときやいないときの対応しました!

01/06のとき01/06 のとき

01/07のとき01/07 のとき

if else を書いただけなんですけどね。

References

ProfilePicture

Yuta Goto

フリーランスのソフトウェアエンジニアです。現在はReact.jsを使用したWebフロントエンドの開発やRuby on Railsを使用したサーバサイドの開発を行っています。