69

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

4

3 回答 3

75

自 git-plugin 2.1.0(2014 年 4 月)以来,Jenkins Git 插件支持稀疏签出。您需要 git >= 1.7.0 才能使用此功能。它位于“其他行为”->“稀疏结帐路径”下。

截屏

请参阅:Jira 问题JENKINS-21809

于 2014-07-18T09:56:21.457 回答
29

您可以使用Git 的稀疏检出功能。请注意,Git 仍然会将整个存储库克隆到本地磁盘。然而,这并不算太糟糕,因为它是压缩的。

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

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

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

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

于 2012-05-28T23:30:46.990 回答
1

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

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

这一切都取决于你对詹金斯的了解程度。

于 2012-05-29T00:25:38.967 回答