Study/Jenkins

Jenkins Pipeline Parallel 실행 하기 (젠킨스 파이프라인 병렬 실행)

Zeromk2 2023. 9. 8. 06:00

테스트 자동화 병렬 이야기를 지난 포스팅에 했었어서 실제로 어떻게 사용하는지 이야기를 해보려고 합니다.

물론 초기 스크립트는 ChatGPT가 자세히 알려주어 참고했습니다~

ChatGPT 최고야

대략적인 구조는 이렇습니다.

pipeline
ㄴ stages
   ㄴ stage
      ㄴ parallel
         ㄴ stage
            ㄴ steps
         ㄴ stage
            ㄴ steps

 

  • jenkins parameter를 쓸 때에는 ' ' 나 " "로 묶는 것이 아니라 """ """로 해줘야 인식이 되기에 jenkins parameter를 넣는 부분은 """ """로 되어있습니다.
  • dir( ) { } 부분은 ( ) 위치로 가서 { } 을 실행하라는 내용입니다.
  • post에 slacksend부분은 slack notification 플러그인이 설치되어있어야 사용할 수 있습니다.
 pipeline {
     agent none
 
     stages {
         stage('Stage 1') {
             agent {
                 label 'your_agent_label' // 여기에 실행하길 원하는 노드의 레이블을 지정하세요
             }
             steps {
                 echo 'Running Stage 1'
             }
         }
         stage('Parallel Stages') {
             parallel {
                 stage('Stage 2') {
                     steps {
                         catchError(buildResult: 'FAILURE', stageResult: 'FAILURE'){
                             dir('path/path/path'){
                                 sh """python test.py ${jenkins_parameter}"""
                             }
                         }
                     }
                 }
                 stage('Stage 3') {
                     steps {
                         echo 'Running Stage 3'
                     }
                 }
                 stage('Stage 4') {
                     steps {
                         echo 'Running Stage 4'
                     }
                 }
                 stage('Stage 5') {
                     steps {
                         echo 'Running Stage 5'
                     }
                 }
             }
         }
     }
     post {
         success {
             slackSend (channel: '#channel_name', color: '#2EB67D', message: """SUCCESSFUL: Job ${env.JOB_NAME} <${env.BUILD_URL}|(Jenkins)> <@slack_user_id>""")
         }
         failure {
             slackSend (channel: '#channel_name', color: '#E01E5A', message: """FAILED: ${env.JOB_NAME} <${env.BUILD_URL}|(Jenkins)> <@slack_user_id>""")
         }
     }
 }
728x90