Jenkins使用job-dsl的pipelineJob同时配置SCM与静态脚本方法问询
解决方案
是可以同时配置SCM和内联静态流水线脚本的,你的示例配置方向正确,仅需要调整少量参数即可正常运行。
配置原理
Job DSL的pipelineJob下的cpsScm块本身支持同时配置两个核心属性:
scm:用于定义Git仓库信息,既可以给gitParameter插件提供分支、标签的查询数据源,也可以直接被流水线内的代码拉取步骤调用script:用于内联声明流水线逻辑,不需要依赖目标仓库内的Jenkinsfile,完全满足集中维护静态流水线的需求
修正后可用的完整配置
pipelineJob("test") { parameters { gitParameter { name('revision') type('PT_BRANCH_TAG') defaultValue('origin/master') selectedValue('DEFAULT') description('请选择要构建的分支/标签') branch('') branchFilter('.*') tagFilter('.*') // 关联对应SCM的仓库ID,单仓库场景直接填origin即可 useRepository('origin') quickFilterEnabled(true) } } logRotator { numToKeep(50) } definition { cpsScm { scm { git { remote { github("<你的仓库地址>") credentials('github') } // 直接使用gitParameter传入的版本参数 branch('$revision') } } // 内联你的静态流水线脚本 script(""" @Library(value='pipeline-lib@master', changelog=false) _ myPipeline projectName: 'test-name' """) // 内联脚本场景不需要轻量级检出,关闭避免兼容问题 lightweight(false) } } }
额外注意事项
- 流水线内如果需要拉取对应版本的业务代码,直接调用
checkout scm即可,会自动复用你配置的仓库地址、凭证、选中的版本参数,不需要重复配置 - 如果需要过滤展示的分支/标签,可以调整
branchFilter和tagFilter的正则规则,比如配置为origin/(?!master).*就可以隐藏master分支
内容的提问来源于stack exchange,提问作者Sebastian Woinar
相关产品推荐
相关产品推荐

