설치 환경
OS: Ubuntu 22.04
9/2/2024 기준 젠킨스 최신 LTS 버전은 2.462.1이며 Java 17을 사용한다
https://hub.docker.com/r/jenkins/jenkins
일단 Jenkins 띄워보기
가볍게 시작해보면서 어떤 식으로 컨테이너에서 젠킨스가 동작하고 있는지 확인해보자
compose.yml
services:
jenkins:
image: jenkins/jenkins:2.462.1-lts-jdk17
container_name: jenkins
ports:
- "80:8080"
$ docker compose up
눈여겨봐야할 로그는 아래와 같다
..
jenkins | Running from: /usr/share/jenkins/jenkins.war
jenkins | webroot: /var/jenkins_home/war
..
jenkins | 2024-09-02 03:23:10.330+0000 [id=1] INFO hudson.WebAppMain#contextInitialized: Jenkins home directory: /var/jenkins_home found at: EnvVars.masterEnvVars.get("JENKINS_HOME")
jenkins | 2024-09-02 03:23:10.453+0000 [id=1] INFO o.e.j.s.handler.ContextHandler#doStart: Started w.@316a598d{Jenkins v2.462.1,/,file:///var/jenkins_home/war/,AVAILABLE}{/var/jenkins_home/war}
jenkins | 2024-09-02 03:23:10.465+0000 [id=1] INFO o.e.j.server.AbstractConnector#doStart: Started ServerConnector@6b7906b3{HTTP/1.1, (http/1.1)}{0.0.0.0:8080}
..
jenkins | Please use the following password to proceed to installation:
jenkins |
jenkins | c50318b70c7441c599b1086cd99fedef
..
jenkins | This may also be found at: /var/jenkins_home/secrets/initialAdminPassword
..
Workspace는 /var/jenkins_home이고 모든 데이터, 플러그인, 설정들이 이곳에 생성된다
https://github.com/jenkinsci/docker/blob/master/README.md
컨테이너에 안을 들어가보자
$ docker exec -it jenkins /bin/bash
jenkins@a64665d997bd:/$
$ users
아무 것도 출력되지 않음
$ id -u
1000
$ id
uid=1000(jenkins) gid=1000(jenkins) groups=1000(jenkins)
$ java --version
openjdk 17.0.12 2024-07-16
OpenJDK Runtime Environment Temurin-17.0.12+7 (build 17.0.12+7)
OpenJDK 64-Bit Server VM Temurin-17.0.12+7 (build 17.0.12+7, mixed mode)
$ cat /opt/java/openjdk/release
JAVA_VERSION="17.0.12"
/opt/java/openjdk 폴더에 JDK 17이 있고 젠킨스를 실행할 때 이걸 사용한다
$ ps -ef | grep jenkins
jenkins 1 0 0 03:23 ? 00:00:00 /usr/bin/tini -- /usr/local/bin/jenkins.sh
jenkins 7 1 9 03:23 ? 00:00:23 java -Duser.home=/var/jenkins_home -Djenkins.model.Jenkins.slaveAgentPort=50000 -Dhudson.lifecycle=hudson.lifecycle.ExitLifecycle -jar /usr/share/jenkins/jenkins.war
UID 1000으로 젠킨스가 실행된다
$ pwd
/
$ ls -l /var/jenkins_home
total 52
-rw-r--r-- 1 jenkins jenkins 1663 Sep 2 03:23 config.xml
-rw-r--r-- 1 jenkins jenkins 108 Sep 2 03:23 copy_reference_file.log
-rw-r--r-- 1 jenkins jenkins 156 Sep 2 03:23 hudson.model.UpdateCenter.xml
-rw-r--r-- 1 jenkins jenkins 171 Sep 2 03:23 jenkins.telemetry.Correlator.xml
drwxr-xr-x 2 jenkins jenkins 4096 Sep 2 03:23 jobs
-rw-r--r-- 1 jenkins jenkins 1037 Sep 2 03:23 nodeMonitors.xml
drwxr-xr-x 2 jenkins jenkins 4096 Sep 2 03:23 plugins
-rw-r--r-- 1 jenkins jenkins 64 Sep 2 03:23 secret.key
-rw-r--r-- 1 jenkins jenkins 0 Sep 2 03:23 secret.key.not-so-secret
drwx------ 2 jenkins jenkins 4096 Sep 2 03:23 secrets
drwxr-xr-x 2 jenkins jenkins 4096 Sep 2 03:23 updates
drwxr-xr-x 2 jenkins jenkins 4096 Sep 2 03:23 userContent
drwxr-xr-x 3 jenkins jenkins 4096 Sep 2 03:23 users
drwxr-xr-x 10 jenkins jenkins 4096 Sep 2 03:23 war
파일들을 UID 1000이 소유하고 있다
젠킨스 설정과 사용자 데이터를 Host에 저장하기
compose.yml
호스트 디렉터리를 데이터 볼륨으로 마운트한다
..
volumes:
- /경로/jenkins/jenkins_home:/var/jenkins_home
$ docker compose up
..
jenkins | touch: cannot touch '/var/jenkins_home/copy_reference_file.log': Permission denied
jenkins | INSTALL WARNING: User: missing rw permissions on JENKINS_HOME: /var/jenkins_home
jenkins | Can not write to /var/jenkins_home/copy_reference_file.log. Wrong volume permissions?
jenkins exited with code 1
컨테이너 내부 사용자가 호스트 머신의 폴더에 대한 권한을 가지지 못한다
그리고 jenkins_home 디렉터리가 생성은 되는데 root:root 권한을 가진다
$ sudo rm -r jenkins_home
디렉터리를 직접 생성하고 UID 1000에 대한 권한을 줘야 한다
숫자인 uid를 쓰기보다 사용자명을 쓰는 것이 유지보수에 좋으니, 먼저 사용자를 추가한다
$ sudo useradd jenkins_home -u 1000
또는
$ sudo vi /etc/passwd
jenkins:x:1000:그룹ID번호:jenkins on docker:/usr/sbin/nologin
그룹ID번호는 0으로?
$ mkdir jenkins_home
$ sudo chown jenkins jenkins_home
$ docker compose up
이제 정상적으로 실행이 된다
젠킨스에 접속하기
http://IP
(80 포트로 접속)
관리자 패스워드를 입력해야 하는데 로그에 출력된 값 또는 컨테이너 내에서 아래 파일의 내용을 입력하여 젠킨스에 접속하자
$ docker exec -it jeknins /var/bash
$ cat /var/jenkins_home/secrets/initialAdminPassword
컨테이너 내 시간설정을 한국 시간으로 변경
젠킨스에서 보여지는 시간이 맞지 않는 것을 확인했다
$ date
Thu Sep 12 22:59:37 UTC 2024
컨테이너 설정이 필요하다
compose.yml
services:
jenkins:
..
environment:
- TZ=Asia/Seoul
위와 같이 환경 설정을 추가한다
compose.yml을 바꾼 후 docker compose up을 다시 실행하면 설정이 반영된다
$ date
Fri Sep 13 08:00:09 AM KST 2024
'CI, CD > Jenkins' 카테고리의 다른 글
| Jenkins > 설정 > 3. 깃헙 연동을 위한 Credential 추가 (0) | 2024.04.09 |
|---|---|
| Jenkins > 운영 > Job 백업, 복구 (0) | 2024.04.07 |
| Jenkins > 설정 > 2. GitHub 계정으로 로그인할 수 있게 하기 (0) | 2024.04.05 |