목차

Jenkins CI/CD

  • 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 제공
  • 용도에 맞게 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'
		}
	}
}
  • Agent section
    • 여러 Slave node사용시에 노드 지정
    • docker container 수행 명령 지정 가능
  • Stage section
    • 어떤 일을 처리할 것인지 정의(category)
    • ex: backend배포를 위한 stage 정의
  • Steps section
    • 특정 stage안에서 작업 단계(step)를 정의
    • plugin 설치 관련 step 생성
  • Post section
    • stage 결과에 따른 후속 조치
    • 성공이면 Email 전동, 실패시 중단 및 skip 등 작업에 따른 조치 지정
  • 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분 진행)