因此,我正在尝试为一些不同的项目制作多分支管道。
这些是基本要求:
因此这些要求非常简单。
但是有第四个要求。我要弄清楚的是,如果我可以拥有一个可以容纳我所有jenkinsfiles的存储库,然后构建另一个存储库的所有分支。这可能吗?所有其他答案似乎都指向不推荐使用的解决方案,例如自由式Multibranch项目。
答案 0 :(得分:1)
是否可以使用另一个仓库中的jenkinsfile构建多分支管道?
简短答案: 不,不是,因为Multibranch Pipeline中的每个Job始终从配置为监视的同一分支(因此,来自相同的仓库)引用Jenkinsfile。不包含Jenkinsfile的分支不会被索引。
扩展答案: 为了或多或少地实现您的要求,我将执行以下操作:
Jenkinsfiles
(每个分支,每个客户端,每个环境...等等)创建一个仓库。
每个Jenkinsfile
将描述每种情况下要执行的阶段。使用Scripted Pipeline syntax。Jenkinfile
:使用自定义管道签出专用的仓库,加载管道并执行。 示例
git@github.com:您的组织/custom-pipelines.git/Jenkinsfile-dev
// Jenkinsfile-dev
def stages() {
stage ("Checkout") {
checkout scm
}
stage ("Build") {
}
stage ("Test") {
}
}
return this
git@github.com:您的组织/product-repo.git/Jenkinsfile
// Jenkinsfile
node ("ubuntu") {
// Checkout custom Jenkinsfiles
stage ("Checkout pipelines") {
git url: "git@github.com:your-org/custom-pipelines.git",
branch: "master",
credentialsId: "github-ssh"
}
load ("Jenkinsfile-${env.BRANCH_NAME}").stages()
}