https://zenn.dev/matken/articles/approve-deployments-with-github-environments
GitHub で共同開発をしている場合、GitHub Actions を使用して継続的なデプロイを行っていることがあると思います。 例えば Production デプロイするために、Git のタグを使用して、そのタグ作成をフックに自動デプロイみたいな運用が考えられます。
ただ、そういった運用は、運用自体が簡単ではあっても、セキュリティに難があります。 業務委託等の、社外エンジニアが開発に参加している場合でも、開発に参加するには、そのレポジトリに対して Write 以上の権限が必要になります。
すると、Git タグを作成する権限もあるわけで、そうなると、社外メンバーが Production デプロイを勝手に行えてしまいます。
そういったことを防ぐために、Production デプロイ自体に承認機能を付けることができます。 それを、GitHub Actions と GitHub Environments という機能を組み合わせることで実現できます。
レポジトリのページから、Settings > Environments へアクセスする
New environment
をクリックして、Production
等を入力する
Required reviewers
を有効にし、社内メンバーを追加し、Save protection rules
をクリックする
Deployment branches
で、Selected branches
を選択し、v*
タグを指定する
Deployment branches
には、ブランチだけではなく、タグも指定できます。 しかし、Currently applies to 0 branches
とあるように、そのタグが存在していても、カウントされないようです。
例えば、以下の GitHub Actions を作成してみます。
name: 'Deploy'
on:
push:
tags:
- 'v*'
jobs:
deploy:
environment:
name: Production
runs-on: ubuntu-latest
steps:
- uses: actions/[email protected]
- run: echo 'Hello'
environment
のところで、先程作成した Environment の名前を指定します。
steps
の内容は、本来は、Cloud Run へのデプロイ等の処理が入ってきます。
また、GitHub Environments は、steps
の中の処理が失敗しないかしか見ていません。
上記の GitHub Actions は、tag で実行されます。