GitHub Action의 Environment Variable이란 무엇인가?
Environment Variable이란 환경에 설정할 수 있는 변수이다. 프로그래밍에서 공통으로 사용할 수 있는 변수를 설정할 수 있는 것과 같다.
Environment Variable 선언하기
Environment Variable은 다음과 같이 env: 블록 안에 [KEY]: [VALUE] 쌍으로 선언할 수 있다.
env:
[KEY]: [VALUE]
만약 복수의 Environment Variable을 선언하고 싶다면 아래와 같이 줄바꿈으로 여러 Key-Value 쌍을 만들면 된다.
env:
[KEY1]: [VALUE1]
[KEY2]: [VALUE2]
Environment Variable을 선언할 수 있는 위치
Environment Variable은 Workflow, Job, Step 블록에 선언할 수 있다. Workflow에 선언된 Environment Variable은 하위 Job과 Step에서 공유되며, Job에 선언된 Environment Variable은 하위 Step에서 공유된다. Step에 선언된 Variable은 Step의 지역변수로 동작한다.
아래의 코드와 같이 Workflow, Job, Step에 각각 Environment Variable을 선언할 수 있다.
name: Environment Variable
on: workflow_dispatch
# Workflow에 Environment Variable 선언
env:
WORKFLOW_ENV: workflow_environment_variable
jobs:
environment_variable:
# Job에 Environment Variable 선언
env:
JOB_ENV: job_environment_variable
runs-on: ubuntu-latest
steps:
- name: Print Environment Variable
# Step에 Environment Variable 선언
env:
STEP_ENV: step_environment_variable
run: ...
Environment Variable에 접근하기
선언한 Environment Variable에 접근하는 것은 아래와 같이 $[KEY]를 사용해 가능하다.
*$는 GitHub Action에서 코드를 실행하는 예약어로 변수에 접근이 가능하다.
echo Workflow Environment Variable : $WORKFLOW_ENV
echo Job Environment Variable $JOB_ENV
echo Step Environment Variable $STEP_ENV
전체 코드 확인 및 실행
전체 코드
전체 코드는 다음과 같다.
name: Environment Variable
on: workflow_dispatch
# Workflow에 Environment Variable 선언
env:
WORKFLOW_ENV: workflow_environment_variable
jobs:
environment_variable:
# Job에 Environment Variable 선언
env:
JOB_ENV: job_environment_variable
runs-on: ubuntu-latest
steps:
- name: Print Environment Variable
# Step에 Environment Variable 선언
env:
STEP_ENV: step_environment_variable
run: |
echo Workflow Environment Variable : $WORKFLOW_ENV
echo Job Environment Variable $JOB_ENV
echo Step Environment Variable $STEP_ENV
실행하기
위 코드를 실행하면 아래와 같이 출력된다.
Default로 설정되어 있는 Environment Variable
작성일을 기준으로 기본으로 설정되어 있는 Environment Variable의 종류는 무려 50가지 정도 된다. 이들은 Github Action에서 자주 사용되며, $[Environment Variable] 를 통해 접근할 수 있다.
Environment Variable | 설명 |
CI | 언제나 true로 설정되어 있음 |
GITHUB_API_URL | GitHub의 api용 URL을 반환한다. 예를 들어 : https://api.github.com 와 같이 반환한다. |
GITHUB_EVENT_NAME | Workflow를 실행시킨 원인 Event를 반환한다. |
GITHUB_GRAPHQL_URL | GitHub의 GraphQL용 URL을 반환한다. |
... | ... |
자세한 내용은 문서를 참고하자.