You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MultiBranchPipelineJob的DSL中定义流水线脚本而非使用仓库Jenkinsfile?

实现自定义脚本的多分支流水线Job

方案一:直接在Job DSL中嵌入流水线脚本

你可以使用WorkflowScriptBranchProjectFactory替代设想中的pipelineFactory,它支持直接传入自定义流水线脚本,无需依赖代码仓库中的Jenkinsfile。修改后的完整DSL代码如下:

multibranchPipelineJob('my-multibranch-pipeline') {
    displayName('My Multi-Branch Pipeline')
    description('Multi-Branch Pipeline with custom embedded workflow script')

    branchSources {
        git {
            id('my-git-source')
            remote('https://github.com/op/myrepo.git')
            credentialsId('my-git-credentials')
            includes('*')
        }
    }

    factory {
        workflowScriptBranchProjectFactory {
            script("""
                pipeline {
                    agent any
                    stages {
                        stage('Demo') {
                            steps {
                                echo 'Hello from embedded script!'
                                // 如果需要拉取代码仓库内容,取消下方注释
                                // checkout scm
                            }
                        }                   
                    }
                }
            """)
        }
    }
}

该配置会让多分支流水线的所有分支都运行你嵌入的脚本,而非仓库中的Jenkinsfile。若需要获取仓库代码,添加checkout scm步骤即可。

方案二:使用共享库管理脚本

如果脚本逻辑复杂,推荐用Jenkins共享库来维护代码,提升可复用性。先确保共享库已在Jenkins全局配置中完成添加,然后在DSL中引用共享库的脚本:

multibranchPipelineJob('my-multibranch-pipeline') {
    displayName('My Multi-Branch Pipeline')
    description('Multi-Branch Pipeline using shared library script')

    branchSources {
        git {
            id('my-git-source')
            remote('https://github.com/op/myrepo.git')
            credentialsId('my-git-credentials')
            includes('*')
        }
    }

    factory {
        workflowScriptBranchProjectFactory {
            script("""
                @Library('my-shared-library') _
                // 调用共享库中定义的流水线方法
                myCustomPipeline()
            """)
        }
    }
}

其中my-shared-library是你在Jenkins中配置的共享库名称,myCustomPipeline()是共享库vars目录下定义的流水线方法(对应文件vars/myCustomPipeline.groovy),你可以在该文件中实现完整的流水线逻辑。

内容的提问来源于stack exchange,提问作者Simone Gheller

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 00:54:55