[Jenkins] GitLab 자동 배포(2) : 자동 배포 진행하기

감쟈감쟈왕감쟈·2023년 11월 1일

배포

목록 보기
3/3

앞의 기본 설정 단계를 모두 진행했다는 가정하에 진행하겠다!
[Jenkins] GitLab 자동 배포(1) : 기본 설정

0. 새로운 Item 등록


기본 단계별로 확인할 수 있는 Pipeline으로 생성하겠다!

1. General

GitLab Connection에 자신이 설정해놓은 깃랩이 잘 연결되어 있는지 확인해준다.

2. Build Triggers

노란색 칠해진 곳의 url은 gitlab에서 사용되니 잘 적어두자!

그리고 고급에서 추가 설정을 진행해준다.

아래의 Generate버튼을 눌러 Key값을 발급 받는다 이또한 gitlab에서 사용될것이기 때문에 잘 적어두자!
그럼 이제 Pipeline이 생성 완료 되었다.

3. pipeline 코드 작성하기

pipeline {
    agent {
        any {
            // 젠킨스에서 사용할 Docker 이미지 설정
            // 여기서는 Gradle과 Java가 설치된 이미지를 사용합니다.
            image 'gradle:jdk11'
        }
    }

    environment {
        // 빌드 결과물이 저장될 경로
        BUILD_DIR = "/var/{경로}/backend"
        DOCKER_CONTAINER_NAME = "{컨테이너 이름}"
    }

    stages {

      //첫 번째 단계 : git clone
        stage('Git Clone') {
            steps {
                git branch: '{clone 하고자 하는 branch 이름}',
                credentialsId: '{발급 받은 개인 accesstoken의 이름}',
                url: 'https://{gitlab의 url}'
            }
        }
        
      // 두번째 단계 : spring boot파일 빌드!
        stage('Build') {
            steps {
                sh 'pwd'
                sh 'ls -al'
                
                // jar 파일 삭제
                sh 'rm build/libs/*.jar | true'
                
                dir('{git에서 해당 파일 경로}'){
                    // 스프링 빌드
                    sh 'pwd'
                    sh 'ls -al'
                    sh 'chmod +x gradlew'
                    sh './gradlew clean build'
                    
                    // 도커 이미지 빌드
                    sh 'docker build -t {USERNAME}/{IMAGE_NAME}:latest .'
                    
                    sh 'docker images'
                }
            }
        }

        
		//서버에 배포 단계
        stage('Deploy') {
            steps {
                // 기존 서버 중지
                sh "docker stop $DOCKER_CONTAINER_NAME || true"  // 기존 컨테이너가 없을 경우를 위해 무시
                
                sh "docker rm $DOCKER_CONTAINER_NAME || true"  //중지된 서버 삭제

                
                // 빌드된 파일을 원하는 위치로 배포
                //: 서버에 배포하는 경우
                sh "whoami"
                sh "groups"

                
                // 새로운 서버 실행
                sh "docker run -d -p {포트번호}:{포트번호} -e TZ=Asia/Seoul --name $DOCKER_CONTAINER_NAME {USERNAME}/{IMAGE_NAME}"
                
                // 쓰레기 이미지 삭제
                sh 'docker images -f dangling=true -q | xargs -r docker rmi'
            }
        }
    }
}

4. Gitlab에서 gitlab에서 webhook을 등록하고 jenkins 와 연결

위에서 노란색 부분이었던 곳의 URL을 입력하고 발급 받은 빨간색 칸에 있는 토큰을 작성한다.
이때 TriggerAll branches로 한다면 push 될때마다 자동배포가 실쟁되니 wildcard patten을 이용해서 branch이름을 적어주면 해당 branch에 push될때마다 배포가 진행된다!

아래 선택 사항에서 push envents을 선택해준다

5. Webhook test

Test - push events를 클릭하면 테스트가 진행되고 위에 결과가 http 200이면 연결이 성곤한 것이다!

6. Jenkins 확인

아래와 같이 성공적으로 배포가 완료 되면 끝이다!

profile
싹난 독든 감자의 성장일지

1개의 댓글

comment-user-thumbnail
2024년 2월 28일

독든 감자님, 요즘은 블로그 안쓰시나요?????????? 예????????

답글 달기