환경 별로 다른 값을 전달하는 것이 중요한 이유
환경 별로 다른 값이 필요한 이유는 환경 별로 아이디/비밀번호 혹은 DB 이름 등이 다를 수 있기 때문이다. 실제로 많은 앱들은 테스트용 환경과 릴리즈 환경을 나누어 놓는데 이는 보안에 매우 중요하다.
이 문제를 해결하기 위해 GitHub Actions는 같은 Key로 Secrets에 접근한다고 하더라도 환경 별로 다른 값을 전달할 수 있는 기능을 제공한다. 이 글에서는 바로 환경 별로 다른 Secrets 를 전달하는 방법에 알아볼 것이다.
환경별로 다른 Secrets 생성하기
환경 별로 다른 Secrets를 생성하기 위해서는 GitHub의 Environment 기능을 설정해야 한다. Environment는 Settings-Environments 에 위치한다.
* 참고로 GitHub의 Environment 기능은 Pro 모드부터 제공한다.
Environment 생성하기
Environment 를 생성하기 위해서는 오른쪽 위의 New environment 버튼을 클릭한다. 그러면 아래와 같은 화면이 나온다.
이름에 Test라고 설정하고 Configure environment 버튼을 눌러 Environment를 생성한다.
Environment에 Secrets 생성하기
그러면 다음과 같은 화면이 나온다. Environment에 Secrets를 생성하기 위해서는 아래쪽에 있는 Add secret 버튼을 클릭하자
그러면 아래와 같은 화면이 나온다. 우리는 이에 대해 TOKEN을 설정할 것이다. 방금 생성한 environment는 test 환경이기 때문에 test-token을 값에 입력하고 Add secret 버튼을 누른다.
그러면 Environment secrets에 TOKEN이 생성되었다고 나온다.
환경별로 Secrets 조회하기
환경 별로 다른 Secrets를 조회하기 위해서는 환경에 environment: [Environment 명] 을 설정해주면 된다. 위에서 Environment 이름을 Test로 설정해주었으므로 environment: Test 로 설정한다. 이후 secrets.TOKEN을 통해 해당 environment의 variable에 접근한다.
name: Environment - Secrets
on: workflow_dispatch
jobs:
secrets:
environment: Test
runs-on: ubuntu-latest
steps:
- name: Access Secrets
run: |
echo "Secret Token : ${{ secrets.TOKEN }}"
그러면 아래와 같이 secrets.TOKEN에 잘 접근되는 것을 확인할 수 있다.
*조회가 안되면 빈칸이 나온다.