mofmofでは fourkeys を用いて開発生産性を計測しています。
あるプロジェクトチームが、複数のサービスを管理していました。 コードレビュー、マージ、検証というフローを辿ってリリースされるのですが、 検証完了後にリリース作業が漏れてしまうケースが有りました。
コミュニケーションやフローの改善での対応もしていますが、未リリースのものがあるかどうかの検知もしたい。
そこで、定期的にデプロイされていないものをチェックしてSlackへ通知するGitHub Actionsを作りました。
作ったGitHub Actions https://github.com/marketplace/actions/check-for-deployment-omissions
この記事ではこのアクションの使い方を紹介します。
1. Slackへ通知するためにアプリを作成する
以下のページへ行き、Slack Appを作成します https://api.slack.com/apps/
このとき、From an app manifest
を選択して作成すると、yamlで設定を登録することになるので、以下のyamlを登録します。
display_information: name: Check for Deployment Omissions settings: org_deploy_enabled: false socket_mode_enabled: false is_hosted: false token_rotation_enabled: false features: bot_user: display_name: Check for Deployment Omissions oauth_config: scopes: bot: - chat:write - chat:write.public
Appが作成されたら、Workspaceにインストールします。
Bot User OAuth Token
が発行されるので、それをコピーしておきましょう。
2. デプロイ漏れを検知したいリポジトリにGitHub Actionsを設定する
以下のようなファイルを作成することで設定ができます。
.github/workflows/check-for-deployment-omissions.yml
name: 'check-for-deployment-omissions' on: schedule: - cron: '0 0 * * 1' jobs: check-for-deployment-omissions: runs-on: ubuntu-latest steps: - uses: actions/checkout@v2 - uses: mofmof/check-for-deployment-omissions@v0 with: base_branch: 'main' deployment_environment_name: 'production' github_token: ${{ secrets.GITHUB_TOKEN }} slack_token: ${{ secrets.SLACK_TOKEN }} slack_channel: ${{ vars.SLACK_CHANNEL }}
それぞれの設定項目について
チェックを実行したい時間: schedule: に指定してください。上記の設定では、月曜日の朝9時(JST)にチェックを実施します。
base_branch: 本番環境と同期されているブランチを指定します。
deployment_environment_name: base_branchと比較するDeploymentの環境名を指定します
slack_tokenとslack_channel:
設定のために、SLACK_TOKEN
と SLACK_CHANNEL
が必要になるので、リポジトリのGitHub Actions用の変数設定を行ってください。
SLACK_TOKEN:
1で作成した Bot User OAuth Token
SLACK_CHANNEL:
通知したいチャンネルの名前 例: general
手動でGitHub Actionsを実行してみよう
上記の場所から、作ったActionを実行してみて、Slackに通知されるか確認しましょう。 差分があってもなくてもSlackに通知されます。
まとめ
GitHub Deploymentを使ってDeploymentを管理している場合は、mainブランチと差異がないかを確認できるこのActionを使ってみてください。