Jenkins管道检测分支,可参数化
我试图在Jenkins文件中编写一个阶段,在该阶段中,我将从Jenkins作业传递分支名称,以在特定位置签出代码Jenkins管道检测分支,可参数化,jenkins,jenkins-pipeline,Jenkins,Jenkins Pipeline,我试图在Jenkins文件中编写一个阶段,在该阶段中,我将从Jenkins作业传递分支名称,以在特定位置签出代码 stage("Prepare") { steps { checkout([$class: 'GitSCM', branches: [[name: '*/master' ]], extensions: scm.extensions,
stage("Prepare") {
steps {
checkout([$class: 'GitSCM',
branches: [[name: '*/master' ]],
extensions: scm.extensions,
userRemoteConfigs: [[
url: 'https://gitlab.example.com/user/example_repo.git',
credentialsId: 'my-gitlab-repo-creds'
]]
])
}
}
此外,我们如何定义项目的签出位置。您错过了项目的功能。反过来,您的管道缺少一些重要的配置来获得您想要的:
分支机构名称
实现这一点
2)定义项目签出位置
添加以下扩展名并去掉scm.extensions
值
extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: 'myrepo']]
指定一个本地目录(相对于工作区根目录),其中将签出Git存储库。如果留空,将使用工作区根目录本身
对于分支
选项
最安全的方法是使用refs/heads/语法。这样,预期的分支是明确的
例如:
branches: [[name: 'refs/heads/${env.BRANCH_NAME}']]
拼凑起来
checkout(
[
$class: 'GitSCM',
extensions: [[$class: 'RelativeTargetDirectory', relativeTargetDir: 'example_repo']],
branches: [[name: 'refs/heads/${env.BRANCH_NAME}']],
userRemoteConfigs: [
[
url: 'https://gitlab.example.com/user/example_repo.git',
credentialsId: 'my-gitlab-repo-creds',
name: 'origin'
]
]
]
)
上面的代码将签出
${env.BRANCH\u NAME}
的分支https://gitlab.example.com/user/example_repo.git
到$WORKSPACE\u DIR/example\u repo
文件夹。需要将第二个项目克隆到不同的位置,并尝试参数化分支名称是两件不同的事情。最终目标是什么?将分支参数化并封装到dir('directory-name'){…}块中?