본문 바로가기
C.W.K.
Stream
Lesson 09 of 12 · published

환경 변수 컨텍스트

~9 min · env, context, scoping

Level 0견습생
0 XP0/101 lessons0/10 achievements
0/120 XP to next level120 XP to go0% complete

환경 변수의 세 가지 계층

워크플로의 환경 변수는 예측 가능한 우선순위를 가진 세 계층에서 가져와:

  1. 단계 환경 변수 — 단계의 env: 아래에 정의해. 해당 단계에서 가장 높은 우선순위를 가져.
  2. 작업 환경 변수 — 작업의 env: 아래에 정의해. 해당 작업의 모든 단계에서 볼 수 있어.
  3. 워크플로 환경 변수 — 최상위 수준에 정의해. 어디서든 볼 수 있어.

두 계층이 같은 이름을 정의하면 더 구체적인 계층이 우선해 (단계 > 작업 > 워크플로).

표현식에서 환경 변수 읽기

접근하는 두 가지 방법이 있는데, 미묘한 차이가 있어:

  • 셸 실행 안: $VAR (bash) — 실행할 때 실제 프로세스 환경 변수를 사용해.
  • 표현식 안: ${{ env.VAR }} — 단계 실행 전인 파싱 시점에 읽어. 일부 컨텍스트는 아직 사용할 수 없으니 아래를 참고해.

GITHUB_ENV 파일의 컨텍스트 우선순위

단계는 $GITHUB_ENV에 값을 쓸 수 있어 — 다음 단계에서 볼 수 있는 환경 변수를 추가하는 거지. 2번 단계에서 값을 계산하고 5번 단계에서 쓰는 식으로 활용할 수 있어.

Code

세 가지 환경 변수 계층 + GITHUB_ENV 전달·yaml
name: env-demo
on: { workflow_dispatch: {} }

env:
  REGION: us-east-1            # workflow level

jobs:
  one:
    runs-on: ubuntu-latest
    env:
      DEBUG: 'true'             # job level
    steps:
      - run: echo "$REGION $DEBUG"
      - env:
          DEBUG: 'false'        # step level (wins)
        run: echo "$REGION $DEBUG"

      - name: Compute version
        id: version
        run: |
          v=$(cat VERSION)
          echo "VERSION=$v" >> $GITHUB_ENV

      - name: Use computed env
        run: echo "Building $VERSION for $REGION"

External links

Exercise

세 곳에 값을 하드코딩한 워크플로를 가져와. 워크플로 수준의 env:로 끌어올려 봐. 한 곳만 수정해도 어디서든 전파되는지 확인해.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.