LoginSignup
1
2

GitHub Actionsでジョブ間で変数を共有する方法

Last updated at Posted at 2024-02-03

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

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2