gpt4 book ai didi

jenkins-pipeline - 有没有办法将 Jenkinsfile 中的整个 post {} 构建部分移动到全局管道库?

转载 作者:行者123 更新时间:2023-12-02 02:45:20 25 4
gpt4 key购买 nike

我对 Jenkins 管道比较陌生,但已经实现了一些,我意识到我需要在发疯之前开始使用 jenkins 共享库。

已经想出如何在库中定义一些重复的步骤并从 Jenkinsfile 中以更少的困惑调用它们,但不确定是否可以对整个后期构建部分完成相同的事情(我想我已经读过如何到 define the entire pipeline in the libsimilar ),因为这几乎是每个管道代码的静态结尾:

@Library('jenkins-shared-library')_
pipeline {
agent none
stages {
stage ('System Info') { agent any
steps { printSysInfo() }
}

stage ('Init'){ agent {label 'WinZipSE'}
steps { init('SCMroot') }
}
stage('Build') { agent any
steps { doMagic() }
}
}

// This entire 'post {}' section needs to go to a shared lib
// and be called just with a simple methed call, e.g.
// doPostBuild()
post {
always {
node ('master') {
googlechatnotification (
message: '[$BUILD_STATUS] Build $JOB_NAME $BUILD_NUMBER has finished',
url: 'id:credential_id_for_Ubuntu')

step (
[$class: 'Mailer',
recipients: 'sysadmins@example.com me@example.com',
notifyEveryUnstableBuild: true,
sendToIndividuals: true]
)
}
}
success {
node ('master') {
echo 'This will run only if successful'
}
}
failure {
node ('master') {
echo 'This will run only if failed'
}
}
// and so on
}
}

我只是不知道如何在句法上实现它。当然,我可以将整个构建后部分定义为一个 lib/var,例如:doPotBuild.groovy

def call () {
post {...}
}

但我最终将如何从我的 Jenkinsfile 中定义的 post {} 构建 block 部分(也称为阶段)之外调用它。

我可以在一些 stage('post build){doPostBuild()} 中调用它,但它不会像真正的 post {} 部分那样服务应该工作,例如如果前一个阶段失败,它不会被执行。

对此有什么想法,主要是工作示例吗?

最佳答案

我不完全确定这是否可行,因为我不使用声明性管道,所以我不确定顶层结构有多严格。但我会恢复到脚本 block 。

@Library('jenkins-shared-library')_
pipeline {
agent none
stages {
stage ('System Info') { agent any
steps { printSysInfo() }
}

stage ('Init'){ agent {label 'WinZipSE'}
steps { init('SCMroot') }
}
stage('Build') { agent any
steps { doMagic() }
}
}

// This entire 'post {}' section needs to go to a shared lib
// and be called just with a simple methed call, e.g.
// doPostBuild()
script {
doPostBuild()
}
}

关于jenkins-pipeline - 有没有办法将 Jenkinsfile 中的整个 post {} 构建部分移动到全局管道库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55602956/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com