Skip to content

Instantly share code, notes, and snippets.

@siyoungoh
Last active April 9, 2024 14:16
Show Gist options
  • Save siyoungoh/92c0f76b3a3e93669a0f2f985d97942c to your computer and use it in GitHub Desktop.
Save siyoungoh/92c0f76b3a3e93669a0f2f985d97942c to your computer and use it in GitHub Desktop.
Jenkins CI/CD 예시
pipeline {
agent any
environment {
// 환경 변수 설정
DOCKER_IMAGE = 'myapp:latest'
DOCKER_REGISTRY = 'myregistry.com'
}
stages {
stage('Checkout') {
steps {
// Git에서 최신 코드를 체크아웃
checkout scm
}
}
stage('Build') {
steps {
// 도커 이미지 빌드
script {
docker.build("$DOCKER_REGISTRY/$DOCKER_IMAGE")
}
}
}
stage('Test') {
steps {
// 테스트 실행
sh 'echo "Running tests"'
// 예를 들어, JUnit 테스트 실행 등 실제 테스트 명령을 여기에 포함
}
}
stage('Push Image') {
steps {
script {
docker.withRegistry("https://$DOCKER_REGISTRY", 'docker-registry-credentials') {
// 빌드된 도커 이미지를 레지스트리에 푸시
docker.image("$DOCKER_REGISTRY/$DOCKER_IMAGE").push()
}
}
}
}
stage('Deploy') {
steps {
// 배포 스크립트 실행
script {
// SSH 플러그인을 사용하여 배포 서버에 접속, 배포 명령 실행 등
sshPublisher(publishers: [sshPublisherDesc(configName: 'my-deploy-server', transfers: [sshTransfer(execCommand: "docker pull $DOCKER_REGISTRY/$DOCKER_IMAGE && docker run -d --name myapp -p 80:80 $DOCKER_REGISTRY/$DOCKER_IMAGE")])])
}
}
}
}
post {
always {
// 항상 실행: 예를 들어, 빌드 정보 정리
cleanWs()
}
success {
// 성공적인 빌드 후 실행
echo 'Build and deployment successful!'
}
failure {
// 빌드 실패시 실행
echo 'Build or deployment failed.'
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment