【Github】Github Actions ~ GITHUB_OUTPUT ~

■ はじめに

Github Actions ~ GITHUB_ENV ~
https://dk521123.hatenablog.com/entry/2023/12/29/000840

で、各Stepで値を受け渡す「$GITHUB_ENV」を取り上げたが
今回は、Job間の値の受け渡しに使う「$GITHUB_OUTPUT」について扱う

目次

【1】GITHUB_OUTPUT
【2】使用方法
 1)出力パラメータの設定
 2)Step間の受け渡し
 3)ジョブの出力の定義
【3】Tips
 1)add-mask

【1】GITHUB_OUTPUT

https://docs.github.com/ja/actions/using-workflows/workflow-commands-for-github-actions

* Job間の値の受け渡しに使う

【2】使用方法

1)出力パラメータの設定

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

echo "{name}={value}" >> "$GITHUB_OUTPUT"

2)Step間の受け渡し

https://docs.github.com/ja/actions/using-workflows/workflow-commands-for-github-actions#example-of-setting-an-output-parameter

      - name: Set color
        id: color-selector
        run: echo "SELECTED_COLOR=green" >> "$GITHUB_OUTPUT" # ★設定
      - name: Get color
        env:
          SELECTED_COLOR: ${{ steps.color-selector.outputs.SELECTED_COLOR }} # ★呼び出し
        run: echo "The selected color is $SELECTED_COLOR"

3)ジョブの出力の定義

https://docs.github.com/ja/actions/using-jobs/defining-outputs-for-jobs

jobs:
  job1:
    runs-on: ubuntu-latest
    # Map a step output to a job output
    outputs:
      output1: ${{ steps.step1.outputs.test }} # ★ここ
      output2: ${{ steps.step2.outputs.test }} # ★ここ
    steps:
      - id: step1
        run: echo "test=hello" >> "$GITHUB_OUTPUT"
      - id: step2
        run: echo "test=world" >> "$GITHUB_OUTPUT"
  job2:
    runs-on: ubuntu-latest
    needs: job1
    steps:
      - env:
          OUTPUT1: ${{needs.job1.outputs.output1}}
          OUTPUT2: ${{needs.job1.outputs.output2}}
        run: echo "$OUTPUT1 $OUTPUT2"

【3】Tips

1)add-mask

https://docs.github.com/ja/actions/using-workflows/workflow-commands-for-github-actions#masking-a-value-in-a-log

* 値をマスクすることにより、
 文字列または値がログに出力されることを防ぐ

https://docs.github.com/ja/actions/using-workflows/workflow-commands-for-github-actions#example-masking-a-generated-output-within-a-single-job

on: push
jobs:
  generate-a-secret-output:
    runs-on: ubuntu-latest
    steps:
      - id: sets-a-secret
        name: Generate, mask, and output a secret
        run: |
          the_secret=$((RANDOM))
          echo "::add-mask::$the_secret" # ★ここ
          echo "secret-number=$the_secret" >> "$GITHUB_OUTPUT"

関連記事

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 ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2023/12/22/195715
Github Actions ~ GITHUB_ENV ~
https://dk521123.hatenablog.com/entry/2023/12/29/000840