【Github】Github Actions ~ GITHUB_ENV ~

■ はじめに

https://dk521123.hatenablog.com/entry/2022/06/21/143624

で、GITHUB_ENV を扱ったが、すっかり忘れたのと
来年の仕事で早速使いそうなので、まとめておく。

目次

【1】GITHUB_ENV
【2】使いどころ
 1)使用上の注意
【3】構文
【4】サンプル
 例1:ブランチ名によって設定値を切り替える

【1】GITHUB_ENV

公式の説明(※1)だといまいちよーわからなかったが、、、

* Github Actions内で使える環境変数のグローバル変数的な領域
 => 後述「【3】構文」でイメージはつかめると思う

※1:公式ドキュメントの説明
https://docs.github.com/ja/actions/learn-github-actions/variables#default-environment-variables

GITHUB_ENV
ワークフロー コマンドから変数を設定するファイルへのランナーのパス。 
このファイルは現在のステップに固有であり、ジョブのステップごとで異なります。

【2】使いどころ

* 例えば、step の後に その際に出た出力値を
 別stepで使いたい場合に使える

 => 環境変数 には、env があるが上記のようには使えない

https://docs.github.com/ja/actions/using-workflows/workflow-commands-for-github-actions#setting-an-environment-variable

より抜粋

環境変数を定義または更新し、
これを GITHUB_ENV 環境ファイルに書き込むことで、
ワークフロー ジョブの後続のステップで環境変数が利用できるようになります

1)使用上の注意

[1] Job間の変数受け渡しには使えない

* jobが異なると$GITHUB_ENVは使えない。
 => 代わりに、$GITHUB_OUTPUT を使う

Github Actions ~ GITHUB_OUTPUT ~
https://dk521123.hatenablog.com/entry/2024/01/30/002943

【3】構文

run: echo "<環境変数名>=<値>" >> $GITHUB_ENV

# ${{ env.<環境変数名> }} で呼び出すことができる

run: |
  echo "ENV1=Hello" >> $GITHUB_ENV
  echo "ENV2=World" >> $GITHUB_ENV
  echo "env.ENV1 env.ENV2!!" # Hello World!!

【4】サンプル

* これ以外にも、以下の関連記事でも使っている

Github Actions ~ egg / wheel ファイル作成 ~
https://dk521123.hatenablog.com/entry/2022/06/21/143624

例1:ブランチ名によって設定値を切り替える

name: CI

# Controls when the workflow will run
on:
  # Triggers the workflow on push or pull request events but only for the "develop" branch
  push:
    branches: [ "develop" ]
  pull_request:
    branches: [ "develop" ]

  # Allows you to run this workflow manually from the Actions tab
  workflow_dispatch:
    inputs:
      chosen-hello-world:
        required: true
        type: choice
        options:
        - Hello
        - World

env:
  DEMO_S3_PATH: s3://your-s3-bucket/xxxx
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
      - uses: actions/checkout@v4

      # Settings Part
      - name: If main
        if: ${{ github.ref_name == 'main' }}
        run: |
          echo "MESSAGE=Hello" >> $GITHUB_ENV
          echo "BRANCH_NAME=main" >> $GITHUB_ENV
      - name: If other
        if: ${{ github.ref_name != 'main' }}
        run: |
          echo "MESSAGE=World" >> $GITHUB_ENV
          echo "BRANCH_NAME=${{github.ref_name}}" >> $GITHUB_ENV
      # Result Part
      - name: Result
        run: echo "MESSAGE=${{ env.MESSAGE }}, BRANCH_NAME=${{ env.BRANCH_NAME }}"

出力結果例

Run echo "MESSAGE=World, BRANCH_NAME=develop"
MESSAGE=World, BRANCH_NAME=develop

参考文献

* 以下のサイトが分かりやすい

https://zenn.dev/kyome/articles/a89fd954c5936f
https://docs.github.com/ja/actions/using-workflows/workflow-commands-for-github-actions

関連記事

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 ~ GITHUB_OUTPUT ~
https://dk521123.hatenablog.com/entry/2024/01/30/002943
Github Actions ~ egg / wheel ファイル作成 ~
https://dk521123.hatenablog.com/entry/2022/06/21/143624
Github Actions ~ 設定値を切り替えることを考える ~
https://dk521123.hatenablog.com/entry/2024/02/18/232926