Jenkinsfile의 slackSend 인수를 groovy의 JsonBuilder를 사용하여 간결하게 표현합니다.

Jenkinsfile의 slackSend 안에 attachments 를 지정할 때 groovy의 JsonBuilder를 이용하면 보기 편하게 쓸 수 있습니다만, groovy를 직접 사용하는데 조금 번거롭기 때문에 메모해 둡니다.

실행 환경



Jenkins 2.154
파이프라인 플러그인 2.6

Pipeline 작업 설정 및 slack과의 연계는 이미 완료되었다고 가정합니다.

빌드 결과의 Slack 알림 (attachments 지정 포함)



slackSend : attachments 지정이 필요한 경우 가 있어, 지정하는 파라미터가 많기 때문에 Builder 를 사용하면 편리합니다.

Jenkinsfile
#!groovy
import groovy.json.JsonBuilder

def attachmentPayload = [[
    fallback: "execution #${env.BUILD_NUMBER}",
    color: "#2eb886",
    pretext: "hogehoge",
    text: "fugafuga #${env.BUILD_NUMBER}",
]]

pipeline {
    agent any
    stages {
        stage('test') {
            steps {
                echo 'test stage'
            }
        }
    }
    post {
        always {
            echo 'TEST DONE'
            script {// ここだけscripted pipeline のsyntaxを適用する
                slackSend(channel: '#targetchannel', color: "#2eb886", attachments: new JsonBuilder(attachmentPayload).toString())
            }
        }
    }
}

Groovy 코드 블록 실행 허용



위의 Jenkinsfile을 실행하면 오류가 발생합니다.new groovy.json.JsonBuilder 를 실행하기 위해서는 화이트리스트에 등록해 주어야 합니다.Administrators can ~를 누르거나 Jenkins 관리 -> In-process Script Approval에서 등록하십시오.


그림: 빌드 실행 로그


그림 : 실행을 허용하는 프로세스를 등록하는 화면

그림 : 실행을 허용하는 처리를 등록한 후의 화면

실행 결과



게시 할 수 있습니다!

좋은 웹페이지 즐겨찾기