본문 바로가기
DevOps/Jenkins

Jenkins 설정 – Pipeline Setting

by 오이가지아빠 2021. 3. 29.

Jenkins Pipeline – 스크립트를 사용해 jenkins CI환경의 연속적인 이벤트를 등록하고, 시각화로 흐름을 관리하기에 용이하다.

 

 

pipeline 예시

 

우리는 Jenkins/blueocean 환경으로 설치 했기 때문에 기본적인 Jenkins 파이프라인 기능은 사용 가능하지만, 위처럼 시각화 관리를 위해서는 추가적인 플러그인 설치가 필요하다.

 

https://updates.jenkins.io/latest/pipeline-stage-view.hpi

https://updates.jenkins.io/latest/pipeline-rest-api.hpi

https://updates.jenkins.io/latest/handlebars.hpi

https://updates.jenkins.io/latest/momentjs.hpi

 

pipeline-stage-view 라는 플러그인 설치를 위해 의존성이 있는 나머지 3개의 플러그인을 먼저 설치한다.

 

위 플러그인 설치가 완료됐으면 이제 pipeline 빌드 설정을 시작해보자

 

Jenkins > 새로운 Item
Pipeline을 선택한 후 생성
Advanced Project Options > Pipiline

 

node('agent1') {
    stage('Git Pull') {
        bat 'echo "Ready"'
        git 'http://giturl/owner/gitproject.git' // git clone
    }

    stage('Maven Build') {
        bat 'echo "Build Jar"'
        bat 'dir'
        dir('demoClient'){
            configFileProvider(
                [configFile(fileId: 'f6ba4223-2d50-443a-a469-95c22284a3ff', variable: 'MAVEN_SETTINGS')]) {
                bat './mvnw -s %MAVEN_SETTINGS% -DskipTests clean package'
                // sh './mvnw -s $MAVEN_SETTINGS clean package'
            }
            bat 'xcopy /f /y .\\target\\demoClient-0.0.1-SNAPSHOT.jar C:\\agent1\\release\\DevOps.jar*'
            //sh 'cp target/Hint-Devops-0.0.1-SNAPSHOT.jar D:/release/DevOps.jar'
        }
    } 

    stage('Deploy') {
        bat "echo 'Deply Dev'"
        bat 'set PID=0\n' +
            'FOR /F \"tokens=5 delims= \" %%P IN (\'netstat -ano ^| findstr :9090 ^| findstr LISTENING\') DO SET /A PID=%%P\n' +
            'IF /I \"%PID%\" GEQ \"1\" (\n' +
            ' TaskKill /F /PID %PID%\n' +
            ')'
        dir('C:/agent1/release') {
            bat 'dir'
            withEnv(['JENKINS_NODE_COOKIE=dontkill']) {
                //bat 'java -jar DevOps.jar &'
                bat 'start java -jar DevOps.jar'
            }
        }
    }
} 

windows 서버와 리눅스/유닉스 서버의 문법이 다르므로 배포 서버를 확인 후 설정하도록 한다.
(ex. bat vs. sh, dir vs. ls)

반응형

댓글