먼저 깃허브 마스터 브랜치에 푸쉬하면, 이를 젠킨스가 webhook으로 인식하여 해당 레포지토리를 pull한뒤 이를 그래들을 사용해 빌드합니다.
jar 파일이 완성되면, Docker는 기존 컨테이너를 종료시키고, 컨테이너와 이미지를 삭제한뒤, DokcerFile을 통해 새로운 컨테이너를 생성하여 이를 실행시켜 8080포트에 연결합니다.
보통은 젠킨스를 사용하는 EC2 인스턴스를 하나 더 두어서, 젠킨스와 도커 컨테이너가 돌아가는 인스턴스를 분리하는 방식을 많이 사용합니다. 하지만 프리티어에서는 인스턴스 하나만이 무료로 사용가능하므로 (정확히는 750시간의 사용량이 제공되기 때문에 2개의 인스턴스를 사용하면 사용량이 375시간으로 줄어들게 됩니다.) 하나의 인스턴스를 통해 이 배포과정을 구현해보도록 하겠습니다.
먼저, EC2에 젠킨스 컨테이너와 서버 컨테이너를 만들어서 하나의 인스턴스로 두개의 인스턴스를 사용하는것 처럼 사용할 것이기 때문에, EC2인스턴스 접속해서 Docker를 설치해주겠습니다.
아래 명령을 통해서 우분투의 apt의 패키지 인덱스를 최신화하고, apt가 HTTPS를 통해 패키지를 설치할 수 있도록 설정합니다.
$ sudo apt-get update
$ sudo apt-get install \
ca-certificates \
curl \
gnupg \
lsb-release
$ 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! 메시지가 출력되면 성공적으로 도커 설치가 완료된 것 입니다. 다음 단계로 넘어가볼까요? 🤗
$ sudo docker pull jenkins/jenkins:lts
위 명령을 통해 Jenkins LTS(Long Term Support) 버전의 이미지를 다운로드 받습니다.
$ sudo docker run -d -p 7777:8080 -v /jenkins:/var/jenkins_home --name jenkins -u root jenkins/jenkins:lts
위 명령을 통해 다운로드 받은 젠킨스 이미지를 컨테이너로 띄울 수 있습니다. 사용된 각 옵션을 간단히 알아볼까요?
아래링크를 통해 설정해주자 !
https://green-joo.tistory.com/18
도커를 사용하여 젠킨스 컨테이너가 EC2 인스턴스에 성공적으로 띄워졌다면, EC2의 퍼블릭 IP를 통해 외부에서 접속할 수 있을 것 입니다.
$ sudo docker logs jenkins
위 명령을 사용하면, jenkins 컨테이너에 출력된 로그를 확인할 수 있습니다. 젠킨스를 최초로 설치하고 실행하면 사진에서 요구하는 initial admin password를 출력해주는데요, 로그를 확인해봅시다.
*************************************************************
*************************************************************
*************************************************************
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
This may also be found at: /var/jenkins_home/secrets/initialAdminPassword
*************************************************************
*************************************************************
*************************************************************
위에서 표시된 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 를 웹사이트에 넣어주시면 됩니다.
그 다음 위 화면에서 Install suggested plugins를 클릭하여 추천되는 플러그인을 설치합니다. 그 이후 요구되는 여러 정보의 입력을 끝 마쳐주세요.