🐡

GitHub Actionsで手動でワークフローを実行する際のenvironmentパラメータを使ってみる

2022/05/20に公開

初めに

2021年11月10日に、GitHub Actionsの手動ワークフロー実行時の入力タイプが追加されました。
https://github.blog/changelog/2021-11-10-github-actions-input-types-for-manual-workflows/
その中のenvironmentタイプについて、なにがうれしいのか実際に使ってみて確認してみたいと思います。

まずenvironmentとは

主な使い方としては、環境ごとに異なるシークレットをenvironmentに紐づけて管理することができます。
例えば、以下のようにdevとprodというenvironmentを用意しておいて、それぞれにsecret名をTOKENとして、各環境のTOKENの中身を登録しておきます。
そして、ワークフロー内でenvironmentを指定することで、使用するsecretを切り替えることができます。

environment secret名 value
dev TOKEN xxxxxxxxx
prod TOKEN yyyyyyyyyy

これによって、ワークフローの記述が簡潔になり、environmentがprodの時はワークフロー実行時にレビュー担当者の承認を必要とする設定などができるようになります。
https://docs.github.com/ja/actions/deployment/targeting-different-environments/using-environments-for-deployment

アップデート以前

入力タイプのアップデート以前は、環境ごとに共通のワークフローを使用する場合、Stringのinputでenvironmentを指定していたので、typoしたり、存在しないenvironment名を指定してしまう可能性がありました。

アップデート後

今回のアップデートで、workflow_dispatchinputstype: environmentとすると、すでに設定されているenvironment名が自動でプルダウン表示されるようになりました。

これによって、存在しないenvironmentを指定してしまうことが無くなります。

  1. environmentの登録
    今回はdevとprodを登録。secret名はどちらもTOKENとしておきます。
  2. ワークフローの作成
  • inputsのenvironmentをtype: environmentにする
  • jobs.show-input.environmentを${{ github.event.inputs.environment }}としてinputsパラメータを参照する
  • echo ${{ secrets.TOKEN }}すると、environmentで指定した環境のTOKENが出力される
name: environment input test

on:
  workflow_dispatch:
    inputs:
      environment:
          type: environment

jobs:
  show-input:
    runs-on: ubuntu-latest
    environment: ${{ github.event.inputs.environment }}
    steps:
      - name: show token
        run: |
          echo ${{ secrets.TOKEN }}

Discussion