はじめに
とあるライブラリのEOL発表に気づくのが遅れてしまい
影響調査等々の対応にとてもバタバタしてしまったことを受け、EOLを定期的にチェックしてTeamsに通知するPowerAutomateのフローを作ったので紹介します。
今回、EOLの監視にはendoflife.dateのAPIを使用しています。
Why PowerAutomate?
AWS Lambdaやローカルで動かす等も考えたのですが、
以下のことを考えてPowerAutomateを使うことにしました。
- Teamsへの通知で面倒な連携周りを勝手にやってくれる
- 追加料金が不要だった
- PowerAutomateを使ってみたかった
成果物イメージ
毎週月曜日にendoflife.dateのAPIを叩き、
EOLが公開されているライブラリ一覧をTeamsへ通知してくれます。
監視対象はTeamsに配置したExcelの表で管理しています。
実装
フローの全体図
APIを実行
フローの肝の部分です。
とはいっても大したことはしていません。
- 「HTTP」でExcelの表から取得したURLへGETリクエストを送信
- APIの取得結果を「JSONの解析」で解析
スキーマ定義は下記の通り、ある程度必要そうなものを載せています。
※レスポンスの型は公式docを参考にしています。{ "type": "object", "properties": { "releaseDate": { "type": "string" }, "eol": { "type": [ "boolean", "string" ] }, "latest": { "type": "string" }, "lts": { "type": [ "boolean", "string" ] } } }
EOLの判定
EOLは以下のように判定しています。
値 | 演算子 | 比較する値 |
---|---|---|
equals(body('JSON_の解析')?['eol'], false) | is not equal to | true |
EOLが公開されていない場合、eolの値にはfalseが入っているようなので、それ以外は全てEOL公開済みと判定するようにしました。
※EOLが公開されている場合、eolの値にはyyyy-MM-dd
形式の日付文字列が入っています。
Teamsへ通知
配列を文字列に変換してからひたすらreplace()
関数を使って成型しています。
もっとスマートに変換できる術を知る方は是非ご教示ください。
replace(replace(replace(replace(string(variables('EOL_LIST')), ',', '<br />'), '[', ''), ']', ''), '"', '')
参考