환경변수
- 구문 내에서 변수처럼 사용할 수 있는 값.
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} 이다."
토러블 슈팅
정상적으로 실행이 되는 것 같지는 않다.
보니까 환경 변수는 해당 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}"
위와 같이 수정한 후 build 결과를 한번 봐보자.
정상적으로 출력 되었다.
암호화된 환경변수
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
클릭
아래 이미지와 같이 시크릿 키를 지정해보자
시크릿 키 지정 후 sub.yml 을 아래와 같이 수정 후 build 결과를 확인하자.
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}"