Post

[JENKINS] Submitter Parameter

[JENKINS] Submitter Parameter

Jenkins의 ⁠input⁠ 스텝에서 사용되는 ⁠submitterParameter⁠는 입력을 제출한 사용자의 정보를 저장하는 파라미터이다.

이 파라미터는 Jenkins 파이프라인이 실행 중일 때, 특정 사용자나 그룹만이 입력을 승인할 수 있도록 제어하고, 입력을 실제로 누가 제출했는지 추적하는 용도로 활용된다.

⁠submitterParameter⁠를 설정하면, 입력을 승인한 사용자의 이름이 해당 파라미터에 저장되며, 이후 파이프라인의 다음 단계에서 이를 사용할 수 있다.

SubmitterParameter의 기본 용도

승인자 추적

  • 누가 입력을 승인했는지 확인
    • 예를 들어, 관리자만이 배포를 승인해야 하는 파이프라인의 경우, ⁠submitterParameter⁠를 통해 실제로 승인을 한 사용자의 이름을 저장하고 나중에 참조할 수 있다.

다음 단계에서 사용자 정보 활용

  • 입력을 승인한 사용자의 이름을 저장하고, 파이프라인의 다음 단계에서 이 정보를 활용하여 다른 로직을 처리할 수 있다.

SubmitterParameter 사용 방법

파이프라인에서 ⁠submitterParameter 설정

  • ⁠submitterParameter⁠는 ⁠input⁠ 스텝에서 승인자가 입력을 제출했을 때, 그 사용자의 이름을 특정 파라미터에 저장
  • 이 파라미터는 이후 파이프라인에서 사용 할 수 있음
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
pipeline {
  agent any

  stages {
    stage('Approval Stage') {
      steps {
        script {
          // 입력을 승인한 사용자의 이름을 'approver'라는 파라미터에 저장
          input message: 'Do you approve the deployment?',
                     ok: 'Proceed',
              submitter: 'admin',
          submitterParameter: 'approver'
        } // script
      } // steps
    } // stage

    stage('Deploy') {
      steps {
        script {
          // 'approver' 파라미터에 저장된 사용자의 이름 출력
          echo "Deployment approved by: ${approver}"
        } // script
      }  // steps
    }  // stage
  } // stages
}  // pipeline

코드 설명

  • submitter
    • 입력을 승인할 수 있는 사용자나 그룹을 지정
    • 예를 들어 admin 또는 dev-team 처럼 특정 사용자나 그룹만이 승인할 수 있도록 설정 가능
  • ⁠submitterParameter
    • 입력을 승인한 사용자의 이름을 저장할 파라미터 이름
    • 이 파라미터는 이후 파이프라인의 다른 단계에서 사용 할 수 있음

SubmitterParameter 동작 과정

  1. 입력 요청

    • 파이프라인이 실행 중일 때, ⁠input⁠ 스텝에서 승인을 요청

    • 여기서 승인할 수 있는 사용자는 ⁠submitter⁠에 설정된 사용자 또는 그룹으로 제한

  2. 입력 제출
    • 지정된 승인자가 입력을 제출하면, 해당 승인자의 이름이 ⁠submitterParameter 로 지정된 변수에 저장
  3. 다음 단계에서 활용

    • 이후 파이프라인 단계에서, 입력을 승인한 사용자의 정보를 활용할 수 있음

    • 예를 들어, 승인자의 이름을 로그에 기록하거나, 다른 작업의 조건으로 사용할 수 있음

Rest API 응답 받기 위한 예시

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
stage("APPROVAL WAITNG"){
  steps{
    script{
      try{
        timeout(time: 60, unit: 'MINUTES'){ // 입력을 60분 동안 대기
          def APPROVE_RESULT = input message: "DEPLOY APPROVAL ANSWER",
                                          ok: 'APPROVAL', // 승인을 OK할 버튼의 메시지
                                          id: 'Deployvalue',
                                          submitterParameter: 'approval', // 입력을 승인한 사용자의 이름을 `approval`라는 파라미터에 저장장
                                          parameters: [choice(name: 'APPROVERESULT', choices: 'yes\nno', description: 'APPROVAL?')]
                            
                            
          echo "RESPONSE : ${APPROVE_RESULT}"
        }
      }catch(error){
        print(error)
        env.APPROVAL = false
        currentBuild.result = "FAILURE"
      }
    }  // script
  }  // steps
}  // stage
This post is licensed under CC BY 4.0 by the author.