Travis CI로 설정파일 암호화 시키기

aws

before… #

Spring Boot 프로젝트를 진행하면서 github에서도 public으로 올리다보니, 나중에는 민감정보까지 application.yml에 들어가는 경우가 빈번했습니다.

이를 그냥 gitignore로 설정하여서 올리지않으면 상관없었지만, AWS를 다루면서 CI와 CD를 다루면서 깃헙과 연동이 되어 자동배포를 구현하니 이렇게 하는 방법은 비효율적이였습니다.

이를 jar의 외부 디렉토리로 빼서 설정하는 방법도 있었는데, 저는 개인적으로 현재 Travis CI를 사용중이라 이 방법이 편할 것 같아 공부해보았습니다.

또한, 이 암호화 방법은 윈도우에서는 bad decrypt 이라는 오류가 나기때문에 애초에 윈도우 사용자는 WSL(윈도우 서브시스템 리눅스)를 사용하여 진행하는것이 좋을 것 같습니다.

1. 로그인 #

travis endpoint
travis endpoint --com --set-default
travis login --pro --github-token <ghp_...로 시작하는 github token>
travis whoami

2. 파일 암호화 #

// tar -cvf <tar파일 이름> <암호화할 파일 이름> <파일2>
$ tar -cvf setting.tar src/main/resources/application.yml

이제 Travis 로 파일을 암호화시킵니다.

// travis encrypt-file <암호화할파일명> --pro --add
$ travis encrypt-file setting.tar --pro --add

끝에 --add 명령어를 붙이면 .travis.yml 파일에 자동으로 명령어가 추가됩니다.

3. Github Push #

암호화에 성공하였다면 아래와 같은 안내문이 뜨는것을 볼 수 있습니다.

Make sure to add setting.tar.enc to the git repository.
Make sure not to add setting.tar to the git repository.
Commit all changes to your .travis.yml.

.gitignore 에서 아래처럼 암호화시킨 파일 두개를 github에 올리지않도록 설정합니다.

application.yml
setting.tar
...
before_install:
- openssl ...
  -in setting.tar.enc -out setting.tar -d
- tar xvf setting.tar -C src/main/resources
...

마지막으로 github에 push 하여 travis에서 build passing을 기도합니다.

참고 #