Skip to main content

작업 간에 정보 전달

출력을 정의하여 한 작업에서 다른 작업으로 정보를 전달할 수 있습니다.

참고: GitHub 호스트 실행기는 현재 GitHub Enterprise Server에서 지원되지 않습니다. GitHub public roadmap에 예정된 향후 지원에 대해 자세히 알아볼 수 있습니다.

개요

jobs.<job_id>.outputs를 사용하여 작업 출력의 map을 만들 수 있습니다. 작업 출력은 이 작업에 의존하는 모든 다운스트림 작업에 사용할 수 있습니다. 작업 종속성 정의에 대한 자세한 내용은 jobs.<job_id>.needs를 참조하세요.

출력은 유니코드 문자열이며 최대 1MB일 수 있습니다. 워크플로 실행의 모든 출력 합계는 최대 50MB가 될 수 있습니다.

식을 포함하는 작업 출력은 각 작업의 끝에 있는 실행기에서 평가됩니다. 비밀이 포함된 출력은 실행기에서 수정되며 GitHub Actions로 보내지 않습니다.

출력에 비밀이 포함될 수 있으므로 “비밀이 포함될 수 있으므로 출력 {output.Key}를 건너뜁니다.”와 같은 경고 메시지가 표시됩니다. 비밀을 처리하는 방법에 대한 자세한 내용은 예시: 작업 또는 워크플로 간에 비밀 마스킹 및 전달을 참조하세요.

종속 작업에서 작업 출력을 사용하려면 needs 컨텍스트를 사용할 수 있습니다. 자세한 내용은 "워크플로 실행에 대한 컨텍스트 정보에 액세스"을(를) 참조하세요.

예: 작업 출력 정의

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"

행렬형 작업에서 작업 출력 사용

행렬형은 서로 다른 이름의 여러 출력을 생성하는 데 사용할 수 있습니다. 행렬형을 사용하는 경우 행렬형 내의 모든 작업에서 작업 출력이 결합됩니다.

jobs:
  job1:
    runs-on: ubuntu-latest
    outputs:
      output_1: ${{ steps.gen_output.outputs.output_1 }}
      output_2: ${{ steps.gen_output.outputs.output_2 }}
      output_3: ${{ steps.gen_output.outputs.output_3 }}
    strategy:
      matrix:
        version: [1, 2, 3]
    steps:
      - name: Generate output
        id: gen_output
        run: |
          version="${{ matrix.version }}"
          echo "output_${version}=${version}" >> "$GITHUB_OUTPUT"
  job2:
    runs-on: ubuntu-latest
    needs: [job1]
    steps:
      # Will show
      # {
      #   "output_1": "1",
      #   "output_2": "2",
      #   "output_3": "3"
      # }
      - run: echo '${{ toJSON(needs.job1.outputs) }}'
작업은 행렬형 작업이 실행되는 순서를 보장하지 않습니다. 출력 이름이 고유한지 확인하고, 그렇지 않으면 실행되는 마지막 행렬형 작업이 출력 값을 재정의합니다.