환경 변수
일단 각 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 항목을 클릭 후 생성하면 된다
with 키워드
Actions들을 보다보면 env
느낌처럼 with
키워드를 사용하여 변수들을 정의 해놓은 것을 종종 볼 수가 있다
jobs:
my_job:
steps:
- name: My Job
uses: actions/setup-python@v2
with:
py1: "hello"
py2: "world"
with
은 actions에 의해 정의된 파라미터들을 나열해주는 키워드이다. 위의 예제에서 py1
, py2
은 actions/setup-python@v2
을 위한 파라미터라는 뜻이 된다.
파라미터들은 대문자로 변경되고 INPUT_
접두어가 붙여져서 INPUT_PY1
이라는 환경 변수로 변환된다