Open1

GitHub Actions で特定の変数の値に応じて条件分岐して他の変数を生成する方法

PINTOPINTO

GitHub Actions のワークフローでは、特定の変数の値に基づいて他の変数を生成するために、ステップと envoutputs フィールドを使用することができます。

以下に例を示します:

name: Branching based on a variable value

on: [push, pull_request]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - name: Set variable value
        id: setvar
        run: |
          if [ "${{ github.event_name }}" == "push" ]; then
            echo "::set-output name=ACTION_TYPE::deploy"
          else
            echo "::set-output name=ACTION_TYPE::test"
          fi

      - name: Use variable
        run: echo "The action type is ${{ steps.setvar.outputs.ACTION_TYPE }}"

この例では、まず setvar ステップで特定の条件 (github.event_name が "push" か否か) に基づいて変数 ACTION_TYPE を設定しています。そして次のステップでその値を使用しています。

ここでは、"push" イベントが発生した場合、ACTION_TYPE は "deploy" になり、それ以外の場合(たとえば "pull_request" イベント)では "test" になります。

このパターンを使用して、任意の複雑さの条件に基づいて変数を設定し、それらを後続のステップで使用することができます。ただし、各ステップが自身のシェル環境を持っているため、一つのステップで設定した環境変数はそのステップ内でのみ利用可能で、他のステップでは直接アクセスできません。そのため、変数を後続のステップで利用するためには ::set-output name=...::... 構文を使用してステップのアウトプットとして設定する必要があります。