컨텍스트(Contexts) 참조

컨텍스트(Contexts) 참조

GitHub Actions 워크플로에서 사용할 수 있는 컨텍스트에 대한 정보를 확인할 수 있어요. 각 컨텍스트가 제공하는 속성, 접근 방법, 사용 예시까지 폭넓게 다룰게요.

출처: 문서

본문

GitHub Actions 워크플로에서 사용할 수 있는 컨텍스트를 알려드릴게요. 사용 가능한 속성, 접근 방법, 사용 예시까지 정리해요.

사용 가능한 컨텍스트(Available contexts)

컨텍스트 이름 타입 설명
github object 워크플로 실행에 대한 정보. 자세한 내용은 github 컨텍스트를 보세요.
env object 워크플로, 잡, 스텝에서 설정된 변수를 포함. 자세한 내용은 env 컨텍스트를 보세요.
vars object 저장소, 조직, 환경 레벨에서 설정된 변수를 포함. 자세한 내용은 vars 컨텍스트를 보세요.
job object 현재 실행 중인 잡에 대한 정보. 자세한 내용은 job 컨텍스트를 보세요.
jobs object 재사용 가능한 워크플로에서만, 재사용 워크플로의 잡 출력값을 포함. 자세한 내용은 jobs 컨텍스트를 보세요.
steps object 현재 잡에서 실행된 스텝에 대한 정보. 자세한 내용은 steps 컨텍스트를 보세요.
runner object 현재 잡을 실행 중인 러너에 대한 정보. 자세한 내용은 runner 컨텍스트를 보세요.
secrets object 워크플로 실행에서 사용할 수 있는 시크릿의 이름과 값을 포함. 자세한 내용은 secrets 컨텍스트를 보세요.
strategy object 현재 잡의 매트릭스 실행 전략에 대한 정보. 자세한 내용은 strategy 컨텍스트를 보세요.
matrix object 현재 잡에 적용되는 워크플로에 정의된 매트릭스 속성을 포함. 자세한 내용은 matrix 컨텍스트를 보세요.
needs object 현재 잡의 의존성으로 정의된 모든 잡의 출력값을 포함. 자세한 내용은 needs 컨텍스트를 보세요.
inputs object 재사용 가능하거나 수동으로 트리거된 워크플로의 입력값을 포함. 자세한 내용은 inputs 컨텍스트를 보세요.

표현식의 일부로 컨텍스트 정보에 접근할 때는 다음 두 가지 구문 중 하나를 사용할 수 있어요.

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

속성 역참조 구문을 사용하려면 속성 이름이 문자나 _로 시작하고, 영숫자, -, _만 포함해야 해요.

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

컨텍스트 사용 시점 결정하기(Determining when to use contexts)

GitHub Actions에는 컨텍스트라고 부르는 변수 컬렉션과 유사한 기본 변수(default variables) 컬렉션이 포함되어 있어요. 이 변수들은 워크플로의 서로 다른 지점에서 사용하도록 설계되었어요.

  • 기본 환경 변수: 이 환경 변수는 잡을 실행 중인 러너에만 존재해요. 자세한 내용은 Variables reference를 보세요.
  • 컨텍스트: 대부분의 컨텍스트는 워크플로의 어느 시점에서나 사용할 수 있어요. 기본 변수를 사용할 수 없는 경우에도 마찬가지예요. 예를 들어 표현식과 함께 컨텍스트를 사용해 잡이 러너로 라우팅되기 전에 초기 처리를 수행할 수 있어요. 이를 통해 조건부 if 키워드와 함께 컨텍스트를 사용해 스텝이 실행되어야 하는지 판단할 수 있어요. 잡이 실행되기 시작하면 러너에서 runner.os 같은 컨텍스트 변수를 가져올 수도 있어요. 워크플로 내 다양한 컨텍스트를 사용할 수 있는 위치에 대한 자세한 내용은 Context availability를 보세요.

다음 예시는 잡에서 이 서로 다른 유형의 변수를 함께 사용하는 방법을 보여줘요.

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 변수를 참조해요.

컨텍스트 사용 가능 여부(Context availability)

워크플로 실행 전반에 걸쳐 다양한 컨텍스트를 사용할 수 있어요. 예를 들어 secrets 컨텍스트는 잡 내 특정 위치에서만 사용할 수 있어요.

또한 일부 함수는 특정 위치에서만 사용할 수 있어요. 예를 들어 hashFiles 함수는 모든 곳에서 사용할 수 없어요.

다음 표는 워크플로 내 각 컨텍스트와 특수 함수를 사용할 수 있는 위치의 제한 사항을 정리해요. 표시된 컨텍스트는 주어진 워크플로 키에 대해서만 사용할 수 있고, 다른 곳에서는 사용할 수 없어요. 아래에 나열되지 않은 함수는 어디서나 사용할 수 있어요.

워크플로 키 컨텍스트 특수 함수
run-name github, inputs, vars 없음
concurrency github, inputs, vars 없음
env github, secrets, inputs, vars 없음
jobs.<job_id>.concurrency github, needs, strategy, matrix, inputs, vars 없음
jobs.<job_id>.container github, needs, strategy, matrix, vars, inputs 없음
jobs.<job_id>.container.credentials github, needs, strategy, matrix, env, vars, secrets, inputs 없음
jobs.<job_id>.container.env.<env_id> github, needs, strategy, matrix, job, runner, env, vars, secrets, inputs 없음
jobs.<job_id>.container.image github, needs, strategy, matrix, vars, inputs 없음
jobs.<job_id>.continue-on-error github, needs, strategy, vars, matrix, inputs 없음
jobs.<job_id>.defaults.run github, needs, strategy, matrix, env, vars, inputs 없음
jobs.<job_id>.env github, needs, strategy, matrix, vars, secrets, inputs 없음
jobs.<job_id>.environment github, needs, strategy, matrix, vars, inputs 없음
jobs.<job_id>.environment.url github, needs, strategy, matrix, job, runner, env, vars, steps, inputs 없음
jobs.<job_id>.if github, needs, vars, inputs always, cancelled, success, failure
jobs.<job_id>.name github, needs, strategy, matrix, vars, inputs 없음
jobs.<job_id>.outputs.<output_id> github, needs, strategy, matrix, job, runner, env, vars, secrets, steps, inputs 없음
jobs.<job_id>.runs-on github, needs, strategy, matrix, vars, inputs 없음
jobs.<job_id>.secrets.<secrets_id> github, needs, strategy, matrix, secrets, inputs, vars 없음
jobs.<job_id>.services github, needs, strategy, matrix, vars, inputs 없음
jobs.<job_id>.services.<service_id>.credentials github, needs, strategy, matrix, env, vars, secrets, inputs 없음
jobs.<job_id>.services.<service_id>.env.<env_id> github, needs, strategy, matrix, job, runner, env, vars, secrets, inputs 없음
jobs.<job_id>.steps.continue-on-error github, needs, strategy, matrix, job, runner, env, vars, secrets, steps, inputs hashFiles
jobs.<job_id>.steps.env github, needs, strategy, matrix, job, runner, env, vars, secrets, steps, inputs hashFiles
jobs.<job_id>.steps.if github, needs, strategy, matrix, job, runner, env, vars, steps, inputs always, cancelled, success, failure, hashFiles
jobs.<job_id>.steps.name github, needs, strategy, matrix, job, runner, env, vars, secrets, steps, inputs hashFiles
jobs.<job_id>.steps.run github, needs, strategy, matrix, job, runner, env, vars, secrets, steps, inputs hashFiles
jobs.<job_id>.steps.timeout-minutes github, needs, strategy, matrix, job, runner, env, vars, secrets, steps, inputs hashFiles
jobs.<job_id>.steps.with github, needs, strategy, matrix, job, runner, env, vars, secrets, steps, inputs hashFiles
jobs.<job_id>.steps.working-directory github, needs, strategy, matrix, job, runner, env, vars, secrets, steps, inputs hashFiles
jobs.<job_id>.strategy github, needs, vars, inputs 없음
jobs.<job_id>.timeout-minutes github, needs, strategy, matrix, vars, inputs 없음
jobs.<job_id>.with.<with_id> github, needs, strategy, matrix, inputs, vars 없음
on.workflow_call.inputs.<inputs_id>.default github, inputs, vars 없음
on.workflow_call.outputs.<output_id>.value github, jobs, vars, inputs 없음

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

디버깅을 위해 컨텍스트 내용을 로그에 출력할 수 있어요. JSON 객체를 로그에 예쁘게 출력하려면 toJSON 함수가 필요해요.

[!WARNING] 전체 github 컨텍스트를 사용할 때는 github.token 같은 민감한 정보가 포함된다는 점에 주의하세요. GitHub는 콘솔에 출력되는 시크릿을 마스킹하지만, 컨텍스트를 내보내거나 출력할 때는 주의해야 해요.

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 컨텍스트 데이터는 환경 변수에서 읽을 수 있어요. 환경 변수에 대한 자세한 내용은 Store information in variables를 보세요.

[!WARNING] 전체 github 컨텍스트를 사용할 때는 github.token 같은 민감한 정보가 포함된다는 점에 주의하세요. GitHub는 콘솔에 출력되는 시크릿을 마스킹하지만, 컨텍스트를 내보내거나 출력할 때는 주의해야 해요. [!WARNING] 워크플로와 액션을 만들 때 코드가 잠재적 공격자로부터 온 신뢰할 수 없는 입력을 실행하지 않을지 항상 고려해야 해요. 특정 컨텍스트는 공격자가 자신의 악성 콘텐츠를 삽입할 수 있으므로 신뢰할 수 없는 입력으로 취급해야 해요. 자세한 내용은 Secure use reference를 보세요.

속성 이름 타입 설명
github object 워크플로의 모든 잡이나 스텝에서 사용할 수 있는 최상위 컨텍스트. 이 객체에는 아래 나열된 모든 속성이 포함돼요.
github.action string 현재 실행 중인 액션의 이름, 또는 스텝의 id. GitHub는 특수 문자를 제거하며, 현재 스텝이 id 없이 스크립트를 실행하면 __run 이름을 사용해요. 같은 잡에서 동일한 액션을 두 번 이상 사용하면 이름에 밑줄 앞에 순번 접미사가 붙어요. 예를 들어 첫 번째 스크립트는 __run, 두 번째 스크립트는 __run_2가 돼요. 마찬가지로 actions/checkout의 두 번째 호출은 actionscheckout2가 돼요.
github.action_path string 액션이 위치한 경로. 이 속성은 복합(composite) 액션에서만 지원돼요. 이 경로를 사용해 액션과 같은 저장소에 있는 파일에 접근할 수 있어요. 예를 들어 해당 환경 변수를 사용해 경로로 디렉터리를 변경하면 돼요: cd "$GITHUB_ACTION_PATH". 환경 변수에 대한 자세한 내용은 Secure use reference를 보세요.
github.action_ref string 액션을 실행하는 스텝에서, 실행 중인 액션의 ref. 예를 들어 v2.

run 키워드에서는 사용하지 마세요. 복합 액션에서 이 컨텍스트가 동작하게 하려면 복합 액션의 env 컨텍스트 안에서 참조하세요.
github.action_repository string 액션을 실행하는 스텝에서, 액션의 소유자와 저장소 이름. 예를 들어 actions/checkout.

run 키워드에서는 사용하지 마세요. 복합 액션에서 이 컨텍스트가 동작하게 하려면 복합 액션의 env 컨텍스트 안에서 참조하세요.
github.action_status string 복합 액션에서 복합 액션의 현재 결과.
github.actor string 최초 워크플로 실행을 트리거한 사용자의 사용자 이름. 워크플로 실행이 재실행(re-run)이면 이 값은 github.triggering_actor와 다를 수 있어요. 워크플로 재실행은 재실행을 시작한 액터(github.triggering_actor)의 권한이 다르더라도 항상 github.actor의 권한을 사용해요.
github.actor_id string 최초 워크플로 실행을 트리거한 사람이나 앱의 계정 ID. 예를 들어 1234567. 이 값은 액터 사용자 이름과 다르다는 점에 주의하세요.
github.api_url string GitHub REST API의 URL.
github.artifacts string 현재 스텝의 워크플로 아티팩트를 식별하는 파일이 있는 러너의 경로. 한 줄에 하나씩 선언해 파일이나 OCI 다이제스트 참조를 워크플로 아티팩트로 식별해요. 자세한 내용은 Workflow commands for GitHub Actions를 보세요.
github.artifacts_list string 현재 잡의 집계된 워크플로 아티팩트 메타데이터를 JSON으로 포함하는 읽기 전용 파일이 있는 러너의 경로. 자세한 내용은 Workflow commands for GitHub Actions를 보세요.
github.base_ref string 워크플로 실행에서 풀 리퀘스트의 base_ref 또는 대상 브랜치. 이 속성은 워크플로 실행을 트리거한 이벤트가 pull_request 또는 pull_request_target일 때만 사용할 수 있어요.
github.env string 워크플로 커맨드에서 환경 변수를 설정하는 파일이 있는 러너의 경로. 이 파일은 현재 스텝에 고유하며 잡의 각 스텝마다 다른 파일이에요. 자세한 내용은 Workflow commands for GitHub Actions를 보세요.
github.event object 전체 이벤트 웹훅 페이로드. 이 컨텍스트를 사용해 이벤트의 개별 속성에 접근할 수 있어요. 이 객체는 워크플로 실행을 트리거한 이벤트의 웹훅 페이로드와 동일하며, 이벤트마다 달라요. 각 GitHub Actions 이벤트의 웹훅은 Events that trigger workflows에 연결되어 있어요. 예를 들어 push 이벤트로 트리거된 워크플로 실행에서 이 객체는 push 웹훅 페이로드의 내용을 포함해요.
github.event_name string 워크플로 실행을 트리거한 이벤트의 이름.
github.event_path string 전체 이벤트 웹훅 페이로드를 포함하는 러너의 파일 경로.
github.graphql_url string GitHub GraphQL API의 URL.
github.head_ref string 워크플로 실행에서 풀 리퀘스트의 head_ref 또는 소스 브랜치. 이 속성은 워크플로 실행을 트리거한 이벤트가 pull_request 또는 pull_request_target일 때만 사용할 수 있어요.
github.job string 현재 잡의 job_id.
참고: 이 컨텍스트 속성은 Actions 러너가 설정하며, 잡의 실행 steps 내에서만 사용할 수 있어요. 그 외에는 이 속성의 값이 null이 돼요.
github.path string 워크플로 커맨드에서 시스템 PATH 변수를 설정하는 파일이 있는 러너의 경로. 이 파일은 현재 스텝에 고유하며 잡의 각 스텝마다 다른 파일이에요. 자세한 내용은 Workflow commands for GitHub Actions를 보세요.
github.ref string 워크플로 실행을 트리거한 브랜치나 태그의 완전한 형태(full ref). push로 트리거된 워크플로에서 이 값은 푸시된 브랜치나 태그 ref예요. 병합되지 않은 pull_request로 트리거된 워크플로에서 이 값은 풀 리퀘스트 병합 브랜치예요. 풀 리퀘스트가 병합되면 이 값은 병합된 브랜치가 돼요. release로 트리거된 워크플로에서 이 값은 생성된 릴리스 태그예요. 다른 트리거에서 이 값은 워크플로 실행을 트리거한 브랜치나 태그 ref예요. 이 값은 이벤트 유형에 브랜치나 태그가 사용 가능한 경우에만 설정돼요. ref는 완전한 형태로, 브랜치의 경우 형식은 refs/heads/<branch_name>이에요. 병합되지 않은 pull_request_target을 제외한 풀 리퀘스트 이벤트에서는 refs/pull/<pr_number>/merge이에요. pull_request_target 이벤트는 기본 브랜치의 ref를 가져요. 태그의 경우 refs/tags/<tag_name>이에요. 예를 들어 refs/heads/feature-branch-1. 풀 리퀘스트 병합 브랜치에 대한 자세한 내용은 Pull requests를 보세요.
github.ref_name string 워크플로 실행을 트리거한 브랜치나 태그의 짧은 ref 이름. 이 값은 GitHub에 표시되는 브랜치나 태그 이름과 일치해요. 예를 들어 feature-branch-1.

병합되지 않은 풀 리퀘스트의 경우 형식은 <pr_number>/merge이에요.
github.ref_protected boolean 워크플로 실행을 트리거한 ref에 브랜치 보호나 rulesets가 구성되어 있으면 true.
github.ref_type string 워크플로 실행을 트리거한 ref의 유형. 유효한 값은 branch 또는 tag이에요.
github.repository string 소유자와 저장소 이름. 예를 들어 octocat/Hello-World.
github.repository_id string 저장소의 ID. 예를 들어 123456789. 이 값은 저장소 이름과 다르다는 점에 주의하세요.
github.repository_owner string 저장소 소유자의 사용자 이름. 예를 들어 octocat.
github.repository_owner_id string 저장소 소유자의 계정 ID. 예를 들어 1234567. 이 값은 소유자의 이름과 다르다는 점에 주의하세요.
github.repositoryUrl string 저장소의 Git URL. 예를 들어 git://github.com/octocat/hello-world.git.
github.retention_days string 워크플로 실행 로그와 아티팩트가 유지되는 일수.
github.run_id string 저장소 내 각 워크플로 실행의 고유 번호. 워크플로 실행을 재실행해도 이 번호는 바뀌지 않아요.
github.run_number string 저장소 내 특정 워크플로의 각 실행에 대한 고유 번호. 이 번호는 워크플로의 첫 실행에서 1부터 시작하며 새 실행마다 증가해요. 워크플로 실행을 재실행해도 이 번호는 바뀌지 않아요.
github.run_attempt string 저장소 내 특정 워크플로 실행의 각 시도에 대한 고유 번호. 이 번호는 워크플로 실행의 첫 시도에서 1부터 시작하며 재실행할 때마다 증가해요.
github.secret_source string 워크플로에서 사용된 시크릿의 출처. 가능한 값은 None, Actions, Codespaces, Dependabot이에요.
github.server_url string GitHub 서버의 URL. 예: https://github.com.
github.sha string 워크플로를 트리거한 커밋 SHA. 이 커밋 SHA의 값은 워크플로를 트리거한 이벤트에 따라 달라져요. 자세한 내용은 Events that trigger workflows를 보세요. 예를 들어 ffac537e6cbbf934b08745a378932722df287a53.
github.token string 저장소에 설치된 GitHub App을 대신해 인증하는 토큰. 기능적으로 GITHUB_TOKEN 시크릿과 동일해요. 자세한 내용은 Use GITHUB_TOKEN for authentication in workflows를 보세요.
참고: 이 컨텍스트 속성은 Actions 러너가 설정하며, 잡의 실행 steps 내에서만 사용할 수 있어요. 그 외에는 이 속성의 값이 null이 돼요.
github.triggering_actor string 워크플로 실행을 시작한 사용자의 사용자 이름. 워크플로 실행이 재실행이면 이 값은 github.actor와 다를 수 있어요. 워크플로 재실행은 재실행을 시작한 액터(github.triggering_actor)의 권한이 다르더라도 항상 github.actor의 권한을 사용해요.
github.workflow string 워크플로의 이름. 워크플로 파일이 name을 지정하지 않으면 이 속성의 값은 저장소 내 워크플로 파일의 전체 경로예요.
github.workflow_ref string 워크플로의 ref 경로. 예를 들어 octocat/hello-world/.github/workflows/my-workflow.yml@refs/heads/my_branch.
github.workflow_sha string 워크플로 파일의 커밋 SHA.
github.workspace string 스텝의 러너 기본 작업 디렉터리이며, checkout 액션을 사용할 때 저장소의 기본 위치.

github 컨텍스트 예시 내용

다음 예시 컨텍스트는 push 이벤트로 트리거된 워크플로 실행에서 가져온 것이에요. 이 예시의 event 객체는 push 웹훅 페이로드의 내용과 동일하므로 잘렸어요.

[!NOTE] 이 컨텍스트는 예시일 뿐이에요. 컨텍스트의 내용은 실행 중인 워크플로에 따라 달라져요. 컨텍스트, 객체, 속성은 워크플로 실행 조건에 따라 크게 달라질 수 있어요.

{
  "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 컨텍스트 사용 예시

이 예시 워크플로는 github.event_name 컨텍스트를 사용해 워크플로 실행이 pull_request 이벤트로 트리거된 경우에만 잡을 실행해요.

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 컨텍스트는 워크플로, 잡, 스텝에서 설정된 변수를 포함해요. 러너 프로세스가 상속한 변수는 포함하지 않아요. 워크플로에서 변수를 설정하는 방법에 대한 자세한 내용은 Workflow syntax for GitHub Actions를 보세요.

env 컨텍스트에 저장된 변수의 값을 검색해 워크플로 파일에서 사용할 수 있어요. 워크플로 스텝의 iduses 키를 제외한 모든 키에서 env 컨텍스트를 사용할 수 있어요. 스텝 구문에 대한 자세한 내용은 Workflow syntax for GitHub Actions를 보세요.

러너 안에서 변수 값을 사용하려면 러너 운영 체제의 일반적인 환경 변수 읽기 방법을 사용하세요.

속성 이름 타입 설명
env object 이 컨텍스트는 잡의 각 스텝마다 달라져요. 잡의 어떤 스텝에서도 접근할 수 있어요. 이 객체는 아래 나열된 속성을 포함해요.
env.<env_name> string 특정 환경 변수의 값.

env 컨텍스트 예시 내용

env 컨텍스트의 내용은 변수 이름과 값의 매핑이에요. 컨텍스트의 내용은 워크플로 실행에서 사용되는 위치에 따라 달라질 수 있어요. 이 예시에서 env 컨텍스트는 두 개의 변수를 포함해요.

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

env 컨텍스트 사용 예시

이 예시 워크플로는 워크플로, 잡, 스텝 레벨에서 env 컨텍스트에 변수를 설정하는 방법을 보여줘요. 이후 ${{ env.VARIABLE-NAME }} 구문을 사용해 워크플로 내 개별 스텝에서 변수 값을 검색해요.

같은 이름의 환경 변수가 두 개 이상 정의되면 GitHub는 가장 구체적인 변수를 사용해요. 예를 들어 스텝에서 정의된 환경 변수는 스텝이 실행되는 동안 같은 이름의 잡·워크플로 환경 변수를 덮어써요. 잡에서 정의된 환경 변수는 잡이 실행되는 동안 같은 이름의 워크플로 변수를 덮어써요.

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 컨텍스트

vars 컨텍스트는 조직, 저장소, 환경 레벨에서 설정된 사용자 지정 구성 변수를 포함해요. 여러 워크플로에서 사용할 구성 변수를 정의하는 방법에 대한 자세한 내용은 Store information in variables를 보세요.

vars 컨텍스트 예시 내용

vars 컨텍스트의 내용은 구성 변수 이름과 값의 매핑이에요.

{
  "mascot": "Mona"
}

vars 컨텍스트 사용 예시

이 예시 워크플로는 저장소, 환경, 조직 레벨에서 설정된 구성 변수가 vars 컨텍스트를 사용해 자동으로 사용 가능해지는 방법을 보여줘요.

[!NOTE] 환경 레벨의 구성 변수는 해당 환경이 러너에 의해 선언된 후에 자동으로 사용 가능해져요.

구성 변수가 설정되지 않은 경우, 해당 변수를 참조하는 컨텍스트의 반환 값은 빈 문자열이 돼요.

다음 예시는 워크플로 전반에 걸쳐 vars 컨텍스트로 구성 변수를 사용하는 방법을 보여줘요. 다음 각 구성 변수는 저장소, 조직, 환경 레벨에서 정의되었어요.

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 컨텍스트는 현재 실행 중인 잡에 대한 정보를 포함해요.

속성 이름 타입 설명
job object 이 컨텍스트는 워크플로 실행의 각 잡마다 달라져요. 잡의 어떤 스텝에서도 접근할 수 있어요. 이 객체에는 아래 나열된 모든 속성이 포함돼요.
job.check_run_id number 현재 잡의 체크 실행 ID.
job.container object 잡의 컨테이너에 대한 정보. 컨테이너에 대한 자세한 내용은 Workflow syntax for GitHub Actions를 보세요.
job.container.id string 컨테이너의 ID.
job.container.network string 컨테이너 네트워크의 ID. 러너는 잡의 모든 컨테이너가 사용하는 네트워크를 만들고 관리해요.
job.services object 잡을 위해 생성된 서비스 컨테이너. 서비스 컨테이너에 대한 자세한 내용은 Workflow syntax for GitHub Actions를 보세요.
job.services.<service_id>.id string 서비스 컨테이너의 ID.
job.services.<service_id>.network string 서비스 컨테이너 네트워크의 ID. 러너는 잡의 모든 컨테이너가 사용하는 네트워크를 만들고 관리해요.
job.services.<service_id>.ports object 서비스 컨테이너의 노출된 포트.
job.status string 잡의 현재 상태. 가능한 값은 success, failure, cancelled이에요.
job.workflow_ref string 현재 잡을 정의하는 워크플로 파일의 전체 ref. 예를 들어 octo-org/octo-repo/.github/workflows/deploy.yml@refs/heads/main. 워크플로 파일에 직접 정의된 잡의 경우 github.workflow_ref와 같아요. Reuse workflows에 정의된 잡의 경우 이 값은 재사용 워크플로 파일을 가리켜요. (GitHub Enterprise Server에서는 사용 불가)
job.workflow_sha string 현재 잡을 정의하는 워크플로 파일의 커밋 SHA. (GitHub Enterprise Server에서는 사용 불가)
job.workflow_repository string 현재 잡을 정의하는 워크플로 파일이 있는 저장소의 owner/repo. 예를 들어 octo-org/octo-repo. (GitHub Enterprise Server에서는 사용 불가)
job.workflow_file_path string 현재 잡을 정의하는 워크플로 파일의 저장소 루트 기준 파일 경로. 예를 들어 .github/workflows/deploy.yml. (GitHub Enterprise Server에서는 사용 불가)

job 컨텍스트 예시 내용

job 컨텍스트 예시는 매핑된 포트가 있는 PostgreSQL 서비스 컨테이너를 사용해요. 잡에서 컨테이너나 서비스 컨테이너를 사용하지 않으면 job 컨텍스트는 status만 포함해요. check_run_id와 워크플로 정체성 속성(workflow_ref, workflow_sha, workflow_repository, workflow_file_path)은 GitHub Enterprise Server에서 사용할 수 없어요.

{
  "status": "success",
  "check_run_id": 51725241954,
  "workflow_ref": "octo-org/octo-repo/.github/workflows/deploy.yml@refs/heads/main",
  "workflow_sha": "abc123def456789abc123def456789abc123def4",
  "workflow_repository": "octo-org/octo-repo",
  "workflow_file_path": ".github/workflows/deploy.yml",
  "container": {
    "network": "github_network_53269bd575974817b43f4733536b200c"
  },
  "services": {
    "postgres": {
      "id": "60972d9aa486605e66b0dad4abb638dc3d9116f566579e418166eedb8abb9105",
      "ports": {
        "5432": "49153"
      },
      "network": "github_network_53269bd575974817b43f4733536b200c"
    }
  }
}

job 컨텍스트 사용 예시

이 예시 워크플로는 PostgreSQL 서비스 컨테이너를 설정하고, 서비스 컨테이너의 5432 포트를 호스트의 무작위로 선택된 사용 가능한 포트에 자동으로 매핑해요. job 컨텍스트를 사용해 호스트에 할당된 포트 번호에 접근해요.

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"

job 컨텍스트 워크플로 정체성 사용 예시

[!NOTE] job.workflow_* 컨텍스트 속성은 GitHub Enterprise Server에서 사용할 수 없어요.

이 예시 재사용 워크플로는 job.workflow_repositoryjob.workflow_sha를 사용해 호출자 저장소가 아닌 자신의 소스 코드를 체크아웃해요. 재사용 워크플로가 워크플로 정의와 함께 있는 파일에 접근해야 할 때 유용해요.

# In a reusable workflow (e.g., octo-org/shared-workflows/.github/workflows/deploy.yml)
name: Reusable deploy workflow
on:
  workflow_call:

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
        with:
          repository: ${{ job.workflow_repository }}
          ref: ${{ job.workflow_sha }}

      - run: echo "Deploying from ${{ job.workflow_ref }}"
      - run: echo "Workflow file path is ${{ job.workflow_file_path }}"

jobs 컨텍스트

jobs 컨텍스트는 재사용 가능한 워크플로에서만 사용할 수 있으며, 재사용 워크플로의 출력값을 설정하는 데만 사용할 수 있어요. 자세한 내용은 Reuse workflows를 보세요.

속성 이름 타입 설명
jobs object 재사용 가능한 워크플로에서만 사용할 수 있고, 재사용 워크플로의 출력값을 설정하는 데만 사용할 수 있어요. 이 객체에는 아래 나열된 모든 속성이 포함돼요.
jobs.<job_id>.result string 재사용 워크플로에서 잡의 결과. 가능한 값은 success, failure, cancelled, skipped이에요.
jobs.<job_id>.outputs object 재사용 워크플로에서 잡의 출력값 집합.
jobs.<job_id>.outputs.<output_name> string 재사용 워크플로에서 잡의 특정 출력값.

jobs 컨텍스트 예시 내용

jobs 컨텍스트 예시는 재사용 워크플로 실행에서 온 잡의 결과와 출력값을 포함해요.

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

jobs 컨텍스트 사용 예시

이 예시 재사용 워크플로는 jobs 컨텍스트를 사용해 재사용 워크플로의 출력값을 설정해요. 출력값이 스텝에서 잡으로, 그리고 workflow_call 트리거로 올라가는 방식에 주목하세요. 자세한 내용은 Reuse workflows를 보세요.

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를 지정했고 이미 실행된 스텝에 대한 정보를 포함해요.

속성 이름 타입 설명
steps object 이 컨텍스트는 잡의 각 스텝마다 달라져요. 잡의 어떤 스텝에서도 접근할 수 있어요. 이 객체에는 아래 나열된 모든 속성이 포함돼요.
steps.<step_id>.outputs object 스텝에 대해 정의된 출력값 집합. 자세한 내용은 Metadata syntax reference를 보세요.
steps.<step_id>.conclusion string continue-on-error를 적용한 후 완료된 스텝의 결과. 가능한 값은 success, failure, cancelled, skipped이에요. continue-on-error 스텝이 실패하면 outcomefailure지만 최종 conclusionsuccess예요.
steps.<step_id>.outcome string continue-on-error를 적용하기 전 완료된 스텝의 결과. 가능한 값은 success, failure, cancelled, skipped이에요. continue-on-error 스텝이 실패하면 outcomefailure지만 최종 conclusionsuccess예요.
steps.<step_id>.outputs.<output_name> string 특정 출력값의 값.

steps 컨텍스트 예시 내용

steps 컨텍스트 예시는 id를 지정한 이전 두 스텝을 보여줘요. 첫 번째 스텝은 idcheckout, 두 번째는 generate_number예요. generate_number 스텝에는 random_number라는 출력값이 있었어요.

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

steps 컨텍스트 사용 예시

이 예시 워크플로는 한 스텝에서 무작위 숫자를 출력값으로 생성하고, 이후 스텝에서 steps 컨텍스트를 사용해 그 출력값의 값을 읽어요.

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 컨텍스트는 현재 잡을 실행 중인 러너에 대한 정보를 포함해요.

속성 이름 타입 설명
runner object 이 컨텍스트는 워크플로 실행의 각 잡마다 달라져요. 이 객체에는 아래 나열된 모든 속성이 포함돼요.
runner.name string 잡을 실행하는 러너의 이름. 저장소 레벨과 조직 레벨의 러너가 같은 이름을 사용할 수 있으므로, 이 이름은 워크플로 실행에서 고유하지 않을 수 있어요.
runner.os string 잡을 실행하는 러너의 운영 체제. 가능한 값은 Linux, Windows, macOS이에요.
runner.arch string 잡을 실행하는 러너의 아키텍처. 가능한 값은 X86, X64, ARM, ARM64이에요.
runner.temp string 러너의 임시 디렉터리 경로. 이 디렉터리는 각 잡의 시작과 끝에서 비워져요. 러너의 사용자 계정에 삭제 권한이 없으면 파일이 제거되지 않을 수 있다는 점에 주의하세요.
runner.tool_cache string GitHub 호스팅 러너용 사전 설치 도구가 포함된 디렉터리 경로. 자세한 내용은 GitHub-hosted runners를 보세요.
runner.debug string debug logging이 활성화된 경우에만 설정되며, 항상 값이 1이에요. 자신의 잡 스텝에서 추가 디버깅이나 상세 로깅을 활성화하는 지표로 유용할 수 있어요.
runner.environment string 잡을 실행하는 러너의 환경. 가능한 값은 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 컨텍스트를 사용해 로그를 쓸 임시 디렉터리 경로를 설정하고, 워크플로가 실패하면 해당 로그를 아티팩트로 업로드해요.

name: Build
on: push

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v6
      - 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 컨텍스트는 보안상의 이유로 복합 액션에서는 사용할 수 없어요. 복합 액션에 시크릿을 전달하려면 입력값으로 명시적으로 전달해야 해요. 시크릿에 대한 자세한 내용은 Using secrets in GitHub Actions를 보세요.

GITHUB_TOKEN은 모든 워크플로 실행에 대해 자동으로 생성되는 시크릿이며, 항상 secrets 컨텍스트에 포함돼요. 자세한 내용은 Use GITHUB_TOKEN for authentication in workflows를 보세요.

[!WARNING] 워크플로 잡에서 시크릿을 사용하면 GitHub는 로그에 출력된 시크릿을 자동으로 삭제(redact)해요. 로그에 시크릿을 의도적으로 출력하는 것은 피해야 해요.

속성 이름 타입 설명
secrets object 이 컨텍스트는 워크플로 실행의 각 잡에서 동일해요. 잡의 어떤 스텝에서도 접근할 수 있어요. 이 객체에는 아래 나열된 모든 속성이 포함돼요.
secrets.GITHUB_TOKEN string 각 워크플로 실행에 대해 자동으로 생성되는 토큰. 자세한 내용은 Use GITHUB_TOKEN for authentication in workflows를 보세요.
secrets.<secret_name> string 특정 시크릿의 값.

secrets 컨텍스트 예시 내용

다음 secrets 컨텍스트 예시 내용은 자동 GITHUB_TOKEN과 워크플로 실행에서 사용할 수 있는 다른 두 시크릿을 보여줘요.

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

secrets 컨텍스트 사용 예시

이 예시 워크플로는 GITHUB_TOKENGH_TOKEN 입력 파라미터의 값으로 요구하는 GitHub CLI를 사용해요:

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 컨텍스트는 현재 잡의 매트릭스 실행 전략에 대한 정보를 포함해요.

속성 이름 타입 설명
strategy object 이 컨텍스트는 워크플로 실행의 각 잡마다 달라져요. 워크플로의 어떤 잡이나 스텝에서도 접근할 수 있어요. 이 객체에는 아래 나열된 모든 속성이 포함돼요.
strategy.fail-fast boolean 이 값이 true로 평가되면 매트릭스의 어떤 잡이 실패할 때 진행 중인 모든 잡이 취소돼요. 자세한 내용은 Workflow syntax for GitHub Actions를 보세요.
strategy.job-index number 매트릭스에서 현재 잡의 인덱스. 참고: 이 숫자는 0부터 시작하는 숫자예요. 매트릭스에서 첫 번째 잡의 인덱스는 0이에요.
strategy.job-total number 매트릭스의 총 잡 수. 참고: 이 숫자는 0부터 시작하는 숫자가 아니에요. 예를 들어 잡이 4개인 매트릭스에서 job-total의 값은 4예요.
strategy.max-parallel number matrix 잡 전략을 사용할 때 동시에 실행할 수 있는 최대 잡 수. 자세한 내용은 Workflow syntax for 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 속성을 사용해 매트릭스의 각 잡에 대한 로그 파일의 고유 이름을 설정해요.

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 컨텍스트에는 표준 속성이 없고, 워크플로 파일에 정의된 속성만 있어요.

속성 이름 타입 설명
matrix object 이 컨텍스트는 매트릭스의 잡에서만 사용할 수 있으며, 워크플로 실행의 각 잡마다 달라져요. 워크플로의 어떤 잡이나 스텝에서도 접근할 수 있어요. 이 객체에는 아래 나열된 속성이 포함돼요.
matrix.<property_name> string 매트릭스 속성의 값.

[!NOTE] 변수 이름은 대소문자를 구분하지 않아요. 예를 들어 OSos는 같은 변수로 처리돼요.

matrix 컨텍스트 예시 내용

다음 matrix 컨텍스트 예시 내용은 워크플로에 osnode 매트릭스 속성이 정의된 매트릭스의 잡에서 온 것이에요. 이 잡은 ubuntu-latest OS와 Node.js 버전 16의 매트릭스 조합을 실행 중이에요.

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

matrix 컨텍스트 사용 예시

이 예시 워크플로는 osnode 키로 매트릭스를 만들어요. matrix.os 속성을 사용해 각 잡의 러너 유형을 설정하고, matrix.node 속성을 사용해 각 잡의 Node.js 버전을 설정해요.

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@v7
        with:
          node-version: ${{ matrix.node }}
      - name: Output node version
        run: node --version

needs 컨텍스트

needs 컨텍스트는 현재 잡의 직접적인 의존성으로 정의된 모든 잡의 출력값을 포함해요. 암시적으로 의존하는 잡(예: 의존하는 잡의 의존 잡)은 포함하지 않는다는 점에 주의하세요. 잡 의존성을 정의하는 방법에 대한 자세한 내용은 Workflow syntax for GitHub Actions를 보세요.

속성 이름 타입 설명
needs object 이 컨텍스트는 의존 잡이 있는 워크플로 실행에서만 채워지며, 워크플로 실행의 각 잡마다 달라져요. 워크플로의 어떤 잡이나 스텝에서도 접근할 수 있어요. 이 객체에는 아래 나열된 모든 속성이 포함돼요.
needs.<job_id> object 현재 잡이 의존하는 단일 잡.
needs.<job_id>.outputs object 현재 잡이 의존하는 잡의 출력값 집합.
needs.<job_id>.outputs.<output name> string 현재 잡이 의존하는 잡의 특정 출력값.
needs.<job_id>.result string 현재 잡이 의존하는 잡의 결과. 가능한 값은 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 잡의 출력값에 접근해요.

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 이벤트로 트리거된 워크플로에서만 사용할 수 있어요.

속성 이름 타입 설명
inputs object 이 컨텍스트는 재사용 워크플로에서만, 또는 workflow_dispatch 이벤트로 트리거된 워크플로에서만 사용할 수 있어요. 워크플로의 어떤 잡이나 스텝에서도 접근할 수 있어요. 이 객체에는 아래 나열된 속성이 포함돼요.
inputs.<name> string 또는 number 또는 boolean 또는 choice 외부 워크플로에서 전달된 각 입력 값.

inputs 컨텍스트 예시 내용

다음 inputs 컨텍스트 예시 내용은 build_id, deploy_target, perform_deploy 입력을 정의한 워크플로에서 온 것이에요.

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

재사용 워크플로에서 inputs 컨텍스트 사용 예시

이 예시 재사용 워크플로는 inputs 컨텍스트를 사용해 호출자 워크플로에서 재사용 워크플로로 전달된 build_id, deploy_target, perform_deploy 입력의 값을 가져와요.

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_target, perform_deploy 입력의 값을 가져와요.

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 }}"

더 알아보기 (Learn more)