如何向共享Jenkins流水线中注入或添加自定义阶段?
能否向共享Jenkins流水线注入自定义阶段?
可以,具体分两种场景处理:
1. 共享库流水线支持扩展点
如果pipeline_sharedBuild2019这个共享库函数本身设计了扩展机制(比如预留了自定义阶段的参数),直接通过传参就能添加。比如假设函数支持preBuildStages或postBuildStages这类参数:
@Library(["global-library"]) _ pipeline_sharedBuild2019([ path: "Internal.sln", buildOutput: "./bin", npm: "true", nodeVersion: '18.x', preBuildStages: [ { stage('自定义前置阶段') { echo '执行自定义前置操作' // 这里写你的自定义逻辑 }} ], postBuildStages: [ { stage('自定义后置阶段') { echo '执行自定义后置操作' // 这里写你的自定义逻辑 }} ] ])
2. 共享库流水线未提供扩展点
如果共享库函数没有预留扩展参数,你可以通过以下方式扩展:
- 修改共享库代码:直接修改
global-library里的pipeline_sharedBuild2019函数,在合适的位置(比如编译前/后)添加自定义阶段的逻辑入口,或者新增扩展参数。 - 包裹共享流水线:用自定义流水线包裹共享流水线调用,在其前后添加自定义阶段:
@Library(["global-library"]) _ pipeline { agent any stages { stage('自定义前置阶段') { steps { echo '执行自定义前置操作' // 自定义逻辑 } } stage('共享流水线构建') { steps { script { pipeline_sharedBuild2019([ path: "Internal.sln", buildOutput: "./bin", npm: "true", nodeVersion: '18.x' ]) } } } stage('自定义后置阶段') { steps { echo '执行自定义后置操作' // 自定义逻辑 } } } }
需要注意:如果是团队共享的库,修改共享库代码前要和团队沟通,确保不会影响其他流水线的运行;包裹方式更灵活,不需要修改共享库,但要注意共享流水线的agent、环境变量等是否和自定义阶段兼容。
内容的提问来源于stack exchange,提问作者Manoj Sreekumar
相关产品推荐
相关产品推荐

