Profile picture

[Github Actions] Workflows에서 변수 사용하기

JaehyoJJAng2023년 04월 17일

환경 변수

일단 각 workflows가 실행 될때 마다 Github Actions가 가지고 있는 기본 환경 변수가 제공 된다

물곤 사용자가 원하는 환경 변수를 직접 설정 할 수도 있다. 환경 변수는 step,job 그리고 workflow 전체의 범위로 사용 가능하다

아래 예제는 step과 job에 환경 변수를 사용한 경우의 예제이다

jobs:
  test_job:
    runs-on: ubuntu-latest
    env:
      TEST_ENV: test1234
    steps:
      - name: "Hello Test World"
        if: env.TEST_ENV == 'test1234'
        run: echo "첫 번째 테스트 환경변수의 값은 ${TEST1}\n두 번째 테스트 환경변수의 값은 ${TEST2}\n전역 테스트 환경변수의 값은 ${TEST_ENV}입니다."
        env:
          TEST1: "Test1 입니다"
          TEST2: "Test2 입니다"

여기서 TEST_ENV 변수와 TEST1 변수가 사용되는 부분을 살펴보자. TEST_ENV 변수는 env.TEST_ENV 형식으로 작성되었다. 왜 그럴까?

run 키로 실행하기 되는 명령어, 즉 run 키로 읽혀지는 환경 변수는 runner 운영체제에서 읽혀진다. job이 runner로 보내진 뒤 변수들이 대체된다

env.TEST_ENV 으로 표현된 이유는 if 키에 있다. if 키로 읽히는 변수는 workflow가 runner로 보내기 전 처리 될 때 대체되어야 하기 때문에 env 를 사용한 것


위의 예제는 명령어를 위한 환경변수 였다면, 아래처럼 actions를 위해 환경 변수를 설정할 수도 있다

- name: Create Python Setup
  uses: actions/setup-python@v2
  env:
    SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }}

Secret 환경변수

위의 코드에서 {% raw %} ${{ secrets.SLACK_BOT_TOKEN }} {% endraw %} 표현을 확인할 수 있다.
외부에 노출이 되면 안되는 민감한 정보들이 있는데 Github Actions는 이런 정보를 Github에 secrets로 저장해놓고 workflows에서 환경 변수로 사용할 수 있도록 해준다

secrets 환경 변수는 아래 사진에 표시된 레포지토리의 Settings 탭을 들어간 후 왼쪽 사이드 바의 Secrets 항목을 클릭 후 생성하면 된다
image


with 키워드

Actions들을 보다보면 env 느낌처럼 with 키워드를 사용하여 변수들을 정의 해놓은 것을 종종 볼 수가 있다

jobs:
  my_job:
    steps:
      - name: My Job
        uses: actions/setup-python@v2
        with:
          py1: "hello"
          py2: "world"

with은 actions에 의해 정의된 파라미터들을 나열해주는 키워드이다. 위의 예제에서 py1, py2actions/setup-python@v2 을 위한 파라미터라는 뜻이 된다.
파라미터들은 대문자로 변경되고 INPUT_ 접두어가 붙여져서 INPUT_PY1 이라는 환경 변수로 변환된다


Loading script...