无需手册指定目录结构,本地实现Jenkins步骤复用的简便方法
同一仓库内复用Jenkins Pipeline步骤的简便方案
不需要折腾独立的Jenkins共享库,直接在当前仓库内用Groovy脚本封装公共步骤,再在各个Jenkinsfile里调用就行,步骤简单直接:
1. 创建公共步骤脚本
在仓库根目录下新建Groovy文件(推荐放在vars目录下,比如vars/commonPipeline.groovy,也可以直接在根目录建commonSteps.groovy),把重复的流水线逻辑封装成函数:
示例:vars/commonPipeline.groovy
// 封装通用的构建测试流程 def buildAndTest() { stage('拉取代码') { checkout scm } stage('编译构建') { sh 'mvn clean package -DskipTests' } stage('单元测试') { sh 'mvn test' } stage('归档产物') { archiveArtifacts artifacts: 'target/*.jar', fingerprint: true } } // 带参数的通用步骤示例 def deployToEnv(String env) { stage("部署到${env}环境") { sh "ansible-playbook deploy.yml -e env=${env}" } }
2. 在Jenkinsfile中调用公共步骤
如果脚本放在vars目录下,声明式流水线里可以直接调用函数:
pipeline { agent any stages { stage('执行通用流程') { steps { commonPipeline.buildAndTest() } } stage('自定义部署') { steps { commonPipeline.deployToEnv('dev') } } } }
如果是根目录下的普通Groovy文件,需要先加载脚本再调用:
// 加载本地公共脚本 def common = load 'commonSteps.groovy' pipeline { agent any stages { stage('通用流程') { steps { script { // 声明式流水线中调用脚本式函数需放在script块内 common.buildAndTest() } } } } }
关键注意事项
- 声明式流水线调用自定义Groovy函数时,若脚本不在
vars目录,必须放在script块内执行 - 公共脚本支持传递参数,可根据不同Jenkinsfile的需求动态调整流程
- 所有脚本和Jenkinsfile同属一个仓库,提交代码时同步更新,无需额外维护独立仓库或配置Jenkins UI
内容的提问来源于stack exchange,提问作者krop
相关产品推荐
相关产品推荐

