이전 포스팅에서 진행했던 마지막 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 |