11

Jenkins的pipeline实践之GitSCM参数配置项详解

 2 years ago
source link: https://wiki.eryajf.net/pages/ff3332/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

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"]]]
)

对于其中一些参数知之不详,直到看到如下文章:workflow-scm-step (opens new window),这才激起我的研究欲望,本文将针对如上参数,参照官方文档一一说明。

  • userRemoteConfigs:指定git仓库相关的信息

    • url:String类型,指定 git 存储库的 URL 或路径。以下是有效 git URL 的示例:

      建议统一使用https风格,这样日常使用时便于跳转。

    • credentialsId:String类型,用于检查源的凭据,通常只需要写明凭据的name即可。

    • name:String类型,存储库的 ID,一般情况下用不到。

  • branches:指定要构建的分支相关的标识信息。

    • name:String类型,如果您想跟踪存储库中的特定分支,请指定分支。例如master,一般配合参数传递过来。不过里边不仅仅支持分支名字的定义,还支持如下类型:

      • <branchName>:指定要检出的分支,例如master。
      • <tagName>:指定要检出的tag,例如v0.0.1。
      • <commitId>:检出指定的提交,例如:5062ac843f2b947733e6a3b105977056821bd3525062ac84

      需要注意的是:如果使用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

知其然也要知其所以然,才不会在日常使用过程中被其牵制,当我们掌握这些细节越多之后,自身的价值就总会在某些不起眼的时刻迸发出来。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK