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(가독성 → 빠른업데이트)
# Declarative(가독성 → 빠른업데이트)
pipeline {
agent { docker 'node:6.3'}
stages {
stage('build') {
steps {
sh 'npm version'
}
}
}
}Scripted pipeline
# 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분 진행)