devops

Jenkins Pipeline으로 Docker 서버에 배포하기(Maven,war)

yougeun 2024. 3. 19. 17:53
728x90

1.Pipeline 생성

 

jenkins에서 새로운 아이템을 Pipeline으로 생성해줍니다.

2.Maven 버전 설정

 

jenkins 관리 ->Tools ->Maven installations에 Maven이 설정되있는지 확인합니다.

 

3. Pipeline Script 생성

Pipeline Script 구성

pipeline {
    agent any

    tools {
        maven 'maven3.9.2'
    }

    stages {
        stage('github clone') {
            steps {
                // Get some code from a GitHub repository
                git branch: 'main', credentialsId: 'jenkins_maven', url: 'https://github.com/yougeun6021/Jenkins_maven_war'
            }
            
        }
        
        stage('build'){
            steps{
                sh '''
                    echo build start
                    mvn clean compile package -DskipTests=true
                '''
            }
        }
    }
}

 

2번에서 확인한 maven을 maven script에 넣어주고 git의  Repository를 가져와 maven build하는 script를 작성해줍니다.

 

3-1 Pipeline Syntax 사용

Pipeline Script 구성 이미지에서 Pipeline Syntax버튼을 누른 후 git repository에 관한 설정을 입력하면 자동으로 script를 생성해줍니다.

4. 빌드 확인

 

빌드에 성공하면 #3처럼 모든 stage가 초록색인 것을 볼 수 있습니다.

 

5. tomcat 서버에 배포하기

pipeline syntex

stage('deploy'){
            steps{
                deploy adapters: [tomcat9(credentialsId: 'deployer_user', path: '', url: '[tomcatUrl]')], contextPath: null, war: '**/*.war'
            }
        }

 

pipeline syntex를 이용하여 deploy script를 만들고 3번의 Pipeline Script에 deploy stage를 추가 후 빌드합니다.

 

6.Docker 서버에 배포하기

pipeline syntex

stage('ssh publisher'){
            steps{
                sshPublisher(publishers: [sshPublisherDesc(configName: 'docker-host', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '''docker build -t docker-server-script -f Dockerfile .;
                docker run -d -p 8080:8080 --name maven_project docker-server-script:latest''', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '.', remoteDirectorySDF: false, removePrefix: 'target', sourceFiles: 'target/*.war')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
            }
        }

 

pipeline syntex를 이용하여 ssh publisher script를 만들고 3번의 Pipeline Script에 ssh publishe stage를 추가 후 빌드합니다.

7.docker 서버 배포 확인

 

docker-server-script로 컨테이너가 가동된것을 볼 수 있다.

728x90