C.W.K.
Stream
Lesson 09 of 12 · published

env context

~9 min · env, context, scoping

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

Env 세 레이어

Workflow 의 환경 변수는 세 레이어에서 옴, 예측 가능한 우선순위:

  1. Step env — step 의 env: 아래 정의. 그 step 에 가장 높은 우선.
  2. Job env — job 의 env: 아래 정의. 그 job 의 모든 step 에 보임.
  3. Workflow env — top level 정의. 어디서든 보임.

두 레이어가 같은 이름 정의하면 더 구체적인 레이어가 이김 (step > job > workflow).

Expression 에서 env 읽기

접근 두 방법, 미묘한 차이:

  • Shell run 안: $VAR (bash) — 실행 시 실제 process env 사용.
  • Expression 안: ${{ env.VAR }}파싱 시점에 읽음, step 실행 전. 일부 context 가 아직 사용 불가; 아래 참조.

GITHUB_ENV 파일의 context 우선순위

Step 은 $GITHUB_ENV 에 쓸 수 있어 — 다음 step 에서 보이는 env var 추가. Step 2 에서 값 계산하고 step 5 에서 쓰는 방법이야.

Code

세 env 레이어 + GITHUB_ENV pass-through·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

세 곳에 값 hardcode 한 workflow 가져와. Workflow level env: 로 끌어올려. 단일 수정이 어디서든 전파되는지 확인.

Progress

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

댓글 0

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

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