2시에 시작해서 10시에 트러블 슈팅 잡았습니다.
막상 해결하고 나니 단순한 문제였는데 오히려 많이 단순해서 해결하기까지 시간이 오래 걸린 트러블 슈팅이었습니다.
평소에 스택 트레이스 읽는 습관이 잡혀있어 다양한 시도가 가능했습니다. 앞으로도 계속 읽어야겠네요
Build가 너무 느리고, 모든 테스트 케이스가 실패하는 상황 발생
local에서는 clean package 정상 동작
GitHub Repository에는 .gitignore를 이용해 yml 파일들을 제외하고 push 합니다.
그렇기에 Travis CI Build 과정에서 yml 파일이 제외된 상태로 Build가 진행된다고 생각했습니다.
그렇다면 Travic CI의 암복호화 기능을 사용해 private 파일들을 암호화해서 git에 push 해보자.
sudo apt-get update
sudo apt install ruby
sudo gem install travis
travis login --pro --github-token [깃허브 토큰]
vim ~/.travis/config.yml
endpoint를 com으로 변경해 주자.
com으로 변경 안 해주면 아래 이미지처럼 됩니다...
travis encrypt-file --pro application.yml
yml 파일 or 암호화가 필요한 파일 위치로 이동 후 암호화 진행
before_install:
- openssl aes-256-cbc -K $encrypted_1116e8e6e492_key -iv $encrypted_1116e8e6e492_iv -in application.yml.enc -out ./src/main/resources/application.yml -d
- openssl aes-256-cbc -K $encrypted_2e8be43b8f53_key -iv $encrypted_2e8be43b8f53_iv -in application-oauth.yml.enc -out ./src/main/resources/application-oauth.yml -d
- chmod +x mvnw
.enc 파일은 root 디렉터리로 이동
yml 파일 등은 경로 적어주기
여기까지 잘 진행했다면 대부분 트러블 슈팅을 해결했을 겁니다.
저의 경우는 하나 더 application.yml 파일에 문제가 있어 아래의 접근이 필요했습니다.
파일 암호화 과정은 이상 없다고 판단
local에서는 잘 동작해도 막상 배포하면 제대로 동작되지 않는 경험들이 떠올랐고, 애초에 applicaton.yml 파일 비롯한 yml 파일들이 잘못된 건 아닐까?라고 생각했습니다.
DB 연결을 못 시킨다는 에러 메시지, 혹시나 해서 드라이브 경로 문제인가 확인해 봤습니다.
driver-class-name: com.mysql.jdbc.Driver
변경해 주고 나서 .enc 파일 인식 정상 동작
Travis CI, Test 전부 통과 및 Build 성공
실제로 GitHub에는 yml 파일들을 제외하고 push 하기 때문에 암호화 과정을 진행을 하긴 했어야 했습니다.
다만 정상적으로 암호화를 진행하고, 마지막 핀트를 못 찾아서 소요 시간이 오래 걸렸습니다.
3개월 넘게 local 및 EC2 환경에서 정상 동작해서 신뢰도가 너무 높았습니다.
무조건적인 신뢰는 생각의 범위를 좁힐 수 있다고 생각되는 트러블 슈팅이었습니다.