오류 해결

[Jenkins / 오류] Pipeline에서shell script 실행 방법(nohup)

cob 2024. 4. 1. 16:59

 

1. Issue

Jenkins Pipeline을 사용해 실행 스크립트(sh)를 사용해 jar 파일을 백그라운드에서 실행시키는 도중 Job이 종료되면 실행시켰던 프로세스가 삭제됨

 

 


2. Problem

Jenkins 파이프라인에서 실행되는 모든 작업은 Job 내에서만 실행된다. 파이프라인에서 정의된 step을 차례대로 실행하고, 파이프라인이 종료되면 Jenkins는 해당 실행 환경을 정리하고 종료하게 된다.(하위 프로세스도 함께)

 

반응형

3. Solution

JENKINS_NODE_COOKIE 환경 변수를 사용해 프로세스를 종료하지 않도록 요청한다.
pipeline {
    agent any
 
    tools {
        maven 'maven-3.9.6'
        jdk 'JDK8'
    }
 
    stages {
        stage('Checkout') {
         	// 소스 체크아웃 스클입트
        }
        stage('Build') {
            // maven 패키징 스크립트
        }
        stage('RESTART') {
            steps {
                script {
                    try {
                        sh 'JENKINS_NODE_COOKIE=dontKillMe && /home/jex30poc/POC40_HOME/PT/bin/startup.sh'
                    } catch (Exception e) {
                        echo ';오류 발생: ${e.message}'
                        currentBuild.result = 'FAILURE'
                    }
                }
            }
        }
    }
    post { // 파이프라인 종료된 후 작업
        cleanup {
            cleanWs()
        }
    }
}
  • JENKINS_NODE_COOKIE=dontKillMe : 해당 환경 변수를 사용하면, 백그라운드 프레세스가 종료하지 않도록 할 수 있다.

 

 

반응형