Jenkins

젠킨스 도커 컨테이너 실행 (volume 설정)

prod 인스턴스 생성

1
docker run -d --name jenkins_prod -p 9080:8080 -p 50000:50000 -v jenkins-home-prod:/var/jenkins_home jenkins/jenkins:lts-jdk17

볼륨 생성 및 임시 컨테이너 띄워서 volume 내용 복사

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# staging 볼륨 생성
docker volume create --name jenkins-home-staging

# development 볼륨 생성
docker volume create --name jenkins-home-development

# prod to staging
docker run --rm -it --user root \
-v jenkins-home-prod:/var/jenkins_home \
-v jenkins-home-staging:/var/jenkins_home_staging \
jenkins/jenkins:lts-jdk17 bash -c "cd /var/jenkins_home_staging \
&& cp -a /var/jenkins_home/* ."

# prod to development
docker run --rm -it --user root \
-v jenkins-home-prod:/var/jenkins_home \
-v jenkins-home-development:/var/jenkins_home_development \
jenkins/jenkins:lts-jdk17 bash -c "cd /var/jenkins_home_development && \
cp -a /var/jenkins_home/* ."

development & staging 띄우기

1
2
3
4
5
# staging
docker run -d --name jenkins_staging -p 9081:8080 -p 50001:50000 -v jenkins-home-staging:/var/jenkins_home jenkins/jenkins:lts-jdk17

# development
docker run -d --name jenkins_development -p 9082:8080 -p 50002:50000 -v jenkins-home-development:/var/jenkins_home jenkins/jenkins:lts-jdk17

Permission Denied 에러 발생 -> u option 1000 추가 해결 (이유 정확히 모름)

1
2
3
4
5
# staging
docker run -d -u 1000 --name jenkins_staging -p 9081:8080 -p 50001:50000 -v jenkins-home-staging:/var/jenkins_home jenkins/jenkins:lts-jdk17

# development
docker run -d -u 1000 --name jenkins_development -p 9082:8080 -p 50002:50000 -v jenkins-home-development:/var/jenkins_home jenkins/jenkins:lts-jdk17

플러그인 설치

  • Blue Ocean : 새로운 UI 도구
  • Periodic Backup : 주기적 백업 (설정 190page 확인)

도커에서 젠킨스 업그레이드

1
2
3
4
docker stop jenkins_name
docker rm jenkins_name
docker image pull jenkins/jenkins:{최신.버전}
# 새로운 img로 volume 물려서 실행

분산 빌드

젠킨스는 마스터/슬레이브 아키텍처이다. 슬레이브를 통해 작업을 분산시킬 수 있음.

방대한 양의 단위 테스트와 통합 테스트를 작은 단위로 나누어 동시에 수행해보자.

이를 병렬로 처리하려면 빌드와 테스트 머신이 여러개 필요

젠킨스 슬레이브 에이전트는 레이블을 이용해 분류된다.

도커를 이용해 on demand 슬레이브를 생성하는 것이 쉽고 유리하다.

  • 빌드 + 단위 테스트를 위한 도커 이미지 -> 3개의 슬레이브 에이전트 생성
  • 통합 테스트를 위한 도커 이미지 -> 2개의 슬레이브 에이전트 생성

슬레이브는 도커 이미지를 이용해 생성됨, 레이블을 이용해 구분됨

노드 관리

Jenkins 설정 - Node 설정

노드 추가 == 마스터/슬레이브 추가

Free Space Threshold 옵션이 중요

슬레이브 추가 : 도커 컨테이너

젠킨스는 도커 플러그인을 통해 도커 원격API를 통해 도커 서버와 통신 가능

젠킨스가 도커 호스트와 통신하려면 설정이 필요하다.

/etc/init/docker.conf파일 수정

1
2
3
4
5
# ...

DOCKER_OPS='-H tcp://0.0.0.0:4243 -H unix:///var/run/docker.sock'

# ...

도커 서버를 두가지 소켓에 연결하는 설정

  • TCP 포트 4243.0.0.0.0에 연결
  • 유닉스 소켓에 연결

다음 명령어로 도커 서버를 다시 시작

1
2
service docker restart
curl -X GET http://<Docker server IP>:4243/images/json

docker.service 파일 수정

/lib/systemend/system/docker.service 파일 수정

1
2
3
4
5
# ...

ExecStart=/usr/bin/docker daemon -H fd:// -H tcp://0.0.0.0:4243

# ...

도커 서버를 두가지 소켓에 연결하는 설정 (외부 접속 가능)

  • TCP 포트 4243.0.0.0.0에 연결
  • 유닉스 소켓에 연결
1
2
3
systemctl daemon-reload # 데몬에게 변경사항 생긴 것 알려주기
sudo service docker restart # 도커 서버 다시 시작
curl -X GET http://<Docker server IP>:4243/images/json # 설정 잘 적용되었는지 화인

Jenkins 도커 플러그인 설정

Docker plugin 설치 했다고 가정

  1. Manage Jenkins > Configure System
  2. Cloud 영역까지 내려가기
  3. Add a new cloud 버튼 클릭 후 옵션에서 Docker 선택
  4. Name 영역에 도커 서버 이름 설정
  5. Docker URL 영억에 도커 서버의 URL을 기입 (ex. tcp://123.123.123.:4243/)
  6. Test Connection 해보기

도커 서버에서 도커 이미지 생성하기

도커 이미지에 다음 설치

  • 자바 JDK
  • git
  • 메이븐(그레이들)
  • 도커 컨테이너에 로그인할 사용자
  • sshd (SSH 연결을 위해 필요) ```sh docker pull ubuntu docker run -i -t ubuntu /bin/bash

bash shell 시작

adduser jenkins su jenkins # 생성 확인 exit # root로 돌아옴

apt-get update

apt-get install openssh-server nkdir /var/run/sshd

apt-get install git

apg-get install openjsp-8-jdk

apt-get install maven

exit

bash shell 끝

도커 컨테이너에 작업한 내용 저장(커밋)

docker ps -a sudo docker commit

sudo docker commit maven-build-slave-0.1

```

255 page 읽기 (추가 설정)

  • 크레덴셜 추가
  • 도커 템플릿 추가

소나큐브

코드 품질을 위해 코드의 인스펙션을 지속적으로 수행하는 역할

품질이 낮은 코드를 발견하고 제거하는 역할. 코드가 커밋될 때마다 해당 코드에 대해 코드 분석이 수행됨

설치(docker 고려) 후 플러그인 설치

  • build breaker: 젠킨스 빌드를 실패시킬 수 있게 한다.
  1. 프로젝트 생성
  2. 퀄리티 게이트 생성(조건 추가)
  3. 프로젝트와 연결

기본 퀄리티 게이트 프로파일 업데이트

자바를 위한 기본 퀄리티 게이트 프로파일 수정

  • 젠킨스 소나큐브 플러그인 설치
  • 젠킨스 소나큐브 플러그인 설정 (274p)

아티팩토리 설치와 설정

바이너리 코드를 관리할 방법 : 바이너리 저장소 도구

배포 스테이지에서 빌드 바이너리 저장

설치 277p 실행 280p

태그: ,

카테고리:

업데이트:

댓글남기기