클라우드

[CI/CD] Jenkins 시작하기 - 1-1. 초기 세팅과 플러그인 설치

szoo_ 2025. 1. 23. 02:37

이번엔 CI/CD 도구 중 하나인 젠킨스에 대해 설명하고 초기 세팅을 하는 것을 설명하겠다.

 

젠킨스는 오픈소스 기반의 자동화 서버로, 지속적 통합(Continuous Integration, CI)과 지속적 배포(Continuous Deployment, CD)를 효율적으로 관리하는 데 사용한다.

Java로 작성된 툴이지만 해당 언어를 잘 알지 못해도 금방 쓸 수 있고, 다양한 플러그인을 통해 확장성이 뛰어나다는 장점이 있다.

 

젠킨스의 주요 기능

      • 다양한 플러그인 지원: 
        젠킨스의 가장 큰 특징 중 하나가 다양한 플러그인을 사용 할 수 있다는 것이다. 이를 통해 젠킨스로 다양한 기능으로 활용 할 수 있어 확장성이 뛰어나다.
      • 분산 빌드:
        젠킨스는 하나의 서버에서만 빌드를 하는 것이 아니라, 여러 에이전트 노드와 마스터 서버로 구성하고 작업을 병렬 처리할 수 있어 빌드 시간을 단축 시킬 수 있다.
      • 유연한 파이프라인:Jenkinsfile을 활용하여 CI/CD 파이프라인을 코드로 정의할 수 있다. 이것을 통해 만약 깃허브 레포지토리에 위치 시킨다면 젠킨스 파이프라인 코드를 깃허브를 통해 관리하게끔 구성 할 수 있다.
      • 웹 UI 및 REST API 제공: 사용자가 웹 인터페이스나 API를 통해 쉽게 작업을 관리하고 통합 할 수 있다.

 

유의사항으로 젠킨스는 깃허브 직접 서버를 구축하고 직접 관리해야한다는 점이다.

그럼 깃허브 액션도 있는데 왜 젠킨스를 쓰는걸까?

1. 독립성: 보통 깃액션과 달리 젠킨스는 자체 서버에서 구동되어 해당 서버 자원을 완전히 독립적으로 관리 할 수 있고, 다양한 SCM(source code manager, 소스 코드 관리 시스템)과 통합 가능

2. 커스텀 환경 세팅: Jenkins는 서버에 미리 빌드에 필요한 라이브러리와 의존성을 설치 해두어 초기화 & 빌드 시간을 단축

3. 고급 커스터마이징: 다양한 플러그인을 통해 자신이 원하는 CI/CD 파이프라인으로 설계 가능 

4. 분산 빌드 및 확장성: 여러 에이전트 노드를 추가하여 병렬 빌드와 작업 분산을 효율적으로 처리

 


이제 젠킨스 환경을 세팅해보겠다.

젠킨스를 세팅하는 방법에는 다양하게 있지만 여기선 Docker 를 이용해서 설치하고 Web UI를 통해 세팅하는 것으로 진행 할 것이다.

 

- 세팅 환경: Linux Ubuntu 20.04 / 4 vCPU, 8 vRAM 

 

젠킨스는 다른 애플리케이션보다 무거운 편이다.

그래서 최소사양은 1 vCPU / 2 vRAM / 10GB 에서

적정사양 2-4 vCPU / 4-8 vRAM / 20-50 GB 이 될 수 있어야 한다.

 

AWS EC2로는 T3.micro는 swap 메모리를 하여 사용하거나 T3.medium 이상을 사용해야 무난히 사용 할 수 있다.

젠킨스 세팅하기

1. Jenkins Docker 이미지 실행

docker run -d -p 8080:8080 -p 50000:50000 --name jenkins -v jenkins_home:/var/jenkins_home jenkins/jenkins:lts

2. 젠킨스를 설치한 호스트에 접속

http://<서버 IP>:8080

 

해당 서버 IP에 맞게 접속한다면 위 사진과 같이 뜰 것이다. 

Administrator password를 입력하라고 되어 있지만, 우리는 이미지만 실행시켰지 아무런 비밀번호도 설정하지 않았다.

 

그럼 어떻게 해야할까?

바로 "해당 젠킨스 컨테이너의 로그를 확인하면 된다."


3. 젠킨스 초기 비밀번호 확인 및 입력

docker ps 
docker logs <젠킨스 컨테이너명>

1번에서 도커 이미지 실행 명령어를 그대로 사용했다면 'docker logs jenkins'를 하면 된다.

 

그러면 Please use the following password to proceed to installation: 아래에 뜨는 "8d95~"로 시작하는 문자열에 보일텐데

이것이 초기 비밀번호자 마스터 비밀번호니 잘 복사하자.

 

복사해둔 비밀번호를 1번 단계에서 보인 페이지에 입력하고 오른쪽 아래 Continue를 눌러 다음 페이지로 진행하면 된다.

 

 

! 유의사항 - 만약 젠킨스를 도커가 아닌 직접 호스트에 설치하여 진행하고 있다면?

cat /var/jenkins_home/secrets/initialAdminPassword

을 하여 해당 초기 비밀번호를 알아낼 수 있다. 

 


4. 기본 플러그인 설치하기

해당 페이지는 추천하는 기본 플러그인을 설치할 것인지? / 직접 플러그인을 설치할 것인지? 물어보는 것인데

우리는 아직 젠킨스라는 친구에 대해 잘 모르기에 Install sugested plugins를 눌러 추천해주는 것을 설치하도록 하자. 

 

무사히 잘 설치된다면 해당 페이지에서 설치하는 플러그인이 모두 초록색으로 띄어지고, 이후 다음 페이지에 자동으로 넘겨질 것이다.

하지만 간혹 몇몇 플러그인이 제대로 설치되지 않는 경우가 있는데,

걱정하지 말자 이후에도 젠킨스 설정에 들어가 플러그인은 직접 설치할 수 있다.


5. 사용자 아이디 만들기(선택)

해당 페이지는 첫 Admin User를 만드는 페이지이다.

사용자를 만들지 않고, 아까 우리가 가졌던 초기 비밀번호를 가지고만으로도 로그인(ID: admin / password: 초기 비밀번호)을 할 수 있지만, 초기 비밀번호는 바꿀수도 없고 외우기도 힘들기에

내가 편히 로그인 할 수 있는 계정을 따로 생성할 것이다.

- 참고로 이메일 주소는 제대로 안적어도 된다.  


6. 기본 링크 설정하기

해당 URL은 앞으로 해당 젠킨스에 접속하기 위한 기본 URL을 설정하는 것으로,

별다른 도메인을 사용하지 않는다면 넘어가면 된다.

 

! 주의 - 처음 설정한 URL과 호스트 IP가 바뀐다면 Jenkins가 제대로 작동하지 않을 수 있다.

특히 퍼블릭 인스턴스를 사용하는 경우, 인스턴스를 재시작하면 퍼블릭 IP가 변경되어 초기 설정한 URL과 달라질 수 있으므로 주의가 필요

Save and Finish를 해서 마무리 해주자

 

모두 설정이 끝난 모습


젠킨스 초기 세팅을 마치고 메인 페이지에 들어온다면 해당 사진과 동일한 것을 확인 할 수 있다.


젠킨스 플러그인 설치하기

자, 다음으로 우리는 젠킨스 파이프라인 구성에 필요한 플러그인을 설치하려한다.

초기에 설치했던 플러그인 외에 다른 플러그인을 사용하려하기 때문에 플러그인 설정을 들어갈 것이다.

 

설치해야 하는 플러그인은 아래와 같다.

- GitHub Integration: 깃허브와 연동
- Docker Pipeline: Docker 컨테이너 기반의 작업(이미지 빌드, 실행 등)을 파이프라인에서 관리

- Amazon ECR: AWS Elastic Container Registry(ECR)를 연동하여 Docker 이미지를 저장, 관리, 배포할 수 있도록 지원

- AWS Credentials: 젠킨스에서 관리 할 수 있는 Credential에서 AWS 자격 증명(IAM) 유형을 지원

 

그리고 플러그인은 Jenkins 관리 > Plugins > Available plugins 순으로 메뉴를 들어가면 된다.

(설치는 필요한 플러그인을 모두 체크하고 한번에 설치를 진행하면 된다.)

Jenkins 관리 클릭
Plugins 클릭
Available plugins 클릭

 

해당 탭에서 플러그인을 검색하여 설치하면 되는데, 간혹 제대로 입력했음에도 Available plugins 리스트에 뜨지 않는다면

이미 설치된 플러그인인지 Installed plugins 탭에서 확인해보자.

 

설치가 끝나고 제대로 적용시키기 위해 Jenkins 재시작을 시킬수도 있는데

도커로 띄운 젠킨스의 경우 컨테이너가 중지되므로, 다시 콘솔에 들어가 해당 컨테이너를 재시작 시켜주면 된다.

docker start jenkins # 플러그인 설치 후 젠킨스 재시작을 체크했을 경우

다음으로 진행 할 내용은 깃허브 레포지토리 키를 Credential에 Github token을 저장하고,

젠킨스 파이프라인을 구성하여 작동 시키는 내용을 다음 글에서 설명하겠다.

'클라우드' 카테고리의 다른 글

[CI/CD] CI/CD 알아보기  (0) 2024.09.23
Introduce. 클라우드 인프라 시작하기  (6) 2024.09.12