Jenkins CI/CD
목차
Java runtime 환경으로 구성된 소프트웨어 구축, 테스트, 전달 또는 배포와 관련되 모든 종류의 작업의 자동화를 목적으로 사용되는 독립형 OpenSource CI Server이다.
웹기반 콘솔로 다향한 plug을 통한 편리한 설정 지원
소스 버전 관리 도구와 연동하여 코드 변경을 감지, 자동 테스트, 빌드를 수행하는 안정적 빌드/배포 환경 지원
다양한 소프트웨어 활용에 대한 문서화 구성이 잘되어있음. plugin 개발도 가능
주요 plugin(https://plugins.jenkins.io)
- credentials plugin: 인증 관련으로 VM환경에서 ssh key, AWS/Git 등에서 token 활용
- git plugin: GitHub source code 접근을 통한 빌드 수행 지원
- pipline plugin: CI 구축 플러그인
- docker plugin & pipeline: Jenkins가 docker를 사용 하게 지원
- blue/ocean plugin: CD pipeline의 시각화지원 구조 파악에 용이
- Amazon EC2 plugin: EC2 인스턴스 스케일링 가능한 빌드 클러스터 구성 지원
- Metric plugin: Metric(지표) 측정을 위한 Java library 제공
Jenkins pipeline
- 용도에 맞게 plugin을 조합하여 원하는 CI/CD 자동화를 구성하는 것
- Pipeline은 자동화 순서를 정의한 스크립트 언더
- Declarative(선언적), Scripted pipeline 구성 방식이 있음
-
# Declarative(가독성 → 빠른업데이트)
pipeline {
agent { docker 'node:6.3'}
stages {
stage('build') {
steps {
sh 'npm version'
}
}
}
}# scripted pipeline
node('docker'){
checkout scm
stage('build') {
docker.image('node:6.3').inside {
sh 'npm version'
}
}
}Pipeline Section
- Agent section
- 여러 Slave node사용시에 노드 지정
- docker container 수행 명령 지정 가능
- Stage section
- 어떤 일을 처리할 것인지 정의(category)
- ex: backend배포를 위한 stage 정의
- Steps section
- 특정 stage안에서 작업 단계(step)를 정의
- plugin 설치 관련 step 생성
- Post section
- stage 결과에 따른 후속 조치
- 성공이면 Email 전동, 실패시 중단 및 skip 등 작업에 따른 조치 지정
Jenkins 환경 구성
- Jenkins 설치
#docker compose
version: \"3.9\"
services:
jenkins:
image: jenkins/jenkins:lts-jdk17
container_name: jenkins
restart: always
ports:
- \"8088:8080\" #원하는 포트:Jenkins포트
- \"50000:50000\"
environment:
privileged: true
user: root
volumes:
- /var/run/docker.sock:/var/run/docker.sock#고정
- /data/docker_volumes/jenkins:/var/jenkins_home#원하는 볼륨과 연결
networks:
jenkins:
name: jenkins
driver: bridge
#docker
docker run -itd --name=fc-jenkins -p 8088:8080 -p 50000:50000 \\
--privileged=true -u root \\
--restart=always
-v /var/run/docker.sock:/var/run/docker.sock \\#고정
-v //data/docker_volumes/jenkins:/var/jenkins_home \\#원하는 볼륨
jenkins/jenkins:lts- 로그인 키 획득
docker logs jenkins
- web 접속(ip:8088)
- Administrator passsword에 위의 키값 입력
- 계정 생성
- 첫 설치라면 Install suggested plugins로 설정하여 진행(약 3\~5분 진행)