connect Firebase Project in CircleCI

도입

RxSocialLogin 의 업데이트를 준비하다가, Demo 앱에 google-services.json 을 추가할 일이 생겼다. 해당 파일은 민감한 정보를 담고 있기에 레포, 특히 공개 레포에는 올리면 안 되는 정보로 .gitignore 에 추가하고 푸시를 진행했다.

그리고 몇 분 후, CircleCI 에서 빌드 오류 메일이 오게 되는데 내용은 google-services.json 가 누락되어 작업을 진행할 수 없다는 내용이었다.

이미 CircleCI docs 페이지 내 관련 내용이 있었지만 문서가 완전하지는 않아 여기에 정리해두려 한다.

과정

먼저, google-services.json 을 gitignore에 추가하여 Git에 올라가지 않게 한다.

그 다음, 터미널에서 google-services.json 이 있는 폴더까지 가서 openssl base64 -in google-services.json -out google-services-encrypted를 실행한다.

해당 커맨드를 실행하여 나온 google-service-encrypted 파일 내용을 복사한다.

그리고 CircleCI 내 프로젝트 설정에 들어가 Environment Variables에 들어간다. 그 다음, ‘Add Variable’를 누르고 Name 로는 GOOGLE_SERVICES_JSON, Value 로는 3번에서 복사한 base64를 붙여넣고 ‘Add Variable’를 누른다.

환경변수를 추가하였으면 프로젝트로 돌아가 CircleCI의 설정 파일인 config.yml 에 아래 내용을 추가한다. (적용된 전체 파일은 https://github.com/WindSekirun/RxSocialLogin/blob/1.0.0-dev/.circleci/config.yml 를 참고하면 된다.)

- run :
name: decrypt google-service.json for CI process
command: echo $GOOGLE_SERVICES_JSON | base64 --decode --ignore-garbage > ${HOME}/${CIRCLE_PROJECT_REPONAME}/app/google-services.json

반영된 내용을 푸시하면 빌드가 성공한다.

마무리

참고로, ${HOME}${CIRCLE_PROJECT_REPONAME}는 CircleCI 내부에 정의된 환경변수로 각각 /home/ubuntu, 프로젝트의 이름을 나타낸다.