본문 바로가기

CI CD 파이프라인

젠킨스 파이프라인 스크립트 작성

728x90
반응형
SMALL

젠킨스에 파이프라인 스크립트 작성할때 참고 하세요.

 

[순서]

stage('kill port') -> stage('github clone') -> stage('build') -> stage('Deploy')

 

1.

kill port 의 steps 을 보면 

lsof -t -i :8080 -s TCP:LISTEN 명령어를 이용하여 8080포트로 실행중인 프로세스의 PID 값을 얻어올 수 있습니다.

그 얻어온 PID 값이 있으면, kill -9 명령어를 이용해, 포트를 죽입니다. (혹은 PID 값이 없으면 pid is empty 라는 텍스트만 줍니다.)

 

2.

github clone 의 steps 을 보면

git 에 등록해놓은 credentialsId와 깃주소를 입력해 연동해놓습니다.

 

3.

build 의 steps 을 보면

dir() 명령어를 이용해 , 해당 디렉토리로 접근을합니다. (ex. dir('test')  = /test)

./gradlew 있는 디렉토리에 접근 후 clean bootJar 를 해줍니다. (Jar로 패키징)

 

4.

Deploy 의 steps 을 보면

dir('build') -> dir('libs')  => /build/libs 디렉토리로 이동합니다.

이동 후 nohup을 이용하여 백그라운드로 해당 jar를 실행 시킵니다.

 

 


pipeline {
    agent any
    stages {
        
        stage('kill port') {
            steps{
                sh'''
                if [ "$(lsof -t -i :8080 -s TCP:LISTEN)" != "" ]; then
                    kill -9 $(lsof -t -i :8080 -s TCP:LISTEN)
                    echo "$pid process kill complete"
                else
                    echo "pid is empty"
                fi
            '''
            }
        }
        
        stage('github clone') {
            steps {
                git credentialsId: 'credentialsId', url: '깃주소'
            }
        }
        stage('build'){
                steps{
                    dir(''){
                        sh'''
                            echo build start
                            ./gradlew clean bootJar
                        '''
                    }
                }
            }
        stage('Deploy') {
            steps {
                dir('build'){
                    dir('libs'){
                   sh'''
                            echo deploy start
                            JENKINS_NODE_COOKIE=dontKillMe && nohup java -jar [파일명].jar &
                        '''            
                    }
                }
            }
        }    
    }
}
728x90
반응형
LIST