이전 포스팅에서 진행했던 마지막 CI/CD 배포를 진행할 예정입니다.

필자 경 Pipeline script를 작성하여 배포를 진행하였습니다.
작성 배포 스크립트 포맷
pipeline {
    agent any
    tools {
        gradle 'gradle-8.7'
    }
    
    environment {
		DCOKER_IMAGE_NAME = "";
	}
    stages {
        stage('git pull') {
            environment {
                REPOSITORY_URL = ""
            }
            steps {
                git branch: 'main', url: "${REPOSITORY_URL}"
            }
        }
   		stage('Build Project') {
            steps {
                sh 'gradle build'
            }
        }
        
        stage('Docker Build') {
            environment {
        		DOCKER_HUB_ID = "";
        		DOCKER_HUB_PW = "";
        	}
            steps {
                sh 'docker login -u ${DOCKER_HUB_ID} -p ${DOCKER_HUB_PW}'
                sh 'docker build -t ${DCOKER_IMAGE_NAME} .'
            
            }
        }
        
        stage('Docker Deploy') {
            environment {
         		PORT = "";
        		DOCKER_CONTAINER_NAME = "";
        		PROFILE="test";
        	}
            steps {
                sh 'docker stop ${DOCKER_CONTAINER_NAME}'
                sh 'docker rm ${DOCKER_CONTAINER_NAME}'
                sh 'docker run -d --name ${DOCKER_CONTAINER_NAME} -p ${PORT}:${PORT} -e ACTIVE_PROFILE=${PROFILE} --restart=unless-stopped ${DCOKER_IMAGE_NAME}'    
            }
        }
        
        stage('Clean Dokcer') {
            steps {
                sh 'docker system prune -a -f'
            }
        }
        
   	}
}
서버에 따라 필요한 정보는 env 처리를 진행했습니다.
순서를 진행하자면 webhook > pull > build > deploy > clean 순으로 진행했습니다.
해당 스크립트를 진행하던중 몇가지 설정이 필요했던 것


Maven과 gradle 설정을 위하여 tools에서 설정하여 사용하였다.
Jenkins 경우 도커를 통하여 설정하였기 떄문에 Docker in docker로 배포를 진행하였다.
해당 설정을 사용하기 위해서는 아래 스크립트를 Jenkins 도커 실행시 볼륨설정을 진행해주어야 한다.
-v /var/run/docker.sock:/var/run/docker.sock -v $(which docker):/usr/bin/docker
이렇게 설정을 진행후 CI/CD가 정상적으로 수행되어 도커 컨테이너로 동작하는것 까지 확인해보았다.
'Devops' 카테고리의 다른 글
| 우당탕탕 쿠버네티스 구축 도전기 - 2 (2) | 2025.05.06 | 
|---|---|
| 우당탕탕 쿠버네티스 구축 도전기 - 1 (0) | 2025.05.05 | 
| gitHub & Jenkins CI/CD 적용 (3/4) (0) | 2024.06.02 | 
| gitHub & Jenkins CI/CD 적용 (2/4) (0) | 2024.06.01 | 
| gitHub & Jenkins CI/CD 적용 (1/4) (0) | 2024.06.01 | 
 
                  
                 
                  
                 
                  
                