본문 바로가기
Study/Jenkins

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

by Zeromk2 2023. 9. 8.
728x90

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

물론 초기 스크립트는 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>""")
         }
     }
 }

댓글