이번에 지속적 통합 (Continuous integration), 지속적 배포(Continuous Delivery)에 대해서 적용해 보았습니다.
통합하는 이유는 각각의 목적으로 관리하기 위해 독립적으로 여러 브랜친 나누어진 소스코드들을 하나의 브랜치로 통합하고, 배포하기 위해서입니다.
통합 배포 도구는 TeamCity,AWS CodeDeploy,jenkins,DeployBot 등등 찾아보니 정말 많은 종류들이 있었지만 그 중에서도 이번에 git에 있는 코드들을 통합하기 위해 사용해 봤던 툴은 젠킨스였습니다.
젠킨스를 사용한 가장 큰 중요한 점은 유료 툴 중에서도 무료 툴이였으며, 현재까지 사용자가 많다는 점, 플러그인 지원이 좋은 편입니다. 또한 설치 및 사용이 간단합니다.
jenkins CI
젠킨스를 사용하기 위해서는 우선적으로 git에 있는 프로젝트부터 가져와야 합니다.
첫번째로 원하는 git 프로젝트의 주소창을 그대로 가져와 줍니다.
위에서 프로젝트의 주소를 가져왔다면 소스코드 관리에서는 레파지토리 주소를 가져와 주고 Credientials에서는 git에서 따로 token(엑세스 권한)을 만든 다음 Add로 설정합니다.
빌드 유발에서는 GitHub hook trigger for GITScm polling을 선택을 합니다.
webhook이란 클릭 시 실행되는 이벤트를 통해 git에 트리거를 유발시켜 빌드를 받을 수 있게 하는 것입니다.
트리거라는 단어를 정리하지 않고 넘어갔던 부분이 문제가 되었습니다. 트리거를 직역하면 방아쇠라는 뜻을 의미합니다.
이것을 컴퓨터 용어로 좀 더 쉽게 이해하면 트리거라는 것은 자동으로 실행하게 할 수 있는 역할을 한다는 것입니다.
각자에게 맞는 gradle 버전을 설정해주신 다음 Tasks에 bootjar를 작성해줍니다.
빌드 후 조치에는 log text에 BUILD SUCCESFUL을 적은 다음 Script에 SANPSHOT.jar 파일이 있는 경로를 작성해 줍니다.
java gradle 기준 경로 위치
java -jar build/libs/본인 파일명-0.0.1-SNAPSHOT.jar &
Spring과 tomcat이 실행되는 것을 알 수 있으며, port 8080으로 API 실행을 할 시 제대로 전송되는 것을 볼 수 있습니다.
CD 적용하기
webhook에서도 git으로 push를 해도 연결이 안되는 문제가 있었기 때문에 결국 로컬로 접속해 연결이 되는지 확인하기로 했습니다.
We couldn’t deliver this payload: failed to connect to host
ngrok - Online in One Line
Zero Trust Add SSO, Mutual TLS, IP Policy, and webhook signature verification.
ngrok.com
로컬에서 webhook에 접속하기 위해서는 ngrok 프로그램을 다운받아 주소를 받아야합니다.
ngrok http 젠킨스포트
Forwarding에 있는 주소를 복붙하셔서 webhook URL에 적으면 됩니다.
다시 git에 가서 push를 해보았을 때 정상적으로 push가 된 것을 볼 수 있습니다.
이번 젠킨스 CI/CD를 하면서 CI에 비해 CD에 대한 이해가 부족했던 것에 깨달았습니다. 지속적 배포라는 것이 자동화라는 것을 단순히 책으로만 외우다가 직접 git으로 push를 했을 때 젠킨스에서 빌드가 된다는 것을 보았을 때 이렇게 자동화가 이루어 지는 것이라면 너무 많은 빌드가 이루어지는 것보단 적은 빌드로 완성도 높은 프로그램을 만드는 것이 좋을 것이라 생각되었습니다.
'PROJECT > 티켓팅 서버 프로젝트' 카테고리의 다른 글
Login Check 기능 AOP 적용 (0) | 2022.11.03 |
---|---|
Custom Exception 적용하기 (0) | 2022.11.01 |
MVC 패턴 Controller 적용하기 (0) | 2022.10.05 |
locust 성능 테스트 시나리오 (0) | 2022.08.29 |
Junit 테스트코드(Junit5와 Junit4의 차이) (0) | 2022.07.18 |