
DevOps & CI/CD
Jenkins CI/CDJenkins
Jenkins는 가장 널리 사용되는 오픈소스 CI/CD 자동화 서버다. 플러그인 기반 아키텍처로 거의 모든 빌드·테스트·배포 도구와 통합되며, Declarative Pipeline으로 파이프라인을 코드로 관리한다.
Declarative Pipeline
groovy
// Jenkinsfile
pipeline {
agent {
kubernetes {
yaml """
apiVersion: v1
kind: Pod
spec:
containers:
- name: docker
image: docker:24-dind
securityContext:
privileged: true
"""
}
}
environment {
REGISTRY = 'ghcr.io/myorg'
IMAGE_NAME = 'myapp'
}
stages {
stage('Test') {
steps {
sh 'npm ci'
sh 'npm test -- --coverage'
}
post {
always {
junit 'coverage/junit.xml'
}
}
}
stage('Build') {
steps {
container('docker') {
sh "docker build -t ${REGISTRY}/${IMAGE_NAME}:${GIT_COMMIT} ."
}
}
}
stage('Deploy') {
when {
branch 'main'
}
steps {
withCredentials([string(credentialsId: 'k8s-token', variable: 'TOKEN')]) {
sh "kubectl set image deployment/myapp app=${REGISTRY}/${IMAGE_NAME}:${GIT_COMMIT}"
}
}
}
}
post {
failure {
slackSend channel: '#alerts', message: "Build failed: ${env.JOB_NAME}"
}
}
}