■ はじめに
Github Actions で、例えば、
https://dk521123.hatenablog.com/entry/2020/04/16/113816
でやったように、 Dev/Stage/Prodなどで設定値が変更する必要があるので どう実装していくかを考える
目次
案1:workflow_dispatch + inputs で切り替える 案2:ファイルを分ける + workflow_call (Reusable workflow) を使う 案3:ブランチ + if / GITHUB_ENV / OUTPUT で切り替える 案4:設定ファイルを使う
案1:workflow_dispatch + inputs で切り替える
* workflow_dispatch (手動実行) と inputs (入力値) で切り替えを実現する => 詳細は、以下の関連記事を参照のこと
Github Actions ~ ワークフロー制御 ~
https://dk521123.hatenablog.com/entry/2024/01/28/004128
サンプル
on: workflow_dispatch: inputs: Env: required: true type: choice options: - dev - stage - prod jobs: sample-job: runs-on: ubuntu-latest env: Env: ${{ inputs.env }} steps: - name: Show env run: echo Result: Env - ${{ env.Env }}
案2:ファイルを分ける + workflow_call (Reusable workflow) を使う
[1] 例えば、以下のように環境ごとにファイルを分ける + dev-workflow.yml + stage-workflow.yml + prod-workflow.yml [2] 共通して使える処理は、例えば workflow_call (再利用可能なワークフロー。Reusable workflow)を使う
Github Actions ~ workflow_run / workflow_call ~
https://dk521123.hatenablog.com/entry/2024/02/14/232546
=> もしくは、共通処理をシェルスクリプト化してもいいかも。
Github Actions ~ 外部シェルスクリプト実行 ~
https://dk521123.hatenablog.com/entry/2024/01/19/003044
案3:ブランチ + if / GITHUB_ENV / OUTPUT で切り替える
[1] 例えば、以下のようにブランチ名で切り替える * master => prod * release/** => stage * develop => dev [2] その他の設定値について、if + GITHUB_ENV で切り替える => Job間で跨ぐ場合は、+αとして「GITHUB_OUTPUT」を使う
サンプル
name: CI on: push: branches: - develop - 'releases/**' jobs: sample-job1: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 # For Prod - id: set-params-for-prod name: Set parameters for Production if: ${{ github.ref == 'master' }} env: PROD_ENV_NAME: prod PROD_S3_NAME: your-s3-prod-name run: | echo "ENV=${{ env.PROD_ENV_NAME }}" >> $GITHUB_ENV echo "S3_NAME=${{ env.PROD_S3_NAME }}" >> $GITHUB_ENV # For Stage - id: set-params-for-stage name: Set parameters for Staging if: ${{ startsWith(github.ref, 'releases/') }} env: STAGE_ENV_NAME: stage STAGE_S3_NAME: your-s3-stage-name run: | echo "ENV=${{ env.STAGE_ENV_NAME }}" >> $GITHUB_ENV echo "S3_NAME=${{ env.STAGE_S3_NAME }}" >> $GITHUB_ENV # For Dev - id: set-params-for-dev name: Set parameters for Dev if: ${{ !startsWith(github.ref, 'releases/') && github.ref != 'master' }} env: DEV_ENV_NAME: dev DEV_S3_NAME: your-s3-dev-name run: | echo "ENV=${{ env.DEV_ENV_NAME }}" >> $GITHUB_ENV echo "S3_NAME=${{ env.DEV_S3_NAME }}" >> $GITHUB_ENV # To show results - id: show-params name: Show parameters run: | echo "ENV=${{ env.ENV }} S3_NAME=${{ env.S3_NAME }}" - id: set-params-for-outputs run: | echo "env=${{ env.ENV }}" >> "$GITHUB_OUTPUT" echo "s3_name=${{ env.S3_NAME }}" >> "$GITHUB_OUTPUT" outputs: env: ${{ steps.set-params-for-outputs.outputs.env }} s3_name: ${{ steps.set-params-for-outputs.outputs.s3_name }}
案4:設定ファイルを使う
* 以下の関連記事を参照のこと
Github Actions ~ 設定ファイルを考える ~
https://dk521123.hatenablog.com/entry/2024/05/21/201239
関連記事
Github ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2019/07/18/234652
Github Actions ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2021/11/04/142835
Github Actions ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2022/06/16/151443
Github Actions ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2023/12/22/195715
Github Actions ~ ワークフロー制御 ~
https://dk521123.hatenablog.com/entry/2024/01/28/004128
Github Actions ~ workflow_run / workflow_call ~
https://dk521123.hatenablog.com/entry/2024/02/14/232546
Github Actions ~ あれこれ編 ~
https://dk521123.hatenablog.com/entry/2023/12/21/155224
Github Actions ~ エラー処理 ~
https://dk521123.hatenablog.com/entry/2024/01/01/232057
Github Actions ~ GITHUB_ENV ~
https://dk521123.hatenablog.com/entry/2023/12/29/000840
Github Actions ~ GITHUB_OUTPUT ~
https://dk521123.hatenablog.com/entry/2024/01/30/002943
Github Actions ~ Artifact ~
https://dk521123.hatenablog.com/entry/2024/02/13/021717
Github Actions ~ Github Actions環境変数 ~
https://dk521123.hatenablog.com/entry/2024/02/26/194437
Github Actions ~ 外部シェルスクリプト実行 ~
https://dk521123.hatenablog.com/entry/2024/01/19/003044
Github Actions ~ 設定ファイルを考える ~
https://dk521123.hatenablog.com/entry/2024/05/21/201239
Github Actions ~ Self-hosted runners / 入門編 ~
https://dk521123.hatenablog.com/entry/2023/12/18/204119
Github Actions ~ Self-hosted runners / あれこれ編 ~
https://dk521123.hatenablog.com/entry/2024/02/07/002736
GitHub CLI ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2024/02/17/233836
ブランチモデル ~ GitHub Flow / Git-flow etc ~
https://dk521123.hatenablog.com/entry/2019/09/29/121256