Skip to main content

워크플로 실행에 대한 컨텍스트 정보에 액세스

워크플로 및 작업에서 컨텍스트 정보에 액세스할 수 있습니다.

컨텍스트 정보

컨텍스트는 워크플로 실행, 변수, 실행기 환경, 작업 및 단계에 대한 정보에 액세스하는 방법입니다. 각 컨텍스트는 문자열 또는 다른 개체일 수 있는 속성을 포함하는 개체입니다.

컨텍스트, 개체 및 속성은 워크플로 실행 조건마다 크게 달라집니다. 예를 들어 matrix 컨텍스트는 행렬의 작업에 대해서만 채워집니다.

식 구문을 사용하여 컨텍스트에 액세스할 수 있습니다. 자세한 내용은 "워크플로 및 작업에서 식 평가"을 참조하세요.

${{ <context> }}

Warning

워크플로 및 작업을 만들 때 코드가 가능한 공격자로부터 신뢰할 수 없는 입력을 실행할 수 있는지 항상 고려해야 합니다. 공격자가 자신의 악성 콘텐츠를 삽입할 수 있으므로 특정 컨텍스트는 신뢰할 수 없는 입력으로 처리되어야 합니다. 자세한 내용은 "GitHub Actions에 대한 보안 강화" 항목을 참조하세요.

컨텍스트 이름형식설명
githubobject워크플로 실행에 대한 정보입니다. 자세한 내용은 github컨텍스트를 참조하세요.
envobject워크플로, 작업 또는 단계에 설정된 변수를 포함합니다. 자세한 내용은 env컨텍스트를 참조하세요.
varsobject리포지토리, 조직 또는 환경 수준에서 설정된 변수를 포함합니다. 자세한 내용은 vars컨텍스트를 참조하세요.
jobobject현재 실행 중인 작업에 대한 정보입니다. 자세한 내용은 job컨텍스트를 참조하세요.
jobsobject재사용 가능한 워크플로의 경우에만 재사용 가능한 워크플로의 작업 출력을 포함합니다. 자세한 내용은 jobs컨텍스트를 참조하세요.
stepsobject현재 작업에서 실행된 단계에 대한 정보입니다. 자세한 내용은 steps컨텍스트를 참조하세요.
runnerobject현재 작업을 실행하는 실행기 정보입니다. 자세한 내용은 runner컨텍스트를 참조하세요.
secretsobject워크플로 실행에 사용할 수 있는 비밀의 이름과 값을 포함합니다. 자세한 내용은 secrets컨텍스트를 참조하세요.
strategyobject현재 작업에 대한 행렬 실행 전략에 대한 정보입니다. 자세한 내용은 strategy컨텍스트를 참조하세요.
matrixobject현재 작업에 적용되는 워크플로에 정의된 행렬 속성을 포함합니다. 자세한 내용은 matrix컨텍스트를 참조하세요.
needsobject현재 작업의 종속성으로 정의된 모든 작업의 출력을 포함합니다. 자세한 내용은 needs컨텍스트를 참조하세요.
inputsobject재사용 가능하거나 수동으로 트리거된 워크플로의 입력을 포함합니다. 자세한 내용은 inputs컨텍스트를 참조하세요.

식의 일부로 두 구문 중 하나를 사용하여 컨텍스트 정보에 액세스할 수 있습니다.

  • 인덱스 구문: github['sha']
  • 속성 역참조 구문: github.sha

속성 역참조 구문을 사용하려면 속성 이름이 문자 또는 _로 시작하거나 영숫자 문자, - 또는 _만 포함해야 합니다.

존재하지 않는 속성을 역참조하려고 하면 빈 문자열로 평가됩니다.

컨텍스트를 사용할 시기 결정

GitHub Actions에는 _컨텍스트_라는 변수 컬렉션과 _기본 변수_라는 유사한 변수 컬렉션이 포함되어 있습니다. 이러한 변수는 워크플로의 여러 지점에서 사용하기 위한 것입니다.

  • 기본 환경 변수: 이러한 환경 변수는 작업을 실행하는 실행기에서만 존재합니다. 자세한 내용은 "변수에 정보 저장"을 참조하세요.
  • 컨텍스트: _기본 변수_를 사용할 수 없는 경우를 비롯한 대부분의 컨텍스트를 워크플로의 모든 지점에서 사용할 수 있습니다. 예를 들어 작업이 실행을 위해 실행기로 라우팅되기 전에 식과 함께 컨텍스트를 사용하여 초기 처리를 수행할 수 있습니다. 이렇게 하면 조건부 if 키워드가 포함된 컨텍스트를 사용하여 단계를 실행할지 여부를 결정할 수 있습니다. 작업이 실행되면 작업을 실행하는 실행기에서 컨텍스트 변수를 검색할 수도 있습니다(예시: runner.os). 워크플로 내에서 다양한 컨텍스트를 사용할 수 있는 위치에 대한 자세한 내용은 "컨텍스트 가용성"을 참조하세요.

다음 예시에서는 이러한 다양한 유형의 변수를 작업에서 함께 사용하는 방법을 보여 줍니다.

YAML
name: CI
on: push
jobs:
  prod-check:
    if: ${{ github.ref == 'refs/heads/main' }}
    runs-on: ubuntu-latest
    steps:
      - run: echo "Deploying to production server on branch $GITHUB_REF"

이 예시에서 if 문은 github.ref 컨텍스트를 검사하여 현재 분기 이름을 확인합니다. 이름이 refs/heads/main이면 후속 단계가 실행됩니다. if 확인은 GitHub Actions에 의해 처리되며, 결과가 true이면 작업은 실행기로만 전송됩니다. 작업이 실행기로 전송되면 단계가 실행되고 실행기의 $GITHUB_REF 변수를 참조합니다.

컨텍스트 가용성

워크플로 실행 전체에서 다양한 컨텍스트를 사용할 수 있습니다. 예를 들어 secrets 컨텍스트는 작업 내의 특정 위치에서만 사용할 수 있습니다.

또한 일부 함수는 특정 위치에서만 사용할 수 있습니다. 예를 들어 hashFiles 함수는 아무 데서도 사용할 수 없습니다.

다음 표에는 워크플로 내에서 각 컨텍스트 및 특수 함수를 사용할 수 있는 위치에 대한 제한 사항이 나열되어 있습니다. 나열된 컨텍스트는 지정된 워크플로 키에 대해서만 사용할 수 있으며 다른 곳에는 사용할 수 없습니다. 아래에 나열되어 있지 않은 함수는 어디에서나 사용할 수 있습니다.

워크플로 키Context특수 함수
run-namegithub, inputs, varsNone
concurrencygithub, inputs, varsNone
envgithub, secrets, inputs, varsNone
jobs.<job_id>.concurrencygithub, needs, strategy, matrix, inputs, varsNone
jobs.<job_id>.containergithub, needs, strategy, matrix, vars, inputsNone
jobs.<job_id>.container.credentialsgithub, needs, strategy, matrix, env, vars, secrets, inputsNone
jobs.<job_id>.container.env.<env_id>github, needs, strategy, matrix, job, runner, env, vars, secrets, inputsNone
jobs.<job_id>.container.imagegithub, needs, strategy, matrix, vars, inputsNone
jobs.<job_id>.continue-on-errorgithub, needs, strategy, vars, matrix, inputsNone
jobs.<job_id>.defaults.rungithub, needs, strategy, matrix, env, vars, inputsNone
jobs.<job_id>.envgithub, needs, strategy, matrix, vars, secrets, inputsNone
jobs.<job_id>.environmentgithub, needs, strategy, matrix, vars, inputsNone
jobs.<job_id>.environment.urlgithub, needs, strategy, matrix, job, runner, env, vars, steps, inputsNone
jobs.<job_id>.ifgithub, needs, vars, inputsalways, cancelled, success, failure
jobs.<job_id>.namegithub, needs, strategy, matrix, vars, inputsNone
jobs.<job_id>.outputs.<output_id>github, needs, strategy, matrix, job, runner, env, vars, secrets, steps, inputsNone
jobs.<job_id>.runs-ongithub, needs, strategy, matrix, vars, inputsNone
jobs.<job_id>.secrets.<secrets_id>github, needs, strategy, matrix, secrets, inputs, varsNone
jobs.<job_id>.servicesgithub, needs, strategy, matrix, vars, inputsNone
jobs.<job_id>.services.<service_id>.credentialsgithub, needs, strategy, matrix, env, vars, secrets, inputsNone
jobs.<job_id>.services.<service_id>.env.<env_id>github, needs, strategy, matrix, job, runner, env, vars, secrets, inputsNone
jobs.<job_id>.steps.continue-on-errorgithub, needs, strategy, matrix, job, runner, env, vars, secrets, steps, inputshashFiles
jobs.<job_id>.steps.envgithub, needs, strategy, matrix, job, runner, env, vars, secrets, steps, inputshashFiles
jobs.<job_id>.steps.ifgithub, needs, strategy, matrix, job, runner, env, vars, steps, inputsalways, cancelled, success, failure, hashFiles
jobs.<job_id>.steps.namegithub, needs, strategy, matrix, job, runner, env, vars, secrets, steps, inputshashFiles
jobs.<job_id>.steps.rungithub, needs, strategy, matrix, job, runner, env, vars, secrets, steps, inputshashFiles
jobs.<job_id>.steps.timeout-minutesgithub, needs, strategy, matrix, job, runner, env, vars, secrets, steps, inputshashFiles
jobs.<job_id>.steps.withgithub, needs, strategy, matrix, job, runner, env, vars, secrets, steps, inputshashFiles
jobs.<job_id>.steps.working-directorygithub, needs, strategy, matrix, job, runner, env, vars, secrets, steps, inputshashFiles
jobs.<job_id>.strategygithub, needs, vars, inputsNone
jobs.<job_id>.timeout-minutesgithub, needs, strategy, matrix, vars, inputsNone
jobs.<job_id>.with.<with_id>github, needs, strategy, matrix, inputs, varsNone
on.workflow_call.inputs.<inputs_id>.defaultgithub, inputs, varsNone
on.workflow_call.outputs.<output_id>.valuegithub, jobs, vars, inputsNone

예시: 로그에 컨텍스트 정보 출력

디버깅을 위해 컨텍스트의 콘텐츠를 로그에 출력할 수 있습니다. toJSON 함수는 JSON 개체를 로그에 출력하는 데 필요합니다.

경고: 전체 github 컨텍스트를 사용할 때는 중요한 정보(예: github.token)가 포함된다는 점을 염두에 두어야 합니다. GitHub은(는) 비밀을 콘솔에 인쇄할 때 마스킹하지만 컨텍스트를 내보내거나 인쇄할 때는 주의해야 합니다.

YAML
name: Context testing
on: push

jobs:
  dump_contexts_to_log:
    runs-on: ubuntu-latest
    steps:
      - name: Dump GitHub context
        env:
          GITHUB_CONTEXT: ${{ toJson(github) }}
        run: echo "$GITHUB_CONTEXT"
      - name: Dump job context
        env:
          JOB_CONTEXT: ${{ toJson(job) }}
        run: echo "$JOB_CONTEXT"
      - name: Dump steps context
        env:
          STEPS_CONTEXT: ${{ toJson(steps) }}
        run: echo "$STEPS_CONTEXT"
      - name: Dump runner context
        env:
          RUNNER_CONTEXT: ${{ toJson(runner) }}
        run: echo "$RUNNER_CONTEXT"
      - name: Dump strategy context
        env:
          STRATEGY_CONTEXT: ${{ toJson(strategy) }}
        run: echo "$STRATEGY_CONTEXT"
      - name: Dump matrix context
        env:
          MATRIX_CONTEXT: ${{ toJson(matrix) }}
        run: echo "$MATRIX_CONTEXT"

github 컨텍스트

github 컨텍스트에는 워크플로 실행 및 실행을 트리거한 이벤트에 대한 정보가 포함됩니다. 환경 변수에서 대부분의 github 컨텍스트 데이터를 읽을 수도 있습니다. 환경 변수에 대한 자세한 내용은 "변수에 정보 저장" 항목을 참조하세요.

경고: 전체 github 컨텍스트를 사용할 때는 중요한 정보(예: github.token)가 포함된다는 점을 염두에 두어야 합니다. GitHub은(는) 비밀을 콘솔에 인쇄할 때 마스킹하지만 컨텍스트를 내보내거나 인쇄할 때는 주의해야 합니다.

> [!WARNING] > 워크플로 및 작업을 만들 때 코드가 가능한 공격자로부터 신뢰할 수 없는 입력을 실행할 수 있는지 항상 고려해야 합니다. 공격자가 자신의 악성 콘텐츠를 삽입할 수 있으므로 특정 컨텍스트는 신뢰할 수 없는 입력으로 처리되어야 합니다. 자세한 내용은 "[AUTOTITLE](/actions/security-guides/security-hardening-for-github-actions#understanding-the-risk-of-script-injections)" 항목을 참조하세요.
Property name형식설명
githubobject워크플로의 모든 작업 또는 단계 중에 사용할 수 있는 최상위 컨텍스트입니다. 이 개체에는 아래에 나열된 모든 속성이 포함됩니다.
github.actionstring현재 실행 중인 작업의 이름 또는 단계의 id입니다. GitHub은(는) 특수 문자를 제거하고 현재 단계에서 스크립트를 실행할 때 id 없이 __run 이름을 사용합니다. 동일한 작업에서 동일한 동작을 두 번 이상 사용하는 경우 이름 앞에 밑줄이 있는 시퀀스 번호가 있는 접미사가 포함됩니다. 예를 들어 실행하는 첫 번째 스크립트에는 이름이 __run으로 지정되고 두 번째 스크립트의 이름은 __run_2로 지정됩니다. 마찬가지로 두 번째 actions/checkout 호출은 actionscheckout2입니다.
github.action_pathstring작업이 있는 경로입니다. 이 속성은 복합 작업에서만 지원됩니다. 예를 들어 디렉터리를 cd ${{ github.action_path }} 경로로 변경하여 작업과 동일한 리포지토리에 있는 파일에 액세스할 수 있습니다.
github.action_refstring작업을 실행하는 단계의 경우 실행 중인 작업의 참조입니다. 예들 들어 v2입니다.

run 키워드를 사용하지 마세요. 이 컨텍스트를 복합 작업에서 작동하도록 하려면 복합 작업의 env 컨텍스트 내에서 참조합니다.
github.action_repositorystring작업을 실행하는 단계의 경우 작업의 소유자 및 리포지토리 이름입니다. 예들 들어 actions/checkout입니다.

run 키워드를 사용하지 마세요. 이 컨텍스트를 복합 작업에서 작동하도록 하려면 복합 작업의 env 컨텍스트 내에서 참조합니다.
github.action_statusstring복합 작업의 경우 복합 작업의 현재 결과입니다.
github.actorstring처음 워크플로 실행을 트리거한 사용자의 사용자 이름입니다. 워크플로 실행이 다시 실행인 경우 이 값은 github.triggering_actor와 다를 수 있습니다. 다시 실행을 시작하는 행위자(github.triggering_actor)가 다른 권한을 갖고 있더라도 모든 워크플로 다시 실행은 github.actor의 권한을 사용합니다.
github.actor_idstring최초로 워크플로 실행을 트리거한 사용자 또는 앱의 계정 ID입니다. 예들 들어 1234567입니다. 행위자 사용자 이름과는 다릅니다.
github.api_urlstringGitHub REST API의 URL입니다.
github.base_refstring워크플로 실행에서 끌어오기 요청의 base_ref 또는 대상 분기입니다. 이 속성은 워크플로 실행을 트리거하는 이벤트가 pull_request 또는 pull_request_target인 경우에만 사용할 수 있습니다.
github.envstring실행기에서 워크플로 명령의 환경 변수를 설정하는 파일의 경로입니다. 이 파일은 현재 단계에 고유하며 작업의 각 단계에 대해 다른 파일입니다. 자세한 내용은 "GitHub Actions에 대한 워크플로 명령"을(를) 참조하세요.
github.eventobject전체 이벤트 웹후크 페이로드입니다. 이 컨텍스트를 사용하여 이벤트의 개별 속성에 액세스할 수 있습니다. 이 개체는 워크플로 실행을 트리거한 이벤트의 웹후크 페이로드와 동일하며 각 이벤트에 대해 다릅니다. 각 GitHub Actions 이벤트에 대한 웹후크는 "워크플로를 트리거하는 이벤트"에 연결됩니다. 예를 들어 push 이벤트에 의해 트리거되는 워크플로 실행의 경우 이 개체에는 푸시 웹후크 페이로드의 내용이 포함됩니다.
github.event_namestring워크플로 실행을 트리거한 이벤트의 이름입니다.
github.event_pathstring전체 이벤트 웹후크 페이로드가 포함된 실행기에서 파일의 경로입니다.
github.graphql_urlstringGitHub GraphQL API의 URL입니다.
github.head_refstring워크플로 실행에서 끌어오기 요청의 head_ref 또는 소스 분기입니다. 이 속성은 워크플로 실행을 트리거하는 이벤트가 pull_request 또는 pull_request_target인 경우에만 사용할 수 있습니다.
github.jobstring현재 작업의 job_id입니다.
참고: 이 컨텍스트 속성은 Actions 실행기에서 설정되며 작업의 실행 steps 내에서만 사용할 수 있습니다. 그렇지 않으면 이 속성의 값이 null이 됩니다.
github.pathstring워크플로 명령에서 시스템 PATH 변수를 설정하는 파일에 대한 실행기의 경로입니다. 이 파일은 현재 단계에 고유하며 작업의 각 단계에 대해 다른 파일입니다. 자세한 내용은 "GitHub Actions에 대한 워크플로 명령"을(를) 참조하세요.
github.refstring워크플로 실행을 트리거한 분기 또는 태그의 완전한 형식 참조 입니다. push에 의해 트리거된 워크플로의 경우 푸시된 분기 또는 태그 참조입니다. pull_request에 의해 트리거된 워크플로의 경우 끌어오기 요청 병합 분기입니다. release에 의해 트리거된 워크플로의 경우 생성된 릴리스 태그입니다. 다른 트리거의 경우 워크플로 실행을 트리거한 분기 또는 태그 참조입니다. 이벤트 유형에 대해 분기 또는 태그를 사용할 수 있는 경우에만 설정됩니다. 지정된 참조는 완전한 형식을 가집니다. 즉, 분기의 경우 refs/heads/<branch_name>, 끌어오기 요청의 경우 refs/pull/<pr_number>/merge, 태그의 경우 refs/tags/<tag_name> 형식을 따릅니다. 예들 들어 refs/heads/feature-branch-1입니다.
github.ref_namestring워크플로 실행을 트리거한 분기 또는 태그입니다. 해당 값은 GitHub에 표시된 분기 또는 태그 이름과 일치합니다. 예들 들어 feature-branch-1입니다.

끌어오기 요청의 경우 형식은 <pr_number>/merge입니다.
github.ref_protectedboolean분기 보호가 또는 규칙 집합이 워크플로 실행을 트리거한 ref에 대해 구성된 경우 true입니다.
github.ref_typestring워크플로 실행을 트리거한 ref의 형식입니다. 유효한 값은 branch 또는 tag입니다.
github.repositorystring소유자 및 리포지토리 이름입니다. 예들 들어 octocat/Hello-World입니다.
github.repository_idstring리포지토리 ID. 예들 들어 123456789입니다. 리포지토리 이름과는 다릅니다.
github.repository_ownerstring리포지토리 소유자의 사용자 이름입니다. 예들 들어 octocat입니다.
github.repository_owner_idstring리포지토리 소유자 계정 ID. 예들 들어 1234567입니다. 소유자의 이름과는 다른 값입니다.
github.repositoryUrlstring리포지토리에 대한 Git URL입니다. 예들 들어 git://github.com/octocat/hello-world.git입니다.
github.retention_daysstring워크플로 실행 로그 및 아티팩트가 유지되는 일 수입니다.
github.run_idstring리포지토리 내에서 실행되는 각 워크플로의 고유한 숫자입니다. 워크플로 실행을 다시 실행하는 경우 이 숫자는 변경되지 않습니다.
github.run_numberstring리포지토리에 있는 특정 워크플로의 실행마다 고유한 숫자입니다. 이 숫자는 워크플로의 첫 실행 시 1부터 시작하며 새 실행마다 증가합니다. 워크플로 실행을 다시 실행하는 경우 이 숫자는 변경되지 않습니다.
github.run_attemptstring리포지토리 내 각 특정 워크플로 실행 시도의 고유한 번호입니다. 이 숫자는 워크플로의 실행의 첫 시도 시 1부터 시작하며 다시 실행할 때마다 증가합니다.
github.secret_sourcestring워크플로에 사용되는 비밀의 소스입니다. 가능한 값은 None, Actions, Codespaces, 또는 Dependabot입니다.
github.server_urlstringGitHub 서버의 URL입니다. 예시: https://github.com
github.shastring워크플로를 트리거한 커밋 SHA입니다. 이 커밋 SHA의 값은 워크플로를 트리거한 이벤트에 따라 달라집니다. 자세한 내용은 "워크플로를 트리거하는 이벤트"을(를) 참조하세요. 예들 들어 ffac537e6cbbf934b08745a378932722df287a53입니다.
github.tokenstring리포지토리에 설치된 GitHub 앱을 대신하여 인증할 토큰입니다. 기능적으로 GITHUB_TOKEN 비밀과 동일합니다. 자세한 내용은 "자동 토큰 인증"을 참조하세요.
참고: 이 컨텍스트 속성은 Actions 실행기에서 설정되며 작업의 실행 steps 내에서만 사용할 수 있습니다. 그렇지 않으면 이 속성의 값이 null이 됩니다.
github.triggering_actorstring워크플로 실행을 시작한 사용자의 사용자 이름입니다. 워크플로 실행이 다시 실행인 경우 이 값은 github.actor와 다를 수 있습니다. 다시 실행을 시작하는 행위자(github.triggering_actor)가 다른 권한을 갖고 있더라도 모든 워크플로 다시 실행은 github.actor의 권한을 사용합니다.
github.workflowstring워크플로의 이름입니다. 워크플로 파일이 name을 지정하지 않으면 이 속성의 값은 리포지토리에 있는 워크플로 파일의 전체 경로입니다.
github.workflow_refstring워크플로의 참조 경로입니다. 예들 들어 octocat/hello-world/.github/workflows/my-workflow.yml@refs/heads/my_branch입니다.
github.workflow_shastring워크플로 파일의 커밋 SHA입니다.
github.workspacestring단계에 대한 실행기의 기본 작업 디렉터리 및 checkout 작업을 사용할 때 리포지토리의 기본 위치입니다.

github 컨텍스트의 예시 콘텐츠

다음 예시 컨텍스트는 push 이벤트에 의해 트리거되는 워크플로 실행의 컨텍스트입니다. 이 예시의 event 개체는 웹후크 페이로드push의 내용과 동일하기 때문에 잘렸습니다.

참고: 이 컨텍스트는 예제일 뿐입니다. 컨텍스트의 내용은 실행 중인 워크플로에 따라 달라집니다. 컨텍스트, 개체 및 속성은 워크플로 실행 조건마다 크게 달라집니다.

{
  "token": "***",
  "job": "dump_contexts_to_log",
  "ref": "refs/heads/my_branch",
  "sha": "c27d339ee6075c1f744c5d4b200f7901aad2c369",
  "repository": "octocat/hello-world",
  "repository_owner": "octocat",
  "repositoryUrl": "git://github.com/octocat/hello-world.git",
  "run_id": "1536140711",
  "run_number": "314",
  "retention_days": "90",
  "run_attempt": "1",
  "actor": "octocat",
  "workflow": "Context testing",
  "head_ref": "",
  "base_ref": "",
  "event_name": "push",
  "event": {
    ...
  },
  "server_url": "https://github.com",
  "api_url": "https://api.github.com",
  "graphql_url": "https://api.github.com/graphql",
  "ref_name": "my_branch",
  "ref_protected": false,
  "ref_type": "branch",
  "secret_source": "Actions",
  "workspace": "/home/runner/work/hello-world/hello-world",
  "action": "github_step",
  "event_path": "/home/runner/work/_temp/_github_workflow/event.json",
  "action_repository": "",
  "action_ref": "",
  "path": "/home/runner/work/_temp/_runner_file_commands/add_path_b037e7b5-1c88-48e2-bf78-eaaab5e02602",
  "env": "/home/runner/work/_temp/_runner_file_commands/set_env_b037e7b5-1c88-48e2-bf78-eaaab5e02602"
}

github 컨텍스트의 사용 예시

이 예시 워크플로는 pull_request 이벤트에 의해 워크플로 실행이 트리거된 경우에만 github.event_name 컨텍스트를 사용하여 작업을 실행합니다.

YAML
name: Run CI
on: [push, pull_request]

jobs:
  normal_ci:
    runs-on: ubuntu-latest
    steps:
      - name: Run normal CI
        run: echo "Running normal CI"

  pull_request_ci:
    runs-on: ubuntu-latest
    if: ${{ github.event_name == 'pull_request' }}
    steps:
      - name: Run PR CI
        run: echo "Running PR only CI"

env 컨텍스트

env 컨텍스트에는 워크플로, 작업 또는 단계에서 설정된 변수가 포함됩니다. 실행기 프로세스가 상속하는 변수는 포함되지 않습니다. 워크플로에서 변수를 설정하는 것에 대한 자세한 내용은 "GitHub Actions에 대한 워크플로 구문" 항목을 참조하세요.

env 컨텍스트에 저장된 변수의 값을 검색하여 워크플로 파일에서 이러한 값을 사용할 수 있습니다. 워크플로 단계의 모든 키에서 env 컨텍스트를 사용할 수 있습니다. 단, iduses 키는 제외됩니다. 단계 구문에 대한 자세한 내용은 "GitHub Actions에 대한 워크플로 구문" 항목을 참조하세요.

실행기 내에서 변수 값을 사용하려면 실행기 운영 체제의 일반 메서드를 사용하여 환경 변수를 읽습니다.

Property name형식설명
envobject이 컨텍스트는 작업의 각 단계에 따라 변경됩니다. 작업의 모든 단계에서 이 컨텍스트에 액세스할 수 있습니다. 이 개체에는 아래에 나열된 속성이 포함되어 있습니다.
env.<env_name>string특정 환경 변수의 값입니다.

env 컨텍스트의 예시 콘텐츠

env 컨텍스트의 내용은 변수 이름을 해당 값에 매핑한 것입니다. 컨텍스트의 내용은 워크플로 실행에서 사용되는 위치에 따라 변경됩니다. 이 예시에서 env 컨텍스트에는 두 개의 변수가 포함됩니다.

{
  "first_name": "Mona",
  "super_duper_var": "totally_awesome"
}

env 컨텍스트의 사용 예시

이 예시 워크플로는 워크플로, 작업, 단계 수준의 env 컨텍스트에서 설정되는 변수를 보여줍니다. 그런 다음 ${{ env.VARIABLE-NAME }} 구문을 사용하여 워크플로의 개별 단계 내에서 변수 값을 검색합니다.

둘 이상의 변수가 동일한 이름으로 정의되면 GitHub는 가장 구체적인 환경 변수를 사용합니다. 예를 들어 단계에 정의된 환경 변수는 단계가 실행되는 동안 동일한 이름의 작업 및 워크플로 환경 변수를 재정의합니다. 작업에 정의된 환경 변수는 작업이 실행되는 동안 동일한 이름의 워크플로 변수를 재정의합니다.

YAML
name: Hi Mascot
on: push
env:
  mascot: Mona
  super_duper_var: totally_awesome

jobs:
  windows_job:
    runs-on: windows-latest
    steps:
      - run: echo 'Hi ${{ env.mascot }}'  # Hi Mona
      - run: echo 'Hi ${{ env.mascot }}'  # Hi Octocat
        env:
          mascot: Octocat
  linux_job:
    runs-on: ubuntu-latest
    env:
      mascot: Tux
    steps:
      - run: echo 'Hi ${{ env.mascot }}'  # Hi Tux

vars 컨텍스트

참고: GitHub Actions에 대한 구성 변수는 공개 미리 보기 버전이며 변경될 수 있습니다.

vars 컨텍스트에는 조직, 리포지토리, 환경 수준에서 설정된 사용자 지정 구성 변수가 포함됩니다. 여러 워크플로에서 사용할 구성 변수를 정의하는 방법에 대한 자세한 내용은 "변수에 정보 저장" 항목을 참조하세요.

vars 컨텍스트의 예시 콘텐츠

vars 컨텍스트의 내용은 구성 변수 이름을 해당 값에 매핑한 것입니다.

{
  "mascot": "Mona"
}

vars 컨텍스트의 사용 예시

이 예시 워크플로에서는 vars 컨텍스트를 사용하여 리포지토리, 환경 또는 조직 수준에서 설정된 구성 변수를 자동으로 사용할 수 있는 방법을 보여 줍니다.

Note

환경 수준의 구성 변수는 실행기에서 해당 환경을 선언한 후에 자동으로 사용할 수 있습니다.

구성 변수가 설정되지 않은 경우, 변수를 참조하는 컨텍스트는 빈 문자열을 반환합니다.

다음 예제는 워크플로 전체에서 vars 컨텍스트와 함께 구성 변수를 사용하는 방법을 나타냅니다. 다음 각각의 구성 변수는 리포지토리, 조직 또는 환경 수준에서 정의되었습니다.

YAML
on:
  workflow_dispatch:
env:
  # Setting an environment variable with the value of a configuration variable
  env_var: ${{ vars.ENV_CONTEXT_VAR }}

jobs:
  display-variables:
    name: ${{ vars.JOB_NAME }}
    # You can use configuration variables with the `vars` context for dynamic jobs
    if: ${{ vars.USE_VARIABLES == 'true' }}
    runs-on: ${{ vars.RUNNER }}
    environment: ${{ vars.ENVIRONMENT_STAGE }}
    steps:
    - name: Use variables
      run: |
        echo "repository variable : $REPOSITORY_VAR"
        echo "organization variable : $ORGANIZATION_VAR"
        echo "overridden variable : $OVERRIDE_VAR"
        echo "variable from shell environment : $env_var"
      env:
        REPOSITORY_VAR: ${{ vars.REPOSITORY_VAR }}
        ORGANIZATION_VAR: ${{ vars.ORGANIZATION_VAR }}
        OVERRIDE_VAR: ${{ vars.OVERRIDE_VAR }}
        
    - name: ${{ vars.HELLO_WORLD_STEP }}
      if: ${{ vars.HELLO_WORLD_ENABLED == 'true' }}
      uses: actions/hello-world-javascript-action@main
      with:
        who-to-greet: ${{ vars.GREET_NAME }}

job 컨텍스트

job 컨텍스트에는 현재 실행 중인 작업에 대한 정보가 포함됩니다.

Property name형식설명
jobobject이 컨텍스트는 워크플로 실행의 각 작업에 대해 변경됩니다. 작업의 모든 단계에서 이 컨텍스트에 액세스할 수 있습니다. 이 개체에는 아래에 나열된 모든 속성이 포함됩니다.
job.containerobject작업의 컨테이너에 대한 정보입니다. 컨테이너에 대한 자세한 내용은 "GitHub Actions에 대한 워크플로 구문" 항목을 참조하세요.
job.container.idstring컨테이너의 ID입니다.
job.container.networkstring컨테이너 네트워크의 ID입니다. 실행기는 작업의 모든 컨테이너에서 사용하는 네트워크를 만듭니다.
job.servicesobject작업에 대해 만든 서비스 컨테이너입니다. 서비스 컨테이너에 대한 자세한 내용은 "GitHub Actions에 대한 워크플로 구문" 항목을 참조하세요.
job.services.<service_id>.idstring서비스 컨테이너의 ID입니다.
job.services.<service_id>.networkstring서비스 컨테이너 네트워크의 ID입니다. 실행기는 작업의 모든 컨테이너에서 사용하는 네트워크를 만듭니다.
job.services.<service_id>.portsobject서비스 컨테이너의 노출된 포트입니다.
job.statusstring작업의 현재 상태입니다. 가능한 값은 success, failure 또는 cancelled입니다.

job 컨텍스트의 예시 콘텐츠

이 예시 job 컨텍스트는 매핑된 포트가 있는 PostgreSQL 서비스 컨테이너를 사용합니다. 작업에 사용되는 컨테이너 또는 서비스 컨테이너가 없는 경우 job 컨텍스트에는 status 속성만 포함됩니다.

{
  "status": "success",
  "container": {
    "network": "github_network_53269bd575974817b43f4733536b200c"
  },
  "services": {
    "postgres": {
      "id": "60972d9aa486605e66b0dad4abb638dc3d9116f566579e418166eedb8abb9105",
      "ports": {
        "5432": "49153"
      },
      "network": "github_network_53269bd575974817b43f4733536b200c"
    }
  }
}

job 컨텍스트의 사용 예시

이 예시 워크플로는 PostgreSQL 서비스 컨테이너를 구성하고 서비스 컨테이너의 포트 5432를 호스트에서 임의로 선택된 사용 가능한 포트에 자동으로 매핑합니다. job 컨텍스트는 호스트에 할당된 포트 수에 액세스하는 데 사용됩니다.

YAML
name: PostgreSQL Service Example
on: push
jobs:
  postgres-job:
    runs-on: ubuntu-latest
    services:
      postgres:
        image: postgres
        env:
          POSTGRES_PASSWORD: postgres
        options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
        ports:
          # Maps TCP port 5432 in the service container to a randomly chosen available port on the host.
          - 5432

    steps:
      - run: pg_isready -h localhost -p ${{ job.services.postgres.ports[5432] }}
      - run: echo "Run tests against Postgres"

jobs 컨텍스트

jobs 컨텍스트는 재사용 가능한 워크플로에서만 사용할 수 있으며 재사용 가능한 워크플로에 대한 출력을 설정하는 데만 사용할 수 있습니다. 자세한 내용은 "워크플로 다시 사용"을 참조하세요.

Property name형식설명
jobsobject이는 재사용 가능한 워크플로에서만 사용할 수 있으며 재사용 가능한 워크플로에 대한 출력을 설정하는 데만 사용할 수 있습니다. 이 개체에는 아래에 나열된 모든 속성이 포함됩니다.
jobs.<job_id>.resultstring재사용 가능한 워크플로의 작업 결과입니다. 가능한 값은 success, failure, cancelled 또는 skipped입니다.
jobs.<job_id>.outputsobject재사용 가능한 워크플로 작업의 출력 집합입니다.
jobs.<job_id>.outputs.<output_name>string재사용 가능한 워크플로의 작업에 대한 특정 출력 값입니다.

jobs 컨텍스트의 예시 콘텐츠

jobs 컨텍스트 예시는 재사용 가능한 워크플로 실행의 작업 결과와 출력을 포함합니다.

{
  "example_job": {
    "result": "success",
    "outputs": {
      "output1": "hello",
      "output2": "world"
    }
  }
}

jobs 컨텍스트의 사용 예시

이 재사용 가능한 워크플로 예시는 jobs 컨텍스트를 사용하여 재사용 가능한 워크플로에 대한 출력을 설정합니다. 출력이 단계에서, 작업으로, 그 다음에는 workflow_call 트리거로 이동하는 방식을 확인합니다. 자세한 내용은 "워크플로 다시 사용"을 참조하세요.

YAML
name: Reusable workflow

on:
  workflow_call:
    # Map the workflow outputs to job outputs
    outputs:
      firstword:
        description: "The first output string"
        value: ${{ jobs.example_job.outputs.output1 }}
      secondword:
        description: "The second output string"
        value: ${{ jobs.example_job.outputs.output2 }}

jobs:
  example_job:
    name: Generate output
    runs-on: ubuntu-latest
    # Map the job outputs to step outputs
    outputs:
      output1: ${{ steps.step1.outputs.firstword }}
      output2: ${{ steps.step2.outputs.secondword }}
    steps:
      - id: step1
        run: echo "firstword=hello" >> $GITHUB_OUTPUT
      - id: step2
        run: echo "secondword=world" >> $GITHUB_OUTPUT

steps 컨텍스트

steps 컨텍스트에는 지정되어 있고 이미 실행된 id 가 있는 현재 작업의 단계에 대한 정보가 포함됩니다.

Property name형식설명
stepsobject이 컨텍스트는 작업의 각 단계에 따라 변경됩니다. 작업의 모든 단계에서 이 컨텍스트에 액세스할 수 있습니다. 이 개체에는 아래에 나열된 모든 속성이 포함됩니다.
steps.<step_id>.outputsobject단계에 대해 정의된 출력 집합입니다. 자세한 내용은 "GitHub Actions에 대한 메타데이터 구문"을 참조하세요.
steps.<step_id>.conclusionstringcontinue-on-error가 적용된 후 완료된 단계의 결과입니다. 가능한 값은 success, failure, cancelled 또는 skipped입니다. continue-on-error 단계가 실패하면 outcomefailure이지만 최종 conclusionsuccess입니다.
steps.<step_id>.outcomestringcontinue-on-error가 적용되기 전 완료된 단계의 결과입니다. 가능한 값은 success, failure, cancelled 또는 skipped입니다. continue-on-error 단계가 실패하면 outcomefailure이지만 최종 conclusionsuccess입니다.
steps.<step_id>.outputs.<output_name>string특정 출력의 값입니다.

steps 컨텍스트의 예시 콘텐츠

이 예시 steps 컨텍스트는 지정된 id가 있는 두 개의 이전 단계를 보여줍니다. 첫 번째 단계에는 checkout이라는 id가, 두 번째 단계에는 generate_number가 있습니다. generate_number 단계에는 이름이 random_number인 출력이 있습니다.

{
  "checkout": {
    "outputs": {},
    "outcome": "success",
    "conclusion": "success"
  },
  "generate_number": {
    "outputs": {
      "random_number": "1"
    },
    "outcome": "success",
    "conclusion": "success"
  }
}

steps 컨텍스트의 사용 예시

이 예시 워크플로는 한 단계에서 난수를 출력으로 생성하고, 이후 단계에서는 steps 컨텍스트를 사용하여 해당 출력의 값을 읽습니다.

YAML
name: Generate random failure
on: push
jobs:
  randomly-failing-job:
    runs-on: ubuntu-latest
    steps:
      - name: Generate 0 or 1
        id: generate_number
        run:  echo "random_number=$(($RANDOM % 2))" >> $GITHUB_OUTPUT
      - name: Pass or fail
        run: |
          if [[ ${{ steps.generate_number.outputs.random_number }} == 0 ]]; then exit 0; else exit 1; fi

runner 컨텍스트

runner 컨텍스트에는 현재 작업을 실행하는 실행기 정보가 포함됩니다.

Property name형식설명
runnerobject이 컨텍스트는 워크플로 실행의 각 작업에 대해 변경됩니다. 이 개체에는 아래에 나열된 모든 속성이 포함됩니다.
runner.namestring작업을 실행하는 실행기의 이름입니다. 실행기 이름은 리포지토리의 실행기로 워크플로 실행 시 고유하지 않을 수 있으며 조직 수준에서 동일한 이름을 사용할 수 있습니다.
runner.osstring작업을 실행하는 실행기의 운영 체제입니다. 가능한 값은 Linux, Windows, 또는 macOS입니다.
runner.archstring작업을 실행하는 실행기의 아키텍처입니다. 가능한 값은 X86, X64, ARM, ARM64입니다.
runner.tempstring실행기의 임시 디렉터리에 대한 경로입니다. 이 디렉터리는 각 작업의 시작과 끝에 비워집니다. 실행기 사용자 계정에 삭제 권한이 없는 경우 파일이 제거되지 않습니다.
runner.tool_cachestringGitHub 호스팅 실행기에 대해 미리 설치된 도구가 포함된 디렉터리의 경로입니다. 자세한 내용은 "GitHub 호스팅 실행기 사용"을 참조하세요.
runner.debugstring디버그 로깅을 사용하도록 설정한 경우에만 설정되며 항상 값이 1입니다. 사용자 고유의 작업 단계에서 추가 디버깅 또는 자세한 로깅을 사용하도록 설정하는 지표로 유용할 수 있습니다.
runner.environmentstring작업을 실행하는 실행기의 환경입니다. 가능한 값은 GitHub에서 제공하는 GitHub 호스트형 실행기의 경우 github-hosted, 리포지토리 소유자가 구성한 자체 호스트형 실행기의 경우 self-hosted입니다.

runner 컨텍스트의 예시 콘텐츠

다음 예시 컨텍스트는 Linux GitHub에서 호스트된 실행기에서 가져옵니다.

{
  "os": "Linux",
  "arch": "X64",
  "name": "GitHub Actions 2",
  "tool_cache": "/opt/hostedtoolcache",
  "temp": "/home/runner/work/_temp"
}

runner 컨텍스트의 사용 예시

이 예시 워크플로는 runner 컨텍스트를 사용하여 임시 디렉터리의 경로를 설정하여 로그를 작성하고, 워크플로가 실패하면 해당 로그를 아티팩트로 업로드합니다.

YAML
name: Build
on: push

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Build with logs
        run: |
          mkdir ${{ runner.temp }}/build_logs
          echo "Logs from building" > ${{ runner.temp }}/build_logs/build.logs
          exit 1
      - name: Upload logs on fail
        if: ${{ failure() }}
        uses: actions/upload-artifact@v4
        with:
          name: Build failure logs
          path: ${{ runner.temp }}/build_logs

secrets 컨텍스트

secrets 컨텍스트는 워크플로 실행에 사용할 수 있는 비밀의 이름과 값을 포함합니다. 보안상의 이유로 복합 작업에는 secrets 컨텍스트를 사용할 수 없습니다. 복합 작업에 비밀을 전달하려는 경우 명시적으로 입력을 통해 수행해야 합니다. 비밀에 대한 자세한 내용은 "GitHub Actions에서 비밀 사용" 항목을 참조하세요.

GITHUB_TOKEN은 모든 워크플로 실행에 대해 자동으로 만들어지고 항상 secrets 컨텍스트에 포함되는 비밀입니다. 자세한 내용은 "자동 토큰 인증"을 참조하세요.

경고: 작업에서 비밀이 사용된 경우 GitHub는 로그에 출력된 비밀을 자동으로 수정합니다. 의도적으로 로그에 비밀을 출력하지 않아야 합니다.

Property name형식설명
secretsobject이 컨텍스트는 워크플로 실행의 각 작업에 대해 동일합니다. 작업의 모든 단계에서 이 컨텍스트에 액세스할 수 있습니다. 이 개체에는 아래에 나열된 모든 속성이 포함됩니다.
secrets.GITHUB_TOKENstring각 워크플로 실행에 대해 자동으로 생성된 토큰입니다. 자세한 내용은 "자동 토큰 인증"을 참조하세요.
secrets.<secret_name>string특정 비밀의 값입니다.

secrets 컨텍스트의 예시 콘텐츠

secrets 컨텍스트의 다음 예시 콘텐츠는 자동 GITHUB_TOKEN 및 워크플로 실행에 사용할 수 있는 두 개의 다른 비밀을 보여줍니다.

{
  "github_token": "***",
  "NPM_TOKEN": "***",
  "SUPERSECRET": "***"
}

secrets 컨텍스트의 사용 예시

이 예제 워크플로는 GH_TOKEN 입력 매개 변수의 값으로 GITHUB_TOKEN이 필요한 GitHub CLI를 사용합니다.

YAML
name: Open new issue
on: workflow_dispatch

jobs:
  open-issue:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      issues: write
    steps:
      - run: |
          gh issue --repo ${{ github.repository }} \
            create --title "Issue title" --body "Issue body"
        env:
          GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

strategy 컨텍스트

행렬이 있는 워크플로의 경우 strategy 컨텍스트에는 현재 작업에 대한 행렬 실행 전략에 대한 정보가 포함됩니다.

Property name형식설명
strategyobject이 컨텍스트는 워크플로 실행의 각 작업에 대해 변경됩니다. 워크플로의 모든 작업 또는 단계에서 이 컨텍스트에 액세스할 수 있습니다. 이 개체에는 아래에 나열된 모든 속성이 포함됩니다.
strategy.fail-fastboolean이 값이 true로 평가되는 경우 행렬의 작업이 실패하면 진행 중인 모든 작업이 취소됩니다. 자세한 내용은 "GitHub Actions에 대한 워크플로 구문"을(를) 참조하세요.
strategy.job-indexnumber행렬의 현재 작업의 인덱스입니다. 참고: 이 숫자는 0부터 시작합니다. 행렬의 첫 번째 작업 인덱스는 0입니다.
strategy.job-totalnumber행렬의 총 작업 수입니다. 참고: 이 숫자는 0부터 시작하지 않습니다. 예를 들어 네 개의 작업이 있는 행렬의 경우 job-total의 값은 4입니다.
strategy.max-parallelnumbermatrix 작업 전략을 사용할 때 동시에 실행할 수 있는 최대 작업 수입니다. 자세한 내용은 "GitHub Actions에 대한 워크플로 구문"을 참조하세요.

strategy 컨텍스트의 예시 콘텐츠

strategy 컨텍스트의 다음 예시 콘텐츠는 4개의 작업이 있는 행렬에서 가져온 것이며 최종 작업에서 가져옵니다. 0부터 시작하는 job-index 숫자와 0부터 시작하지 않는 job-total 사이의 차이를 확인합니다.

{
  "fail-fast": true,
  "job-index": 3,
  "job-total": 4,
  "max-parallel": 4
}

strategy 컨텍스트의 사용 예시

이 예시 워크플로에서는 strategy.job-index 속성을 사용하여 행렬의 각 작업에 대한 로그 파일의 고유한 이름을 설정합니다.

YAML
name: Test strategy
on: push

jobs:
  test:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        test-group: [1, 2]
        node: [14, 16]
    steps:
      - run: echo "Mock test logs" > test-job-${{ strategy.job-index }}.txt
      - name: Upload logs
        uses: actions/upload-artifact@v4
        with:
          name: Build log for job ${{ strategy.job-index }}
          path: test-job-${{ strategy.job-index }}.txt

matrix 컨텍스트

행렬이 있는 워크플로의 경우 matrix 컨텍스트에는 현재 작업에 적용되는 워크플로 파일에 정의된 행렬 속성이 포함됩니다. 예를 들어 osnode 키와 함께 행렬을 구성하는 경우 matrix 컨텍스트 개체에는 현재 작업에 사용되는 값과 함께 osnode 속성이 포함됩니다.

matrix 컨텍스트에는 표준 속성이 없으며 워크플로 파일에 정의된 속성만 있습니다.

Property name형식설명
matrixobject이 컨텍스트는 행렬의 작업 및 워크플로 실행의 각 작업에 대한 변경 내용에 대해서만 사용할 수 있습니다. 워크플로의 모든 작업 또는 단계에서 이 컨텍스트에 액세스할 수 있습니다. 이 개체에는 아래에 나열된 속성이 포함되어 있습니다.
matrix.<property_name>string행렬 속성의 값입니다.

matrix 컨텍스트의 예시 콘텐츠

matrix 컨텍스트의 다음 예시 콘텐츠는 워크플로에 정의된 os 행렬 속성과 node 행렬 속성이 있는 행렬의 작업에서 가져옵니다. 작업은 ubuntu-latest OS와 Node.js 버전 16의 매트릭스 조합을 실행합니다.

{
  "os": "ubuntu-latest",
  "node": 16
}

matrix 컨텍스트의 사용 예시

이 예시 워크플로는 osnode 키와 함께 행렬을 만듭니다. matrix.os 속성을 사용하여 각 작업에 대한 실행기 유형을 설정하고, matrix.node 속성을 사용하여 각 작업에 대한 Node.js 버전을 설정합니다.

YAML
name: Test matrix
on: push

jobs:
  build:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, windows-latest]
        node: [14, 16]
    steps:
      - uses: actions/setup-node@v4
        with:
          node-version: ${{ matrix.node }}
      - name: Output node version
        run: node --version

needs 컨텍스트

needs 컨텍스트는 현재 작업의 직접적인 종속성으로 정의된 모든 작업으로부터의 출력을 포함합니다. 여기에는 암시적으로 종속된 작업(예시: 종속 작업의 종속 작업)이 포함되지 않는다는 점에 유의하세요. 작업 종속성 정의에 대한 자세한 내용은 "GitHub Actions에 대한 워크플로 구문" 항목을 참조하세요.

Property name형식설명
needsobject이 컨텍스트는 종속 작업이 있는 워크플로 실행과 워크플로 실행의 각 작업에 대한 변경 내용에 대해서만 채워집니다. 워크플로의 모든 작업 또는 단계에서 이 컨텍스트에 액세스할 수 있습니다. 이 개체에는 아래에 나열된 모든 속성이 포함됩니다.
needs.<job_id>object현재 작업이 의존하는 단일 작업입니다.
needs.<job_id>.outputsobject현재 작업이 의존하는 작업의 출력 집합입니다.
needs.<job_id>.outputs.<output name>string현재 작업이 의존하는 작업에 대한 특정 출력의 값입니다.
needs.<job_id>.resultstring현재 작업이 의존하는 작업의 결과입니다. 가능한 값은 success, failure, cancelled 또는 skipped입니다.

needs 컨텍스트의 예시 콘텐츠

needs 컨텍스트의 다음 예시 콘텐츠는 현재 작업이 의존하는 두 가지 작업에 대한 정보를 보여줍니다.

{
  "build": {
    "result": "success",
    "outputs": {
      "build_id": "123456"
    }
  },
  "deploy": {
    "result": "failure",
    "outputs": {}
  }
}

needs 컨텍스트의 사용 예시

이 예시 워크플로에는 세 가지 작업, 즉 빌드를 수행하는 build 작업, build 작업이 필요한 deploy 작업, builddeploy 작업이 모두 필요하고 워크플로에 오류가 있는 경우에만 실행되는 debug 작업이 있습니다. 또한 deploy 작업은 needs 컨텍스트를 사용하여 build 작업의 출력에 액세스합니다.

YAML
name: Build and deploy
on: push

jobs:
  build:
    runs-on: ubuntu-latest
    outputs:
      build_id: ${{ steps.build_step.outputs.build_id }}
    steps:
      - name: Build
        id: build_step
        run: echo "build_id=$RANDOM" >> $GITHUB_OUTPUT
  deploy:
    needs: build
    runs-on: ubuntu-latest
    steps:
      - run: echo "Deploying build ${{ needs.build.outputs.build_id }}"
  debug:
    needs: [build, deploy]
    runs-on: ubuntu-latest
    if: ${{ failure() }}
    steps:
      - run: echo "Failed to build and deploy"

inputs 컨텍스트

inputs 컨텍스트에는 작업, 재사용 가능한 워크플로 또는 수동으로 트리거된 워크플로에 전달되는 입력 속성을 포함합니다. 재사용 가능한 워크플로의 경우 입력 이름 및 형식은 재사용 가능한 워크플로의 workflow_call 이벤트 구성에 정의되며, 입력 값은 재사용 가능한 워크플로를 호출하는 외부 워크플로의 jobs.<job_id>.with에서 전달됩니다. 수동으로 트리거된 워크플로의 경우 입력은 워크플로의 workflow_dispatch 이벤트 구성에 정의됩니다.

inputs 컨텍스트의 속성은 워크플로 파일에 정의되어 있습니다. 이 속성은 재사용 가능한 워크플로 또는 workflow_dispatch 이벤트에 의해 트리거된 워크플로에서만 사용할 수 있습니다.

Property name형식설명
inputsobject이 컨텍스트는 재사용 가능한 워크플로 또는 workflow_dispatch 이벤트에 의해 트리거된 워크플로에서만 사용할 수 있습니다. 워크플로의 모든 작업 또는 단계에서 이 컨텍스트에 액세스할 수 있습니다. 이 개체에는 아래에 나열된 속성이 포함되어 있습니다.
inputs.<name>string, number, boolean 또는 choice외부 워크플로에서 전달된 각 입력 값입니다.

inputs 컨텍스트의 예시 콘텐츠

inputs 컨텍스트의 다음 예시 콘텐츠는 build_id, deploy_targetperform_deploy 입력을 정의한 워크플로에서 가져온 것입니다.

{
  "build_id": 123456768,
  "deploy_target": "deployment_sys_1a",
  "perform_deploy": true
}

재사용 가능한 워크플로의 inputs 컨텍스트 사용 예시

이 예시에서 재사용 가능한 워크플로는 inputs 컨텍스트를 사용하여 호출자 워크플로에서 재사용 가능한 워크플로에 전달된 build_id, deploy_targetperform_deploy 입력의 값을 가져옵니다.

YAML
name: Reusable deploy workflow
on:
  workflow_call:
    inputs:
      build_id:
        required: true
        type: number
      deploy_target:
        required: true
        type: string
      perform_deploy:
        required: true
        type: boolean

jobs:
  deploy:
    runs-on: ubuntu-latest
    if: ${{ inputs.perform_deploy }}
    steps:
      - name: Deploy build to target
        run: echo "Deploying build:${{ inputs.build_id }} to target:${{ inputs.deploy_target }}"

수동으로 트리거된 워크플로의 inputs 컨텍스트 사용 예시

workflow_dispatch 이벤트에서 트리거된 이 예시 워크플로는 inputs 컨텍스트를 사용하여 워크플로에 전달된 build_id, deploy_targetperform_deploy 입력의 값을 가져옵니다.

YAML
on:
  workflow_dispatch:
    inputs:
      build_id:
        required: true
        type: string
      deploy_target:
        required: true
        type: string
      perform_deploy:
        required: true
        type: boolean

jobs:
  deploy:
    runs-on: ubuntu-latest
    if: ${{ inputs.perform_deploy }}
    steps:
      - name: Deploy build to target
        run: echo "Deploying build:${{ inputs.build_id }} to target:${{ inputs.deploy_target }}"