【问题标题】:Jenkins and Git sparse checkoutsJenkins 和 Git 稀疏检出
【发布时间】:2012-06-03 05:21:55
【问题描述】:

我在 Git 中有一个大型存储库。如何在 Jenkins 中创建一个仅从项目中检出一个子文件夹的作业?

【问题讨论】:

  • 真的有必要增加这种复杂性吗?第一次克隆存储库后,git 只会拉取新对象。除非您的 jenkins 服务器缺少足够的存储空间,否则我只会克隆整个东西并避免任何额外的复杂性。
  • 是的,因为在 CI/CD 环境中,您的从属服务器或 Jenkins 服务器随需求和负载来来去去……所以不存在永久性磁盘。在许多 DevOps 圈子中,对持久性的依赖比可重复性更重要

标签: git jenkins sparse-checkout


【解决方案1】:

Jenkins Git Plugin 从 git-plugin 2.1.0(2014 年 4 月)开始支持稀疏结帐。您需要 git >= 1.7.0 才能使用此功能。它位于“其他行为”->“稀疏结帐路径”下。

请参阅:Jira 问题JENKINS-21809

【讨论】:

  • 不幸的是,Git 仍然需要在本地复制整个存储库。所以你可能不会体验到 Git 从服务器获取文件的任何速度改进。
  • 不幸的是,它仍然以完整的原始“路径结构”检查它,所以它不像实际检查“一个目录”它只是恰好填充一个目录,FWIW
  • 相当老了,但是我们如何用空格定义子目录名称。我想签出“文件夹/to/include/directory withSpace”..
  • 如果 A 是根目录并稀疏到 B 子目录,则稀疏检出路径为:/B/ 用于 B 目录。 @OK999:在文件或文件夹名称中的空格或任何特殊字符之前尝试 BackSlash \ 。示例:/Path/To/My Folder 将类似于 /Path/To/My\ Folder 或尝试在引号“/Path/To/My Folder”之间传递路径。
  • @luka5z 这个答案需要结合深度为 1 的浅克隆,Jenkins 也支持。
【解决方案2】:

你可以有一个自定义步骤来使用

git checkout your-branch -- the/desired/path anthother/desired/path

要清除它,您只需 rm -rf 工作文件夹并使用 mkdir workingdir 重新创建它。这将要求您在上述命令的 git 级别上指定此选项:

git --working-dir="/path/to/workingdir" checkout your-branch -- the/desired/path anthother/desired/path

这一切都取决于你对 Jenkins 的了解程度。

【讨论】:

  • 问题是Jenkins通常使用插件来抓取源代码,而Git插件不允许您更改结帐命令。
  • 我想编写或修改现有插件会是个大问题。
【解决方案3】:

您可以使用 Git 的sparse checkout 功能。请注意,Git 仍然会将整个存储库克隆到本地磁盘。不过这还不算太糟糕,因为它是被压缩的。

  1. 在 Jenkins 中创建一个新作业,在源代码管理部分设置 Git 存储库。
  2. 构建项目。这会将整个存储库克隆到本地磁盘。
  3. 打开项目的工作区文件夹,删除除 .git 文件夹之外的所有内容。
  4. 为项目的工作区文件夹打开 Git shell。启用稀疏结帐:

    git config core.sparsecheckout true
    
  5. 更新工作树:

    git read-tree -mu HEAD
    
  6. 在 .git/info 文件夹中创建 sparse-checkout 文件。添加要签出到该文件的子文件夹的路径,如下所示(注意尾部斜杠):

    folder/to/include/
    
  7. 再次构建项目。这次只有一个子文件夹应该出现在工作区文件夹中。

【讨论】:

  • @RuudLenders 是的,您需要为每项工作都执行此操作,您只想签出一个子文件夹。
  • 第 5 步“git read-tree -mu HEAD”不应该跟在第 6 步之后吗?据我所知,您应该首先告诉 Git 它应该查看哪些文件(第 6 步),然后将树信息读入索引。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-02
  • 2020-11-23
  • 1970-01-01
  • 2012-03-23
  • 2015-04-18
  • 2017-06-07
相关资源
最近更新 更多