GitHub の Environments を活用することで、ワークフロー実行前に デプロイメントのレビュー をすることができます。ワークフローのビルドパラメータ on.workflow_dispatch.inputs
もレビューしたい場合は次のような一工夫が必要です。
例えば誤った環境にデプロイしていないかをレビューしたい時に役立ちます。
改善案
このように run-name に ${{ toJSON(github.event.inputs) }}
を表示させることで、ビルドパラメータのレビューも手軽に出来るようになります。
name: deploy
+ run-name: Run by @${{ github.actor }} ${{ toJSON(github.event.inputs) }}
- run-name: Run by @${{ github.actor }}
on:
workflow_dispatch:
inputs:
target:
type: choice
required: true
options:
- dev
- stage
- prod
force-destroy:
type: choice
required: true
options:
- false
- true
jobs:
deploy:
runs-on: ubuntu-latest
environment: deployments
steps:
- run: deploy.sh
別解として、次のようにビルドパラメータをダンプをするジョブの追加も考えられますが、ワークフローの実行名に表示させた方が目立つので忘れずにレビューできます。
+ jobs:
+ dump:
+ steps:
+ - run: echo "${{ toJSON(github.event.inputs) }}"
jobs:
deploy:
runs-on: ubuntu-latest
environment: deployments
steps:
- run: deploy.sh
もっと改善案(実行理由を書いてもらう)
実際に デプロイメントのレビュー を運用してみると、ワークフロー実行者のデプロイの意図が分からないと判断できない場面があります。この課題はワークフロー実行者に コメントを書いてもらうことで 解決できるかもしれません。
name: deploy
run-name: Run by @${{ github.actor }} ${{ toJSON(github.event.inputs) }}
on:
workflow_dispatch:
inputs:
target:
type: choice
required: true
options:
- dev
- stage
- prod
+ reason:
+ description: 'デプロイの目的を書いてください'
+ type: string
+ required: true
+ default: 'デプロイの目的は、〜'
jobs:
deploy:
runs-on: ubuntu-latest
environment: deployments
steps:
- run: true
こうすることでワークフロー実行時に必ずコメントを求めることができます。
コメントが長いとワークフロー一覧では尻切れになってしまいますが、
クリックして詳細画面からは次のようにコメントは最後まで表示され、実行者の意図とビルドパラメータが合っているかをレビューすることができます。
おわり
GitHub の Environments は環境ごとにシークレットを格納するだけでなく、レビューや対象ブランチの制限など、主にデプロイに必要な機能が備わっていて便利です。一方で通常のコードレビューと比較するとデプロイメントのレビューは機能が十分でなく、レビュアが判断に困る場面があります。今回はビルドパラメータと実行理由を表示させるちょっとした工夫で、レビュアの負荷を下げる取り組みをしました。