devops

Jenkins Pipeline으로 Docker 서버에 배포하기(gradle,jar)

yougeun 2024. 4. 1. 17:45
728x90

1.Pipeline 생성

 

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

 

2.Gradle 버전 설정

 

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

3. Pipeline Script 생성

pipeline {
    agent any

    stages {
        stage('github clone') {
            steps {
                git branch: 'master', credentialsId: 'jenkins_gradle', url: 'https://github.com/yougeun6021/Jenkins_gradle_jar'
            }
            post{
                failure{
                    ehco 'fail github clone'
                }
            }
            
        }
        
        stage('Grant execute permission for gradlew'){
            steps{
                sh '''
                    chmod +x gradlew
                '''
            }
            post{
                failure{
                    ehco 'fail Grant'
                }
            }
        }
        
        stage('build'){
            steps{
                sh '''
                    echo build start
                    ./gradlew clean build
                '''
            }
            post{
                failure{
                    ehco 'fail build'
                }
            }
        }
        
        stage('deploy'){
            steps{
                sshPublisher(publishers: [sshPublisherDesc(configName: 'pi', transfers: [sshTransfer(cleanRemote: false, excludes: '', execCommand: '', execTimeout: 120000, flatten: false, makeEmptyDirs: false, noDefaultExcludes: false, patternSeparator: '[, ]+', remoteDirectory: '/project', remoteDirectorySDF: false, removePrefix: 'build/libs', sourceFiles: 'build/libs/*.jar')], usePromotionTimestamp: false, useWorkspaceInPromotion: false, verbose: false)])
            }
            post{
                failure{
                    ehco 'fail deploy'
                }
            }
        }
        
    }
}

 

1.github_clone : Pipeline Syntax를 이용하여 github에서 원하는 프로젝트를 가지고옵니다.

2.Grant execute permission for gradlew: gradlew 명령어를 쓸 수 있도록 권한을 부여합니다.

3.build:gradle로 build합니다.

4.deploy:Pipeline Syntax를 이용하여 원하는 server에 배포합니다.

4.배포 확인

 

원하는 jar파일이 배포된 것을 확인 할 수 있습니다.

5. docker 배포하기

1.Dockerfile 생성

#Dockerfile 생성
vim Dockerfile

FROM openjdk:11-jdk
COPY jenkins_gradle.jar app.jar
ENTRYPOINT ["java","-jar","app.jar"]

2.ssh publisher 변경

pipeline syntax

#Dockerfile 있는 곳으로 이동
cd project
#이미지 생성
docker build -t docker_gradle -f Dockerfile .;
#컨테이너 구동
docker run -d -p 8888:8081 --name gradle_project docker_gradle:latest

 

1.Name:sshserver name

2. Source files:jar 파일이 생성된곳(default:build/libs/*.jar)

3.Remove prefix: *.jar파일만 남도록 build/libs 제거

4.Remote directory:jar파일이 생성되는 곳

5.Exec command:배포 후 command

 

sshpublisher pipeline syntax에서 exec command를 추가하여 3번의 pileline script를 변경해줍니다.

 

6.배포 확인

 

 

 

728x90