Jenkins的pipeline实践之GitSCM参数配置项详解
文章发布较早,内容可能过时,阅读注意甄别。
我定义的通用的拉取代码片段如下:
checkout(
[$class: 'GitSCM', doGenerateSubmoduleConfigurations: false, submoduleCfg: [], extensions: [[$class: 'CloneOption', depth: 1, noTags: false, reference: '', shallow: true]],
branches: [[name: "$BRANCH"]],userRemoteConfigs: [[url: "${env.GIT_URL}", credentialsId: "cicd-pass"]]]
)
1
2
3
4
2
3
4
对于其中一些参数知之不详,直到看到如下文章:workflow-scm-step (opens new window),这才激起我的研究欲望,本文将针对如上参数,参照官方文档一一说明。
userRemoteConfigs:指定 git 仓库相关的信息
url:String 类型,指定 git 存储库的 URL 或路径。以下是有效 git URL 的示例:
- ssh://git@github.com/github/git.git
- git@github.com:github/git.git (short notation for ssh protocol)
- ssh://user@other.host.com/~/repos/R.git (to access the repos/R.git repository in the user's home directory)
- https://github.com/github/git.git
建议统一使用 https 风格,这样日常使用时便于跳转。
credentialsId:String 类型,用于检查源的凭据,通常只需要写明凭据的 name 即可。
name:String 类型,存储库的 ID,一般情况下用不到。
branches:指定要构建的分支相关的标识信息。
name:String 类型,如果您想跟踪存储库中的特定分支,请指定分支。例如 master,一般配合参数传递过来。不过里边不仅仅支持分支名字的定义,还支持如下类型:
<branchName>
:指定要检出的分支,例如 master。<tagName>
:指定要检出的 tag,例如 v0.0.1。<commitId>
:检出指定的提交,例如:5062ac843f2b947733e6a3b105977056821bd352
,5062ac84
。
需要注意的是
:如果使用 commitID 进行构建,而且是一个过去的 ID,那么 depth: 1 需要去掉,否则总是会报错。
gitTool:String 类型,指定 git 命令的路径,通常情况下,git 都是系统全局可用的,因此此参数可忽略。
extensions:扩展为不同用途添加新行为或修改现有插件行为,帮助用户更精确地调整插件行为以满足使用需求。参数项比较多,挑一些常用的说明一下。
$class: 'CloneOption'
:用于定义 clone 时的一些参数配置。- depth:int 类型,设置浅克隆深度,通常设置为 1 用于加快拉取,如果想要常规 clone,则删除此配置项。
- noTags:bool 类型,取消选择此选项可在没有标签的情况下执行克隆,从而在您只想访问 refspec 指定的内容时节省时间和磁盘空间。
- reference:String 类型,指定包含存储库的文件夹,Git 将在克隆操作期间将其用作参考。如果文件夹在执行克隆的控制器或代理上不可用,则将忽略此选项。
- shallow:bool 类型,执行浅克隆,这样 git 就不会下载项目的历史记录,可以节省时间和磁盘空间。
- timeout:int 类型,指定克隆和获取操作的超时时间(以分钟为单位,默认值:10)。
$class: 'CleanCheckout'
:通过删除所有未跟踪的文件和目录,包括在.gitignore
. 它还会将所有跟踪的文件重置为其版本化状态。这确保工作区处于与您在全新的空目录中克隆和检出时相同的状态,并确保您的构建不受先前构建生成的文件的影响。- deleteUntrackedNestedRepositories:删除未跟踪的子模块和包含.git 目录的任何其他子目录。类型: boolean
知其然也要知其所以然,才不会在日常使用过程中被其牵制,当我们掌握这些细节越多之后,自身的价值就总会在某些不起眼的时刻迸发出来。
上次更新: 2024/11/19, 23:11:42