notes
Jenkins - Info
Jenkins 기본 구성·주요 개념과 운영 시 확인할 설정 메모.
- Docker 로 띄우면 Java 버전을 따로 챙길 필요가 없다
- 초기 비밀번호는 jenkins_home 의 secrets 폴더에 있다
- GitHub 연동은 classic 토큰을 발급해서 쓴다
Jenkins 는
Jenkins 는 빌드, 테스트, 배포 같은 일을 자동으로 돌려 주는 오픈 소스 자동화 서버다. OS 패키지나 Docker 로 깔 수 있고, Java 만 있으면 war 파일 하나로 단독 실행도 된다.
처음 띄우고 첫 작업을 만들기까지 흐름은 이렇다. 빌드가 실패하면 고치고 다시 돌리고, 성공하면 배포까지 붙이는 식으로 넓혀 간다.
설치
맥에서 로컬로 써 볼 때는 Homebrew 의 jenkins-lts 가 제일 편하다. 다만 이건 Jenkins 프로젝트가 아니라 Homebrew 쪽에서 관리하는 패키지라 업데이트가 조금 늦을 수 있다. 서비스를 띄우고 http://localhost:8080 으로 들어가면 설치 화면이 나온다.
brew install jenkins-lts
brew services start jenkins-lts
brew services restart jenkins-lts
brew upgrade jenkins-lts
Java 버전도 챙겨야 한다. 2026년 4월에 나온 LTS 2.555.1 부터는 Java 21 이나 25 가 필요하고 17 은 더 이상 안 된다. 공식 Docker 이미지는 이미 Java 21 로 나와서 Docker 로 띄우면 신경 쓸 게 없다. 나는 Docker 로 띄웠다.
초기 비밀번호와 첫 설정
처음 들어가면 초기 관리자 비밀번호를 묻는다. 컨테이너가 다 뜬 때까지 조금 기다렸다가 secrets 폴더에서 꺼낸다.
sleep 20 && docker exec thankq-client-monorepo-jenkins-1 cat /var/jenkins_home/secrets/initialAdminPassword
그다음 플러그인 설치 화면이 나온다. 추천 플러그인으로 깔고 필요한 건 나중에 따로 추가했다.
설치가 끝나면 관리자 계정을 만들고 로그인한다.
GitHub 연동용 토큰은 GitHub Settings 의 Developer settings 에서 classic 토큰으로 발급했다. 권한은 화면처럼 세 가지를 체크했다.
토큰은 발급할 때 한 번만 보여서 바로 따로 보관해 둔다.
Freestyle 작업 만들기
새 Item 에서 Freestyle project 를 만든다.
저장소 연결과 빌드 설정은 아래처럼 잡았다.
컨테이너 안에서 직접 확인
docker compose 로 jenkins 랑 nginx 컨테이너를 같이 띄웠다. 뭔가 직접 확인할 게 있으면 docker exec 로 컨테이너 셸에 들어간다.
빌드 로그를 보면 Node 를 setup_18.x 로 깔았다. Node 18 은 지원이 끝났으니 지금 다시 만든다면 22 나 24 로 올린다.
=> => transferring context: 2B 0.0s
=> [jenkins 1/4] FROM docker.io/jenkins/jenkins:lts@sha256:01ccf53ac68037a1dc5aff50bf2336e6a672532cbe2536d 0.0s
=> CACHED [jenkins 2/4] RUN curl -fsSL https://deb.nodesource.com/setup_18.x | bash - && apt-get updat 0.0s
=> CACHED [jenkins 3/4] RUN apt-get update && apt-get install -y git curl ca-certificates 0.0s
=> CACHED [jenkins 4/4] WORKDIR /var/jenkins_home 0.0s
=> [jenkins] exporting to image 0.0s
=> => exporting layers 0.0s
=> => writing image sha256:72cc5bd0d72d73189e4bfbc01b022fbbb78aaacd8570d434e7f9394a32b0f70c 0.0s
[+] Running 5/5o docker.io/library/thankq-client-monorepo-jenkins 0.0s
✔ Service jenkins Built 1.8s
✔ Network thankq-client-monorepo_jenkins-network Creat... 0.0s
✔ Volume "thankq-client-monorepo_jenkins_home" Created 0.0s
✔ Container thankq-client-monorepo-jenkins-1 Started 0.3s
✔ Container thankq-client-monorepo-nginx-1 Started 0.3s
mac@macui-noteubug thankq-client-monorepo % sleep 20 && docker exec thankq-client-monorepo-jenkins-1 cat /var/jenkins_home/secrets/initialAdminPassword sleep 20 && docker exec thankq-client-monorepo-jenkins-1 cat /var/jenkins_home/secrets/initialAdminPassword
<initialAdminPassword>
mac@macui-noteubug thankq-client-monorepo %
^C
mac@macui-noteubug thankq-client-monorepo %
mac@macui-noteubug thankq-client-monorepo % docker ps | grep jenkins
a04cfcd2985f thankq-client-monorepo-jenkins "/usr/bin/tini -- /u…" 23 minutes ago Up 23 minutes 8080/tcp, 50000/tcp thankq-client-monorepo-jenkins-1
mac@macui-noteubug thankq-client-monorepo % docker exec -it thankq-client-monorepo-jenkins-1 bash
jenkins@a04cfcd2985f:~$Node.js 플러그인
빌드 셸에서 node 를 쓰려면 NodeJS 플러그인을 깔고 Jenkins 를 재시작한다. 설치하면서 밀린 플러그인 업데이트도 같이 했다.