以下の内容はhttps://uga-box.hatenablog.com/entry/2024/11/13/000000より取得しました。


【GitHub Actions】ブランチ名に応じて環境変数の値を変える方法

GitHub Actions のワークフローでブランチ名に応じて、codegen用のGraphQL APIエンドポイントを変えたい

GraphQL APIエンドポイントは環境変数の値を変えれば良いようになっているので、実際にはブランチ名に応じて環境変数の値を変えれば良い

環境はstagingdevelopがあり、developもしくはdevelop/xxxxxというブランチ名であればdevelop環境のエンドポイントにする

やり方

ブランチ名をとるにはgithub.ref_nameを使う

簡単な使い方

steps:
  - name: Print branch name
    run: echo "Branch name is ${{ github.ref_name }}"

これを応用して

      - name: Set environment variables
        run: |
          if [[ "${{ github.ref_name }}" =~ ^develop(/|$) ]]; then
            echo "API_END_POINT=https://develop.my-project.com/graphql" >> $GITHUB_ENV
          else
            echo "API_END_POINT=https://staging.my-project.com/graphql" >> $GITHUB_ENV
          fi

とすれば、環境変数に設定してくれる

$GITHUB_ENVは、GitHub Actionsのワークフロー内で環境変数を設定するための特別なファイルパスで、このファイルに書き込んだ環境変数は、同じジョブ内の後続のステップで利用可能になる

ステップ間で値を共有できるので、別のステップでこの環境変数を使いたい場合にはこれを使用する

他のステップで使う場合は以下のようにenv.環境変数名で呼び出す

      - run: pnpm codegen
        env:
          API_END_POINT: ${{ env.API_END_POINT }}

github.ref_namegithub.head_ref

これを調べるにあたって、ブランチ名を取得するにはgithub.ref_namegithub.head_refのどちらを使うべきか迷った

違いをまとめておく

github.ref_name

  • 概要: 現在のリファレンス(ブランチやタグ)の名前を取得する
  • 使用可能なイベント: すべてのイベントで使用可能
  • 特徴:
    • push イベントでは 現在のブランチ名 を取得
    • pull_request イベントでは マージ先のブランチ名base ブランチ)を取得

使う場面

  • push イベントでブランチ名やタグ名を取得したいとき
  • `pull_requestイベントでマージ先ブランチ(base`)名を取得したいとき

github.head_ref

  • 概要: プルリクエストで変更元(head)ブランチ名を取得する
  • 使用可能なイベント: pull_request イベント専用
  • 特徴:
    • プルリクエストが作成された場合、PR元のブランチ名を取得
    • push イベントでは空の値になる

使う場面

  • pull_request イベントで変更元のブランチ名を取得したいとき

まとめ

  • push イベント:
    • github.ref_name が適切
  • pull_request イベント:
    • マージ先ブランチを取得したい → github.ref_name
    • PR元ブランチを取得したい → github.head_ref



以上の内容はhttps://uga-box.hatenablog.com/entry/2024/11/13/000000より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14