我在不同的存储库中有很多项目,它们共享相同的基本 CI 工作流程,我可以轻松地将其表达为声明式管道:
pipeline {
agent any
options {
buildDiscarder(logRotator(numToKeepStr: '20'))
}
stages {
stage('CI') {
steps {
echo 'Do CI'
}
}
stage('QA') {
steps {
echo 'Do QA'
}
}
}
post {
always {
junit allowEmptyResults: true, testResults: '**/target/surefire-reports/TEST-*.xml'
// etc...
}
failure {
echo 'Failure mail'
// etc
}
}
}
我希望在所有项目中使用相同的声明性管道,并且能够仅在一处更改管道的定义,并自动在所有项目中使用更改。
基本上我在项目的 Jenkinsfile 中要做的是:
loadPipelineFromScm 'repository', 'pipeline.groovy'
我已经可以使用共享库执行此操作,但是我无法再使用声明式管道功能。
有没有办法分享一下声明式跨多个存储库的管道?
虽然使用 noober01 的建议保持视图完好无损,但声明式管道将无法正常运行。例如。 When 子句将被忽略,因为管道元素应该是顶级的,这意味着它被解析为脚本化管道。
请参阅 Jenkins 背后的团队拒绝的以下问题:加载外部声明性管道问题 https://issues.jenkins-ci.org/browse/JENKINS-43576
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)