Profile picture

[Github-Actions] 환경변수 설정

JaehyoJJAng2023년 04월 13일

환경변수

  • 구문 내에서 변수처럼 사용할 수 있는 값.

sub.yml 이라는 새로운 워크플로우를 생성해보자

vim .github/workflows/sub.yml

sub.yml 파일에 에 아래 코드를 작성한 후 테스트 해보자

name: sub

on: [push]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: 1. 변수 출력
        env:
          NAME: 'jaehyo.lee'
        run: echo "내 이름은 ${NAME} 이다."
      - name: 2. 변수 출력
        env:
          ID: ${{ github.actor }}
        run:
          echo "내 이름은 ${NAME} 이고, 내 아이디는 ${ID} 이다."

토러블 슈팅

image

정상적으로 실행이 되는 것 같지는 않다.

보니까 환경 변수는 해당 job 내에서 전체적으로 사용할 수 있고 모든 job 에서 사용할 수 있는 전역 변수는 아닌 걸로 보인다.

예를 들어 아래와 같은 job이 돌고 있다고 가정할 떄

steps:
  - name: job1
    env:
      NAME: 'jaehyo.lee'
  - name: job2
    env:
      ID: ${{ github.actor }}

job1에서 선언된 NAME 환경 변수는 job1 에서만 사용 가능한 환경 변수인 거고, job2에서는 사용이 불가능하다.

따라서 해결을 위해서는 아래와 같이 코드를 수정하면 된다.

name: sub

on: [push]

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - name: 1. 변수 출력
        env:
          NAME: 'jaehyo.lee'
          ID: ${{ github.actor }}
          AGE: 25
          HUMAN: true
        run: |
          echo -e "NAME -> ${NAME}\n"
          echo -e "ID -> ${ID}\n"
          echo -e "AGE -> ${AGE}\n"
          echo -e "HUMAN -> ${HUMAN}"

image

위와 같이 수정한 후 build 결과를 한번 봐보자.

image

정상적으로 출력 되었다.

암호화된 환경변수

  • API KEY 같은 것을 관리할 때 유용하다.
  • Settings - secret 탭에서 관리 가능하며, 접근 코드는 공식 문서를 참고하면 된다.
steps:
  - name: Hello World Action
    with: # Set the secret as an input
      super_secret: ${{ secrets.SuperSecret }}
      # super_secret: ${super_secret}
    env:
      super_secret: ${{ secrets.SuperSecret }}

그럼 한번 SECRET KEY를 만들어보자.

My Repository -> Settings -> Secrets and variables - Actions

위 경로로 들어간 후 New repository secret 클릭

아래 이미지와 같이 시크릿 키를 지정해보자

image

시크릿 키 지정 후 sub.yml 을 아래와 같이 수정 후 build 결과를 확인하자.

image

name: sub

on: [push]

jobs:
  build:
    runs-on: ubuntu-latest
    steps-on:
      - uses: actions/checkout@v2
      - name: 1. 환경변수로 출력
        env:
          KEY: ${{ secrets.SECRET_KEY }}
        run: echo "Key : ${KEY}"

참고 문서

Environment variables

Context and expression sysntax for GitHub Actions


Loading script...