본문 바로가기

Devops

gitHub & Jenkins CI/CD 적용 (4/4)

이전 포스팅에서 진행했던 마지막 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' 카테고리의 다른 글

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
Docker Hub Image 배포 스크립트  (0) 2024.04.11
GitHub를 이용한 CI (docker Hub)  (0) 2024.04.11