변수 참조(Variables reference)

변수 참조(Variables reference)

GitHub Actions 워크플로에서 지원되는 변수, 명명 규칙, 한도, 컨텍스트에 대한 정보를 확인할 수 있어요. 워크플로를 구성할 때 변수 이름과 규칙을 찾아보기 좋은 참조 문서예요.

출처: 문서

본문

GitHub Actions 워크플로에서 지원되는 변수, 명명 규칙, 한도, 컨텍스트에 대한 정보를 확인할 수 있습니다.

이 문서는 GitHub Actions 워크플로에서 사용할 수 있는 지원 변수(환경 변수, 구성 변수, GitHub가 제공하는 기본 변수 포함)를 나열합니다. 워크플로를 구성할 때 변수 이름, 명명 규칙, 한도, 지원되는 컨텍스트를 조회할 때 이 참조를 사용하세요.

변수에 대한 자세한 내용은 Variables를 참고하세요.

기본 환경 변수

GitHub가 설정하는 기본 환경 변수는 워크플로의 모든 스텝에서 사용할 수 있습니다.

기본 환경 변수는 워크플로에서 정의되지 않고 GitHub가 설정하므로 env 컨텍스트로 접근할 수 없습니다. 그러나 대부분의 기본 변수에는 이름이 비슷한 해당 컨텍스트 속성이 있습니다. 예를 들어 GITHUB_REF 변수의 값은 워크플로 처리 중 ${{ github.ref }} 컨텍스트 속성으로 읽을 수 있습니다.

GITHUB_*RUNNER_*라는 기본 환경 변수의 값은 덮어쓸 수 없습니다. 현재 CI 변수의 값은 덮어쓸 수 있습니다. 그러나 이것이 항상 가능하리라는 보장은 없습니다. 환경 변수 설정에 대한 자세한 내용은 Store information in variablesWorkflow commands for GitHub Actions를 참고하세요.

액션은 하드코딩된 파일 경로 대신 변수를 사용해서 파일 시스템에 접근할 것을 강력히 권장합니다. GitHub는 액션이 모든 러너 환경에서 사용할 수 있도록 변수를 설정합니다.

Variable Description
CI 항상 true로 설정됩니다. 이 변수를 사용해서 테스트가 로컬로 실행되는지 GitHub Actions로 실행되는지 구분할 수 있습니다.
GITHUB_ACTION 현재 실행 중인 액션의 이름 또는 스텝의 id입니다. 예를 들어 액션의 경우 __repo-owner_name-of-action-repo입니다.

GitHub는 특수 문자를 제거하고, 현재 스텝이 id 없이 스크립트를 실행하면 __run이라는 이름을 사용합니다. 같은 잡에서 같은 스크립트나 액션을 두 번 이상 사용하면 이름에 밑줄이 붙은 시퀀스 번호로 구성된 접미사가 포함됩니다. 예를 들어 실행하는 첫 번째 스크립트는 __run이라는 이름을 가지며 두 번째 스크립트는 __run_2로 이름이 지정됩니다. 마찬가지로 actions/checkout의 두 번째 호출은 actionscheckout2가 됩니다.
GITHUB_ACTION_PATH 액션이 위치한 경로입니다. 이 속성은 복합 액션에서만 지원됩니다. 이 경로를 사용해서 액션이 위치한 디렉터리로 변경하고 같은 저장소의 다른 파일에 접근할 수 있습니다. 예를 들어 /home/runner/work/_actions/repo-owner/name-of-action-repo/v1.
GITHUB_ACTION_REPOSITORY 액션을 실행하는 스텝의 경우 액션의 소유자와 저장소 이름입니다. 예를 들어 actions/checkout.
GITHUB_ACTIONS GitHub Actions가 워크플로를 실행 중일 때 항상 true로 설정됩니다. 이 변수를 사용해서 테스트가 로컬로 실행되는지 GitHub Actions로 실행되는지 구분할 수 있습니다.
GITHUB_ACTOR 워크플로를 시작한 사람 또는 앱의 이름입니다. 예를 들어 octocat.
GITHUB_ACTOR_ID 최초 워크플로 실행을 트리거한 사람 또는 앱의 계정 ID입니다. 예를 들어 1234567. 이는 액터 사용자 이름과 다릅니다.
GITHUB_API_URL API URL을 반환합니다. 예: https://api.github.com.
GITHUB_ARTIFACTS 현재 스텝에 대한 워크플로 아티팩트를 선언하는 파일의 러너 경로입니다. 줄마다 하나씩 선언을 작성해서 파일이나 OCI 다이제스트 참조를 워크플로 아티팩트로 식별합니다. 자세한 내용은 Workflow commands for GitHub Actions를 참고하세요.
GITHUB_ARTIFACTS_LIST 현재 잡에 대한 집계된 워크플로 아티팩트 메타데이터를 JSON 객체로 포함하는 읽기 전용 파일의 러너 경로입니다. 자세한 내용은 Workflow commands for GitHub Actions를 참고하세요.
GITHUB_BASE_REF 워크플로 실행에서 풀 리퀘스트의 베이스 ref 또는 대상 브랜치의 이름입니다. 워크플로 실행을 트리거하는 이벤트가 pull_request 또는 pull_request_target일 때만 설정됩니다. 예를 들어 main.
GITHUB_ENV 워크플로 커맨드에서 변수를 설정하는 파일의 러너 경로입니다. 이 파일의 경로는 현재 스텝에 고유하며 잡의 각 스텝마다 변경됩니다. 예를 들어 /home/runner/work/_temp/_runner_file_commands/set_env_87406d6e-4979-4d42-98e1-3dab1f48b13a. 자세한 내용은 Workflow commands for GitHub Actions를 참고하세요.
GITHUB_EVENT_NAME 워크플로를 트리거한 이벤트의 이름입니다. 예를 들어 workflow_dispatch.
GITHUB_EVENT_PATH 전체 이벤트 웹훅 페이로드가 포함된 러너의 파일 경로입니다. 예를 들어 /github/workflow/event.json.
GITHUB_GRAPHQL_URL GraphQL API URL을 반환합니다. 예: https://api.github.com/graphql.
GITHUB_HEAD_REF 워크플로 실행에서 풀 리퀘스트의 head ref 또는 소스 브랜치입니다. 이 속성은 워크플로 실행을 트리거하는 이벤트가 pull_request 또는 pull_request_target일 때만 설정됩니다. 예를 들어 feature-branch-1.
GITHUB_JOB 현재 잡의 job_id입니다. 예를 들어 greeting_job.
GITHUB_OUTPUT 워크플로 커맨드에서 현재 스텝의 출력을 설정하는 파일의 러너 경로입니다. 이 파일의 경로는 현재 스텝에 고유하며 잡의 각 스텝마다 변경됩니다. 예를 들어 /home/runner/work/_temp/_runner_file_commands/set_output_a50ef383-b063-46d9-9157-57953fc9f3f0. 자세한 내용은 Workflow commands for GitHub Actions를 참고하세요.
GITHUB_PATH 워크플로 커맨드에서 시스템 PATH 변수를 설정하는 파일의 러너 경로입니다. 이 파일의 경로는 현재 스텝에 고유하며 잡의 각 스텝마다 변경됩니다. 예를 들어 /home/runner/work/_temp/_runner_file_commands/add_path_899b9445-ad4a-400c-aa89-249f18632cf5. 자세한 내용은 Workflow commands for GitHub Actions를 참고하세요.
GITHUB_REF 워크플로 실행을 트리거한 브랜치 또는 태그의 완전한 형태의 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 워크플로 실행을 트리거한 브랜치 또는 태그의 짧은 ref 이름입니다. 이 값은 GitHub에 표시되는 브랜치 또는 태그 이름과 일치합니다. 예를 들어 feature-branch-1.

머지되지 않은 풀 리퀘스트의 경우 형식은 <pr_number>/merge입니다.
GITHUB_REF_PROTECTED 워크플로 실행을 트리거한 ref에 대해 브랜치 보호 또는 rulesets이 구성된 경우 true.
GITHUB_REF_TYPE 워크플로 실행을 트리거한 ref의 유형입니다. 유효한 값은 branch 또는 tag입니다.
GITHUB_REPOSITORY 소유자와 저장소 이름입니다. 예를 들어 octocat/Hello-World.
GITHUB_REPOSITORY_ID 저장소의 ID입니다. 예를 들어 123456789. 이는 저장소 이름과 다릅니다.
GITHUB_REPOSITORY_OWNER 저장소 소유자의 이름입니다. 예를 들어 octocat.
GITHUB_REPOSITORY_OWNER_ID 저장소 소유자의 계정 ID입니다. 예를 들어 1234567. 이는 소유자의 이름과 다릅니다.
GITHUB_RETENTION_DAYS 워크플로 실행 로그와 아티팩트가 보관되는 일 수입니다. 예를 들어 90.
GITHUB_RUN_ATTEMPT 저장소의 특정 워크플로 실행의 각 시도에 대한 고유 번호입니다. 이 번호는 워크플로 실행의 첫 번째 시도에서 1로 시작하며 재실행할 때마다 증가합니다. 예를 들어 3.
GITHUB_RUN_ID 저장소 내의 각 워크플로 실행에 대한 고유 번호입니다. 이 번호는 워크플로 실행을 다시 실행해도 변경되지 않습니다. 예를 들어 1658821493.
GITHUB_RUN_NUMBER 저장소의 특정 워크플로의 각 실행에 대한 고유 번호입니다. 이 번호는 워크플로의 첫 번째 실행에서 1로 시작하며 새 실행마다 증가합니다. 이 번호는 워크플로 실행을 다시 실행해도 변경되지 않습니다. 예를 들어 3.
GITHUB_SERVER_URL GitHub 서버의 URL입니다. 예: https://github.com.
GITHUB_SHA 워크플로를 트리거한 커밋 SHA입니다. 이 커밋 SHA의 값은 워크플로를 트리거한 이벤트에 따라 다릅니다. 자세한 내용은 Events that trigger workflows를 참고하세요. 예를 들어 ffac537e6cbbf934b08745a378932722df287a53.
GITHUB_STEP_SUMMARY 워크플로 커맨드의 잡 요약이 포함된 파일의 러너 경로입니다. 이 파일의 경로는 현재 스텝에 고유하며 잡의 각 스텝마다 변경됩니다. 예를 들어 /home/runner/_layout/_work/_temp/_runner_file_commands/step_summary_1cb22d7f-5663-41a8-9ffc-13472605c76c. 자세한 내용은 Workflow commands for GitHub Actions를 참고하세요.
GITHUB_TRIGGERING_ACTOR 워크플로 실행을 시작한 사용자의 사용자 이름입니다. 워크플로 실행이 재실행이라면 이 값이 github.actor와 다를 수 있습니다. 모든 워크플로 재실행은 재실행을 시작한 액터(github.triggering_actor)의 권한이 다르더라도 github.actor의 권한을 사용합니다.
GITHUB_WORKFLOW 워크플로의 이름입니다. 예를 들어 My test workflow. 워크플로 파일이 name을 지정하지 않으면 이 변수의 값은 저장소의 워크플로 파일 전체 경로입니다.
GITHUB_WORKFLOW_REF 워크플로에 대한 ref 경로입니다. 예를 들어 octocat/hello-world/.github/workflows/my-workflow.yml@refs/heads/my_branch.
GITHUB_WORKFLOW_SHA 워크플로 파일의 커밋 SHA입니다.
GITHUB_WORKSPACE 스텝의 러너 기본 작업 디렉터리이자, checkout 액션을 사용할 때 저장소의 기본 위치입니다. 예를 들어 /home/runner/work/my-repo-name/my-repo-name.
RUNNER_ARCH 잡을 실행하는 러너의 아키텍처입니다. 가능한 값은 X86, X64, ARM, ARM64입니다.
RUNNER_DEBUG 디버그 로깅이 활성화된 경우에만 설정되며 항상 1의 값을 가집니다. 이는 자신의 잡 스텝에서 추가 디버깅이나 상세 로깅을 활성화하는 지표로 유용할 수 있습니다.
RUNNER_ENVIRONMENT 잡을 실행하는 러너의 환경입니다. 가능한 값은 GitHub가 제공하는 GitHub 호스팅 러너의 경우 github-hosted, 저장소 소유자가 구성한 셀프 호스팅 러너의 경우 self-hosted입니다.
RUNNER_NAME 잡을 실행하는 러너의 이름입니다. 저장소 및 조직 레벨의 러너가 같은 이름을 사용할 수 있으므로 이 이름은 워크플로 실행에서 고유하지 않을 수 있습니다. 예를 들어 Hosted Agent
RUNNER_OS 잡을 실행하는 러너의 운영 체제입니다. 가능한 값은 Linux, Windows, macOS입니다. 예를 들어 Windows
RUNNER_TEMP 러너의 임시 디렉터리 경로입니다. 이 디렉터리는 각 잡의 시작과 끝에서 비워집니다. 러너의 사용자 계정에 삭제 권한이 없으면 파일이 제거되지 않는다는 점에 유의하세요. 예를 들어 D:\a\_temp
RUNNER_TOOL_CACHE GitHub 호스팅 러너의 사전 설치된 도구가 포함된 디렉터리 경로입니다. 자세한 내용은 GitHub-hosted runners를 참고하세요. 예를 들어 C:\hostedtoolcache\windows

[!NOTE] 잡 내에서 워크플로 실행 URL을 사용해야 한다면 다음 변수들을 결합할 수 있습니다: $GITHUB_SERVER_URL/$GITHUB_REPOSITORY/actions/runs/$GITHUB_RUN_ID

구성 변수의 명명 규칙

구성 변수 이름에는 다음 규칙이 적용됩니다:

  • 영숫자 문자([a-z], [A-Z], [0-9])나 밑줄(_)만 포함할 수 있습니다. 공백은 허용되지 않습니다.
  • GITHUB_ 접두사로 시작하면 안 됩니다.
  • 숫자로 시작하면 안 됩니다.
  • 참조할 때 대소문자를 구분하지 않습니다. GitHub는 입력 방식과 관계없이 시크릿 이름을 대문자로 저장합니다.
  • 시크릿이 생성된 저장소, 조직, 엔터프라이즈에서 고유해야 합니다.

환경 변수의 명명 규칙

환경 변수를 설정할 때 기본 환경 변수 이름 중 어느 것도 사용할 수 없습니다. 기본 환경 변수의 전체 목록은 아래 Variables reference를 참고하세요. 이러한 기본 변수 중 하나의 값을 재정의하려고 시도하면 할당이 무시됩니다.

[!NOTE] 스텝에서 run: env를 사용한 다음 스텝의 출력을 검사하면 워크플로 스텝에서 사용할 수 있는 환경 변수 전체 집합을 나열할 수 있습니다.

구성 변수 우선순위

같은 이름의 변수가 여러 레벨에 존재하면 가장 낮은 레벨의 변수가 우선합니다. 예를 들어 조직 레벨 변수와 저장소 레벨 변수의 이름이 같다면 저장소 레벨 변수가 우선합니다. 마찬가지로 조직, 저장소, 환경 모두에 같은 이름의 변수가 있으면 환경 레벨 변수가 우선합니다.

[!NOTE] 환경 레벨 변수는 잡이 실행을 시작한 후에만 러너에서 사용할 수 있습니다. 즉 환경 레벨 변수는 envvars 컨텍스트의 변수를 덮어쓰지 않습니다.

재사용 가능한 워크플로의 경우 호출자 워크플로 저장소의 변수가 사용됩니다. 호출되는 워크플로가 포함된 저장소의 변수는 호출자 워크플로에 제공되지 않습니다.

구성 변수의 한도

개별 변수는 크기가 48KB로 제한됩니다.

조직 변수 최대 1,000개, 저장소당 변수 500개, 환경당 변수 100개를 저장할 수 있습니다. 조직 및 저장소 변수의 총 결합 크기 한도는 워크플로 실행당 256KB입니다.

저장소에서 생성된 워크플로는 다음 수의 변수에 접근할 수 있습니다:

  • 저장소 변수의 총 크기가 256KB보다 작으면 최대 500개의 저장소 변수. 저장소 변수의 총 크기가 256KB를 초과하면 한도 아래에 해당하는 저장소 변수만 사용할 수 있습니다(변수 이름 알파벳순 정렬).
  • 저장소 및 조직 변수의 총 결합 크기가 256KB보다 작으면 최대 1,000개의 조직 변수. 조직 및 저장소 변수의 총 결합 크기가 256KB를 초과하면 해당 한도 아래에 해당하는 조직 변수만 사용할 수 있습니다(저장소 변수를 고려한 후 변수 이름 알파벳순 정렬).
  • 환경 레벨 변수 최대 100개.

[!NOTE] 환경 레벨 변수는 256KB 총 크기 한도에 포함되지 않습니다. 저장소 및 조직 변수의 결합 크기 한도를 초과했고 추가 변수가 여전히 필요하다면 환경을 사용해서 환경에 추가 변수를 정의할 수 있습니다.

지원되는 컨텍스트

잡이 러너로 전송되기 전에 처리되는 워크플로 부분에서 변수 값에 접근하려면 일반적으로 env 또는 github 컨텍스트를 사용합니다.

[!WARNING] github 컨텍스트를 로그에 출력하지 마세요. 민감한 정보가 포함되어 있습니다.

Context Use case Example
env 워크플로에 정의된 사용자 지정 변수를 참조합니다. ${{ env.MY_VARIABLE }}
github 워크플로 실행과 실행을 트리거한 이벤트에 대한 정보를 참조합니다. ${{ github.repository }}

더 알아보기 (Learn more)