✏️ Jenkins
개발자가 소프트웨어를 구축, 테스트, 배포할 수 있게 해주는 오픈 소스 자동화 서버
주요 특징
1. CD/CD
- 제킨스는 주로 CI/CD 워크플로우를 구현하는데 사용된다.
- 통합, 테스트, 전달, 배포에 이르는 소프트웨어 전달의 다양한 단계를 자동화하는 것을 포함한다.
- 개발자가 버그를 더 빨리 찾고 수정하고, 소프트웨어 품질을 향상시키고, 새로운 소프트웨어 업데이트의 배포 시간을 단축하는 데 도움이 된다.
2. Plugins
- 제킨스의 가장 강력한 기능 중 하나는 플러그인을 통한 확장성이다.
- 다양한 종류의 도구와의 통합을 제공하고, 다양한 기능을 활성화한다.
3. 분산 빌드
- 제킨스는 분산 빌드를 지원하며, 이는 작업 부하를 여러 기계에 분산시킬 수 있음을 의미한다.
- 작업을 여러 기계에서 병렬로 실행하여 빌드와 테스트 시간을 단축한다.
4. 간편한 구성
- 제킨스는 설정하고 구성하기 쉽다.
- 내장된 웹 인터페이스를 통해 시스템과 작업을 구성하고 상태를 모니터링 할 수 있다.
5. 오픈 소스
- 제킨스는 강력한 커뮤니티에 의해 지원되는 오픈 소스 프로젝트로, 그 개발에 기여하고 플러그인 생태계를 유지한다.
- 제킨스는 업데이트 설치, 깨진 빌드 수정 등의 정기적인 유지 보수가 필요하다. 이는 종종 자동화되지만, 때로는 수동 개입이 필요할 수 있다.
다양한 Plugins 연동
- Build Plugins: Maven, Gradle, Ant ...
- VCS Plugins: Git, SVN ...
- Languages Plugins: Java, Python, Node.js ..
✔️ Jenkins 설치 및 설정
jenkins 자체가 자바 웹 어플리케이션 형태로 구성되어 있어 JDK가 설치되어 있는 환경이라면 바로 실행할 수 있다.
https://www.jenkins.io/download/
바로 docker hub 사이트로 이동하여 설명대로 jenkins 이미지를 다운 받는다.
https://hub.docker.com/r/jenkins/jenkins
도커 이미지 다운로드
- docker pull [계정이름]/[가지고 올 레포지토리 이름]
docker pull jenkins/jenkins
Jenkins 실행
https://github.com/jenkinsci/docker
- docker run -d -p 8080:8080 -p 50000:50000 --name jenkins-server --restart=on-failure jenkins/jenkins:lts-jdk11
- docker run -d -p 8080:8080 -p 50000:50000 --name jenkins-server --restart=on-failure -v jenkins_home:/var/jenkins_home jenkins/jenkins:lts-jdk11
---------------------------------------------------------------------------------------------------------------------
8081[외부포트]:8082[내부포트] => 컨테이터 내부에 있는 포트를 컨테이너 밖에 있는 환경에서 어떻게 접속해서 사용할 것인지
컨테이너 밖에서 8081이라는 포트를 사용하면 컨테이너 내부로 8082 접속이 되겠다.
50000[외부]:50000[내부] => 컨테이너 외부에서 50000번 호출하면 컨테이너 내부가 50000번 응답하겠다.
--name jenkins-server => 컨테이너 이름 (없으면 랜덤으로 생성됨)
-restart=on-failure => 실패하면 재시작 해주겠다.
-d 옵션 => 백그라운드 형태로 기동 (콘솔과 분리)
-v 옵션 => 도커를 설치한 pc 디렉토리와 도커 내부의 디렉토리와 연결하는 마운트 설정 (백업)
---------------------------------------------------------------------------------------------------------------------
docker run -d -p 8080:8080 -p 50000:50000 --name jenkins-server --restart=on-failure jenkins/jenkins:lts-jdk11
docker ps
docker ps 명령어를 통해 현재 도커가 up 상태임을 확인 가능
젠킨스 초기 패스워드 확인
docker logs [컨테이너 이름]
docker logs jenkins-server
[eada87f2931d4261a6992c5842963d93] 복사
젠킨스 접속
http://localhost:[포트번호]
http://localhost:8080
복사해준 초기 비밀번호 입력
접속 성공
Docker 컨테이너에 터널링으로 접속
- docker exec -it [컨테이너 이름] bash