[Capstone] Travis CI Build, Test Failed 원인 분석 및 해결

홍정완·2022년 7월 28일
0

Capstone Project

목록 보기
5/7
post-thumbnail

2시에 시작해서 10시에 트러블 슈팅 잡았습니다.
막상 해결하고 나니 단순한 문제였는데 오히려 많이 단순해서 해결하기까지 시간이 오래 걸린 트러블 슈팅이었습니다.



평소에 스택 트레이스 읽는 습관이 잡혀있어 다양한 시도가 가능했습니다. 앞으로도 계속 읽어야겠네요




배경


Travis CI Build Test Failed


Build가 너무 느리고, 모든 테스트 케이스가 실패하는 상황 발생

local에서는 clean package 정상 동작




원인 분석 및 해결


Travis 파일 암호화


GitHub Repository에는 .gitignore를 이용해 yml 파일들을 제외하고 push 합니다.
그렇기에 Travis CI Build 과정에서 yml 파일이 제외된 상태로 Build가 진행된다고 생각했습니다.


그렇다면 Travic CI의 암복호화 기능을 사용해 private 파일들을 암호화해서 git에 push 해보자.



① Ubuntu 20.04.3 LTS에 루비 설치

sudo apt-get update

sudo apt install ruby



② 루비를 이용해 Travis 설치

sudo gem install travis



③ Travis 로그인

travis login --pro --github-token [깃허브 토큰]



④ travis.config.yml 수정

vim ~/.travis/config.yml

endpoint를 com으로 변경해 주자.


com으로 변경 안 해주면 아래 이미지처럼 됩니다...



⑤ 암호화

travis encrypt-file --pro application.yml

yml 파일 or 암호화가 필요한 파일 위치로 이동 후 암호화 진행




⑥ .travis.yml 파일 before_install 추가

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 파일에 문제가 있어 아래의 접근이 필요했습니다.




.enc 파일 인식 오류


파일 암호화 과정은 이상 없다고 판단


local에서는 잘 동작해도 막상 배포하면 제대로 동작되지 않는 경험들이 떠올랐고, 애초에 applicaton.yml 파일 비롯한 yml 파일들이 잘못된 건 아닐까?라고 생각했습니다.


DB 연결을 못 시킨다는 에러 메시지, 혹시나 해서 드라이브 경로 문제인가 확인해 봤습니다.


driver-class-name: com.mysql.jdbc.Driver

변경해 주고 나서 .enc 파일 인식 정상 동작




결과


Travis CI, Test 전부 통과 및 Build 성공




느낀 점


실제로 GitHub에는 yml 파일들을 제외하고 push 하기 때문에 암호화 과정을 진행을 하긴 했어야 했습니다.
다만 정상적으로 암호화를 진행하고, 마지막 핀트를 못 찾아서 소요 시간이 오래 걸렸습니다.


3개월 넘게 local 및 EC2 환경에서 정상 동작해서 신뢰도가 너무 높았습니다.


무조건적인 신뢰는 생각의 범위를 좁힐 수 있다고 생각되는 트러블 슈팅이었습니다.

profile
습관이 전부다.

0개의 댓글