현재 Wondoo
라는 프로젝트를 진행하고 있는데 Gitlab
에서 작성한 코드를 배포 자동화를 하기 위해서 선택한 도구로 젠킨스를 선택하였습니다!
해당 포스트에서는 젠킨스를 설치하고 간단한 테스트까지 진행해보도록 하겠습니다.
현재 AWS EC2
에는 Docker
가 설치되어 있습니다. 젠킨스를 설치되어 있는 도커 환경에서 동작하도록 해보도록 하겠습니다.
일단 먼저 Dockerhub - Jenkins에서 이미지를 확인해보도록 하겠습니다.
다음과 같이 친절하게 이미지를 어떻게 사용하면 좋은 알려주고 있습니다.
저는 젠킨스를 새로 실행해도 데이터가 사라지지 않도록 볼륨을 사용할 것 입니다.
먼저 관리하기 쉽도록 docker_volume
이라는 폴더를 생성하여 관리하도록 하겠습니다.
해당 폴더 아래에 jenkins
를 위한 폴더도 생성하도록 하겠습니다.
정상적으로 폴더를 생성하였습니다.
저는 sh
파일을 만들어 한번에 실행시키고 싶기 때문에 실행 스크립트를 작성해보도록 하겠습니다.
도커 실행 스크립트를 관리하기 위해서 docker-script
라는 폴더도 생성하도록 하겠습니다.
해당 폴더에서 vi
편집기를 사용하여 작성해보도록 하겠습니다.
vi jenkins_script.sh
## vi
docker run -d --name jenkins_container -p 8080:8080 -p 50000:50000 -v /home/ubuntu/docker_volume/jenkins:/var/jenkins_home jenkins/jenkins:jdk17
다음과 같이 작성하였습니다.
현재 사용하려고 하는 포트는 열려있지 않습니다. ufw
를 사용하여 해당 포트를 열어줍니다.
sudo ufw allow {port}
sudo ufw reload
sudo ufw status
해당 스크립트가 있는 폴더에서 sh jenkins_script.sh
로 실행합니다.
결과로 정상적으로 동작하는 것을 확인할 수 있고 사이트에도 접속을 해보도록 하겠습니다.
정상적으로 동작하는 것을 확인하였고 해당 위치에 있는 비밀번호를 확인하여 기본적인 세팅을 진행하도록 하겠습니다.
위 사진에서 정상적으로 접속을 하는 것을 확인하였고 초기 비밀번호를 확인해보도록 하겠습니다.
먼저 도커 볼륨으로 연결을 해두었기 때문에 비밀번호가 있는 위치로 이동하여 확인하는 방법입니다.
cat {docker_volume 위치}/secrets/initialAdminPassword
docker exec 로 직접 접속하여 확인할 수 있습니다.
# AWS EC2
docker exec -it {컨테이너 정보} /bin/bash
# Docker Container
cat /var/jenkins_home/secrets/initialAdminPassword
한번에 확인하는 방법은 다음과 같습니다.
docker exec {컨테이너 정보} cat /var/jenkins_home/secrets/initialAdminPassword
개인적으로 가장 쉬운 방법이라고 생각합니다.
docker logs {컨테이너 정보}
위와 같은 명령어를 작성하면 최근 로그들을 보여주는데 처음실행 할 때 비밀번호를 확인할 수 있도록 번호를 보여줍니다
위에서 알아낸 비밀번호를 입력한 후 아래 Continue
버튼을 클릭하여 다음으로 넘어갑니다.
이후 젠킨스에서 추천하는 플러그인을 설치합니다.
다음으로 어드민 계정을 생성합니다. 필요한 정보를 입력합니다.
젠킨스의 URL
을 확인한 뒤 작성하거나 기본값을 사용합니다.
여기까지 진행하면 정상적으로 실행할 수 있습니다.
플러그인이 정상적으로 설정되지 않는 경우가 발생하였습니다.
해결하기 위해서 먼저 젠킨스 플러그인 미러사이트를 찾아봤습니다. - Jenkins Update Center - Github
그 다음 가장 빠른 데이터 센터를 찾기 위해서 아래와 같은 명령어를 실행하였습니다.
curl -sSL https://cdn.jsdelivr.net/gh/lework/jenkins-update-center/speed-test.sh | bash
다음과 같이 업데이트 사이트를 미러 사이트로 수정할 수 있습니다.
이렇게 AWS EC2 환경에서 Docker을 사용하여 Jenkins를 설치 및 설정을 진행하였습니다.