作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我对 Jenkins 管道比较陌生,但已经实现了一些,我意识到我需要在发疯之前开始使用 jenkins 共享库。
已经想出如何在库中定义一些重复的步骤并从 Jenkinsfile 中以更少的困惑调用它们,但不确定是否可以对整个后期构建部分完成相同的事情(我想我已经读过如何到 define the entire pipeline in the lib 和 similar ),因为这几乎是每个管道代码的静态结尾:
@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/
我是一名优秀的程序员,十分优秀!