GitHub Actionsにおけるワークフローの自動化では、異なるジョブ間で情報を共有する必要がしばしばあります。ジョブ間で変数を共有するには、ジョブのoutputsセクションを活用し、後続のジョブでこれらの出力を参照します。
1. 変数を設定する
最初に、変数を設定し、出力として公開したいジョブを定義します。これはGITHUB_OUTPUT環境変数を利用して行います。
jobs:
job1:
runs-on: ubuntu-latest
outputs:
myVariable: ${{ steps.set_output.outputs.value }}
steps:
- name: Outputを設定
id: set_output
run: echo "value=Hello, GitHub Actions!" >> $GITHUB_OUTPUT
このコードスニペットでは、job1がHello, GitHub Actions!という値をmyVariableとして出力します。
2. 後続のジョブで変数を使用する
次に、先のジョブで設定された変数を使用します。これを実現するために、needsキーワードを使用して、依存するジョブを明示的に指定し、そのoutputsにアクセスします。
job2:
needs: job1
runs-on: ubuntu-latest
steps:
- name: job1からの出力を使用
run: echo "job1からの出力: ${{ needs.job1.outputs.myVariable }}"
ここで、job2はjob1の出力myVariableを使用しています。この方法により、ワークフロー内の異なるジョブ間で効果的にデータを受け渡すことができます。
3. 例:job1 & job2
jobs:
job1:
runs-on: ubuntu-latest
outputs:
myVariable: ${{ steps.set_output.outputs.value }}
steps:
- name: Outputを設定
id: set_output
run: echo "value=Hello, GitHub Actions!" >> $GITHUB_OUTPUT
job2:
needs: job1
runs-on: ubuntu-latest
steps:
- name: job1からの出力を使用
run: echo "job1からの出力: ${{ needs.job1.outputs.myVariable }}
4. まとめ
GitHub Actionsのジョブ間で変数を共有する機能は、複雑な自動化タスクを柔軟にかつ効率的に管理するための強力なツールです。上記の手順を用いることで、簡単にジョブ間での変数共有を実現し、より高度なCI/CDパイプラインを構築することが可能となります。
注
2023年7月から、GitHub Actionsではsave-stateやset-outputのコマンドの使用が廃止されました。
旧:
- name: Save state
run: echo "::save-state name={name}::{value}"
- name: Set output
run: echo "::set-output name={name}::{value}"
新:
- name: Save state
run: echo "{name}={value}" >> $GITHUB_STATE
- name: Set output
run: echo "{name}={value}" >> $GITHUB_OUTPUT