깃허브에 프로젝트를 올릴 때, 숨겨야 하는 값들이 존재한다.
대표적으로 각종 API Key등 보안상 중요한 값들을 담아놓는 local.properties, google-services.json 등의 파일 같은 경우, 공개 레포지토리에 올라가는 것이 좋지 않으므로, 보통 gitIgnore로 지정하여 사용하는데, 문제는 Github Action 같은 빌드 및 배포 자동화를 구축해놓는 경우, 해당 값들을 찾을 수 없기 때문에 오류가 발생한다.
이럴 때 사용하는 가장 대표적인 방법은 CI 과정에서 임의로 해당 값들을 담은 파일을 생성 후 진행하는 것이다.
이 포스팅에서는 Github Action을 사용할 때 보안상 감추어야 할 값들을 저장해놓은 파일을 빌드 자동화 도중 자동으로 생성하여 사용하는 방법에 대해 기록한다.
(Github Action을 이용한 CI/CD 방법 자체에 대한 포스팅은 추후 작성할 예정)
깃허브 레포지토리에서 Settings -> Secrets로 가보면 New repository secret 버튼을 통해 원하는 값을 key-value 형태로 저장할 수 있으며, 한번 만들어놓으면 절대 value값을 확인할 수 없게 되어있다.
이곳에 다음과 같이 google-services.json 파일의 값들을 저장한다. (외에 각종 api key값들도 마찬가지 방법으로 저장한다.)
그리고 Github Action에서 사용하는 yml 파일에 빌드단계에 다음과 같은 구문을 추가한다.
- name: Make GoogleService-json
env:
GOOGLE_SERVICE_JSON: ${{ secrets.GOOGLE_SERVICE_JSON }}
run: |
echo "$GOOGLE_SERVICE_JSON" > ./app/google-services.json
이처럼 빌드 과정에 secret에 저장해놓은 값을 토대로 app 디렉토리에 google-services.json 파일을 임의로 만들어 사용하여, 보안상 중요한 값들을 레포지토리에 직접 올리지 않고 자동화를 구축할 수 있다.