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を使ってみてください。