Github Actions - 환경변수

2025. 10. 14. 15:08CI\CD/Github Actions

반응형

Github Actions의 환경변수는 실행중인 셀, 프로세스가 참조하고 있는 key-value 쌍의 데이터이다.

이 환경변수는 runner의 OS 환경변수, Actions가 제공하는 컨텍스트 기반의 값, 워크플로에서 선언하는 env, 런타임에 파일로 주입하는 env 등이 존재한다.

 

각각 범위의 순서대로 Workflow → Job → Step → 셀 런타입에 동적으로 주입 하는 순서로 우선순위는 반대로 좁은 우선순위가 우선되고 이는 Step → Job → Workflow → runner OS → 셀 런타입 주입값 순서대로 가진다.

 

여기서 우리가 볼 건 Workflow, Job, Step, 런타임 주입 이다.

 

환경 변수는 내부적으로 env라는 명령어를 통해서 할당해서 사용되는데 보다보면 그러면 왜 output으로 그냥 쓰면 되지 env에 궂이 다시 넣어 사용하는 것인가 싶을 수 있다.

이는 간결하고 가독성이 좋게 만들기 위함이며, run 내부에 bash, Docker 같은 도구들은 환경변수를 바로 읽을 수 있기 때문이다.

간단하게 생각하면 output은 생산, env를 통해 소비한다고 생각하면 된다.

 

1. Workflow level 환경변수

워크플로우 환경 변수는 워크플로우 파일 전체의 모든 잡, 스탭에 기본값처럼 사용이 가능하다.

이는 repo나 branch의 공통 상수, 여러 잡이 공유하는 기본 설정등에 사용하기 위해 쓰인다.

 

파일을 우선 생성하고 이름을 지정하고 push 이벤트로 트리거 하게 한 후

 

env를 추가해주는데 아래와 같이 key : value의 형태로 구성한다.

이제 job을 생성해주고 아래와 같이 $환경변수명 의 형태로 사용한다.

commit & push 해주고

actions로 들어가 확인해보면

이렇게 입력한 값들이 잘 출력된 것을 볼 수 있다.

 

이 workflow 레벨의 환경변수는 해당 워크플로우의 모든 잡, 스탭에서 사용이 가능하다.

 

2. Job level 환경변수

Job의 환경변수는 해당 잡 내부의 모든 스탭에서 사용이 가능하며 이는 Job마다 값이 달라져야하는 것(runner의 OS별 옵션, 리전(지역)별 값)에 사용된다.

Job 레벨 환경변수는 명칭이 workflow 레벨 환경변수와 겹칠 경우 더 우선 순위를 가진다.

commit & push 해주고

Actions를 확인해보면

출력이 잘 되는걸 볼 수 있다.

 

3) Step Level 환경변수

Step 레벨 환경변수는 그 step 하나에서만 사용이 가능한 환경변수로 그 step에서만 필요한 임시토큰, 임시경로와 같은 값을 위해 사용된다.

Step 레벨 환경변수와 동일한 이름의 환경변수가 Job과 workflow에 존재하면 Step의 값으로 읽는다.

이제 commit & push 해보고

Actions를 보면

잘 호출된걸 볼 수 있다.

 

4. Runtime 환경변수

런타임 환경 변수는 Step 내에서 설정 하며 설정된 Job 내부의 다음 Step들에서는 모두 사용이 가능하다.

런타임 환경 변수는 동적으로 추가 및 변경이 되며 실행 중에 계산한 값을 다음 Step들에서 사용하고 싶을때 사용되며 사용하는 방법은 echo로 key-value쌍으로 $GITHUB_ENV에 할당하면 $key를 통해서 사용이 가능해진다.

commit & push 해보고 

actions을 확인해보면

 

이 runtime 환경변수는 동적으로 할당되는가가 Job 레벨의 환경변수와의 큰 차이점이다.

반응형