이번에 새로 프로젝트를 진행하면서 배우고 싶었던 기술을 학습하게 되었다. 바로 CI/CD이다. 혼자서 프로젝트를 진행하는 경우가 많아 CI/CD의 필요성을 크게 느끼지 못하여 기존에는 적용하지 않았지만 이번 프로젝트에서는 적용을 해보기로 하였다.
그렇다면 CI/CD라는 기술은 무엇일까? CI는 Continuous Integration의 약자로 지속적인 통합이라는 의미를 가지고 있다. CD는 Continuous Delivery의 약자로 지속적인 배포라는 의미를 가지고 있다.
실제 협업에서는 코드를 작성하고 컴파일을 한 다음에 빌드를 하고 서버로 배포를 하는 과정이 반복하고 있다. 그런데 이러한 작업은 개발하는 과정에서 매우 반복적으로 일어나게 된다.
CI/CD는 위 과정을 단순화하기 위해 즉 개발 단계를 자동화하여 보다 짧은 주기로 고객에게 제공하는 기술을 의미한다. CI/CD를 실제 프로젝트에 적용시키기 위해서 대표적인 CI/CD 툴인 Jenkins에 대해 학습을 해보겠다.
우선 Jenkins를 사용하기 위해 설치 및 세팅을 진행하였다. 지금은 AWS EC2 인스턴스를 생성하지 않아 로컬에 설치를 해야하는데 지금 학습하고 있는 Docker를 활용해서 Jenkins를 세팅하고 AWS EC2를 생성한 후에 Docker에 설정한 Jenkins 파일을 옮겨 실행시키기로 결정하였다.
현재 Java17 버전으로 프로젝트를 진행하기 때문에 Jenkins 버전 또한 17버전으로 맞추어 이미지를 다운받았다.
그리고 이미지를 통해 컨테이는를 생성하였고 옵션으로는 백그라운드 실행, 포트 지정,
컨테이너를 실행하고 해당 포트에 접속하면 다음과 같은 비밀번호 입력 화면이 나오게된다. 해당 비밀번호는 Docker 로그를 통해 알 수 있다.
그 다음 화면으로는 플러그인 설치 방법을 선택하는 화면이 나오게되는데 처음 진행하는 과정이여서 가장 많이 사용되는 플러그로 설정을 하였다. 필요로 하는 플러그인이 명확하다면 선택하여 진행하면 될 거 같다.
설치가 끝난 후 간단하게 회원가입을 완료하면 Jenkins 메인페이지를 볼 수 있다.
오늘은 CI/CD에 대한 개념과 CI/CD에 대표적인 툴인 Jenkins를 활용하기 위하여 설정을 방법을 학습하고 적용해보았다. 다음번에는 실제 진행하는 프로젝트에 Jenkins 기술을 적용시켜보겠다.