컨텍스트(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 컨텍스트에 저장된 변수의 값을 검색해 워크플로 파일에서 사용할 수 있어요. 워크플로 스텝의 id와 uses 키를 제외한 모든 키에서 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_repository와 job.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 스텝이 실패하면 outcome은 failure지만 최종 conclusion은 success예요. |
steps.<step_id>.outcome |
string |
continue-on-error를 적용하기 전 완료된 스텝의 결과. 가능한 값은 success, failure, cancelled, skipped이에요. continue-on-error 스텝이 실패하면 outcome은 failure지만 최종 conclusion은 success예요. |
steps.<step_id>.outputs.<output_name> |
string |
특정 출력값의 값. |
steps 컨텍스트 예시 내용
이 steps 컨텍스트 예시는 id를 지정한 이전 두 스텝을 보여줘요. 첫 번째 스텝은 id가 checkout, 두 번째는 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_TOKEN을 GH_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 컨텍스트는 현재 잡에 적용되는 워크플로 파일에 정의된 매트릭스 속성을 포함해요. 예를 들어 os와 node 키로 매트릭스를 구성하면 matrix 컨텍스트 객체는 현재 잡에 사용되는 값을 가진 os와 node 속성을 포함해요.
matrix 컨텍스트에는 표준 속성이 없고, 워크플로 파일에 정의된 속성만 있어요.
| 속성 이름 | 타입 | 설명 |
|---|---|---|
matrix |
object |
이 컨텍스트는 매트릭스의 잡에서만 사용할 수 있으며, 워크플로 실행의 각 잡마다 달라져요. 워크플로의 어떤 잡이나 스텝에서도 접근할 수 있어요. 이 객체에는 아래 나열된 속성이 포함돼요. |
matrix.<property_name> |
string |
매트릭스 속성의 값. |
[!NOTE] 변수 이름은 대소문자를 구분하지 않아요. 예를 들어
OS와os는 같은 변수로 처리돼요.
matrix 컨텍스트 예시 내용
다음 matrix 컨텍스트 예시 내용은 워크플로에 os와 node 매트릭스 속성이 정의된 매트릭스의 잡에서 온 것이에요. 이 잡은 ubuntu-latest OS와 Node.js 버전 16의 매트릭스 조합을 실행 중이에요.
{
"os": "ubuntu-latest",
"node": 16
}
matrix 컨텍스트 사용 예시
이 예시 워크플로는 os와 node 키로 매트릭스를 만들어요. 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 잡, build와 deploy를 모두 필요로 하고 워크플로에 실패가 있을 때만 실행되는 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 }}"