간단하게 우리 협업프로젝트 CI/CD구조가 이러하다. 이번 게시글에서는 ec2에서 docker를 활용해서 어떻게 jenkins를 설치하는지 설명할 것이다. 다만 aws ec2 생성은 되어있다는 전제하에 진행하는 것이다.
Jenkins 도입한 이유
다양한 CI/CD 도구가 있지만 Jenkins를 선정하였다. 그 이유는 우리 팀은 CI/CD를 잘 아는 팀원들이 없다. 그래서 생태계가 넓고 레퍼런스가 많은 도구를 사용하는 것이 좋다고 생각했다. 래퍼런스가 많으면 초기 학습 비용도 적게 들고 이슈가 발생했을때도 비교적 쉽게 해결가능하기 때문이다.
Docker를 활용
EC2에 docker를 활용해서 Jenkins를 설치하였다. 그 이유는 jenkins를 직접 설치한다면 신경써야하는 환경설정들이 정말 많다.
그러나 도커를 활용하면 간단하게 젠킨스를 설치하고 서버를 띄울 수 있다.
우분투에 도커 설치해보기
// 우분투 apt 패키지 인덱스 최신화
$ sudo apt-get update
$ sudo apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release
// 도커 공식 GPG키 추가
$ sudo mkdir -p /etc/apt/keyrings
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
// 레포지토리 셋업
$ echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
// 도커 엔진 설치
$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin
//도커 설치 확인
$ sudo docker run hello-world
도커 설치 확인시 "Hello from Docker!" 구문이 있으면 성공이다.
젠킨스 이미지 다운, 컨테이너 실행
젠킨스 이미지 다운로드
$ docker pull jenkins/jenkins:lts
젠킨스 컨테이너 띄우기
$ sudo docker run -d -p 8081:8080 -v /jenkins:/var/jenkins_home --name jenkins -u root jenkins/jenkins:lts
- p 8081:8080 : 나의 경우 jar파일을 8080으로 띄울거라서 jenkins 포트 번호는 8081로 변경하였다
- v /jenkins:/var/jenkins_home : 도커 컨테이너의 경우 데이터는 컨테이너가 다운되면 사라진다.. 그래서 도커의 데이터를 보존하기 위한 방법 중 볼륨 파운트를 사용했다. /var/jenkins_home이라는 디렉토리에 /jenkins와 마운트하여 데이터를 보존했다.
- name : 도커 컨테이너 이름
- u : 컨테이너가 실행될 리눅스의 사용자 계정 명시
docker-compose 사용하기
위의 명령어를 매번 사용하면 컨테이너를 실행할때마다 매우 귀찮다. 그래서 도커는 docker-compose라는 것을 지원한다.
도커 컴포즈를 통해 한번에 여러개의 컨테이너를 실행할 수 도 있다. 나의 경우 jenkins만 실행하도록 돕게 하였다.
도커 컴포즈 설치
$ sudo apt install docker-compose
해당 도커 컴포즈를 실행할 경로에서 docker-compose.yml파일을 만들고 아래 내용을 작성
version: "3"
services:
jenkins:
image: jenkins/jenkins:lts
user: root
volumes:
- ./jenkins:/var/jenkins_home
ports:
- 8081:8080
실행할때는
$ sudo docker-compose up -d
젠킨스 설정
젠킨스 컨테이너가 잘 돌아간다면 ec2의 퍼블릭 ip로 IP:8081해주면 jenkin화면이 보일 것이다
여기서 admin뭐시기 패스워드는 ec2 콘솔에서
$ sudo docker logs jenkins
Jenkins initial setup is required. An admin user has been created and a password generated.
Please use the following password to proceed to installation:
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
저 XXX의 부분을 넣어주면 된다.
이후 "Install suggested plugins"를 클릭해주면 완료!
다음은 github webhook과 jenkins를 어떻게 연결했는지 작성할 것이다!
'프로젝트 > 협업 프로젝트(2023.12.18-2024.01.25)' 카테고리의 다른 글
[Key Word 개발기] AWS 배포 - jenkins 지속적 배포 구축하기 (0) | 2024.01.19 |
---|---|
[Key Word 개발기] AWS 배포 - Github WebHook과 Jenkins (0) | 2024.01.19 |
[Key Word 개발기] AWS 배포 - Github Actions (0) | 2024.01.16 |
[Key Word 개발기] Aws S3 + CloudFront (cf. lambda) (1) | 2024.01.08 |
[Key Word 개발기] @WebMvcTest 없이 테스트?? (1) | 2024.01.06 |