뭐든 즐기면서 ;)

Jenkins 자동배포 설정 3 - pipleline 작성2(Maven Build) 본문

서버/JENKINS

Jenkins 자동배포 설정 3 - pipleline 작성2(Maven Build)

Tada.*+ 2022. 10. 5. 16:06
728x90

Jenkins 자동배포

1. GitHub연결

2. Maven 설정

3. pipleline 작성


  • Pipeline에 Maven Build 부분을 작성할 것입니다. stage('Build') 부분을 봐주시면 됩니다. (아래, pipeline의 간단한 문법을 설명드리겠습니다.)
    • environment {} 영역에 script내에서 사용할 변수를 선언할 수 있습니다.
    • ${변수명} = 변수를 사용할 때 쓰는 표기법입니다.
    • sh "cli 명령어 사용 가능"
    • 참고로 shell이 실행되어지는 경로는 "${JENKINS_HOME}"이며, sh "./"하였을 경우에는 ${JENKINS_HOME}/workspace/${JOB_NAME}@tmp 경로가 적용되어 집니다. (이해하시기에는 직접 실행해보는 것이 좋을 것 같습니다. ☆)
pipeline {
    agent any

    environment {
        jenkins_wksp    = "${JENKINS_HOME}/workspace/${JOB_NAME}" // = ${JENKINS_HOME}/workspace/jenkins item명칭
        module          = "front"
        build_modue     = "gather-${module}"
    }

    tools {
        maven "M3"
    }

    stages {
        stage('git checkout') {
            steps {
                checkout([$class: 'GitSCM', branches: [[name: '*/canary_new']], extensions: [], userRemoteConfigs: [[credentialsId: 'github', url: 'https://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@github.com/mindslab-ai/data-edit-tool.git']]])
            }
        }
        
        stage('Build') {
            steps {
                echo "====================== START packaging ========================="        
                sh "cd ${jenkins_wksp}"

                sh "mvn -pl ./gather-common clean install" // 공통module(.jar)로서 build_module에서 사용할 module만 install 진행.
                sh "mvn -pl ./${build_modue} clean package"
            }
        }
    
    }
}
  • item 빌드를 실행하면, ${jenkins_wksp}/moudle명/target/ 하위에 war파일이 만들어집니다.

* 필자의 경우 jdk11 또는 jdk17버전으로 실행되는 젠킨스를 설치하였고, module의 경우 jdk8로 돌아가야만 하는 상황이었습니다. 그 상황에서 위와같이 jenkins item build를 실행하였을 경우 아래와 같은 Error에 직면합니다.

An illegal reflective access operation has occurred ...

이는 jdk버전이 맞지 않아 발생하는 에러입니다. 이를 해결하기 위해서는 이 item에서만 사용할 jdk 버전을 설치 후 적용해 주어야 합니다.

pipeline {
	...
    
    tools {
        maven "M3"
        // 추가 작성
        jdk "JAVA8" // 위 설치 방법에서 작성한 JDK NAME과 일치시킵니다.
    }
    
    ...
}
728x90
Comments