在Jenkins中设置Git LFS

13

我在Jenkins中使用git LFS时遇到了问题。目前我的操作如下:

  1. 我通过Jenkins从maven构建war文件,其中包含一个jar文件。
  2. 使用Git LFS,我们将该jar文件转换为一个指针文件。但是在从Jenkins检出时,该jar文件没有转换成其原始大小,而是作为指针文件包含在war文件中。

我们在Jenkins中使用版本为3.3.0和2.4.2的git插件和git-client插件。

发生了什么:

A.war -> a.jar(原始大小为1234 kb,但它以3 kb的指针文件的大小出现)

因此,我的问题是:

  1. 如何在Jenkins中使用git LFS?
  2. 是否有专门的Git Lfs插件适用于Jenkins?
  3. 当使用Git LfS时,文件应如何在检出时转换为其原始大小?

乍一看,文档并不是很好,而且我手头没有Jenkins,所以我不能完全回答。但是,我可以说:你不应该需要单独的插件,因为git插件自3.1.0版本以来就支持LFS。你可能会从这个问题日志中找到一些帮助:https://issues.jenkins-ci.org/browse/JENKINS-35687 - Mark Adelsberger
2个回答

24
这可以使用Jenkins的常规Git插件(版本3.1.0及以上)完成。
如果您正在使用Jenkins流水线(即在您的repo根目录中有Jenkinsfile),关键是在checkout()调用中包含扩展[$class: 'GitLFSPull']。下面是我们其中一个repo中的(编辑过的)示例:
checkout([  $class: 'GitSCM', 
    branches: [[name: 'refs/heads/'+env.BRANCH_NAME]],
        doGenerateSubmoduleConfigurations: false,
        extensions: [
            [$class: 'GitLFSPull'],
            [$class: 'CheckoutOption', timeout: 20],
            [$class: 'CloneOption',
                    depth: 0,
                    noTags: false,
                    reference: '/other/optional/local/reference/clone',
                    shallow: false,
                    timeout: 120]
        ],
        submoduleCfg: [],
        userRemoteConfigs: [
            [credentialsId: 'foobar',
            url: 'https://github.com/foo/bar.git']
        ]
    ])
使用片段生成器,可以通过从“其他行为”菜单中选择“Git LFS checkout后拉取”的选项来生成此代码。点击此处查看屏幕截图

谢谢...这个方法可行;虽然我不喜欢硬编码我的git仓库。我们在github中使用组织,我希望我可以从那里设置所有内容;遗憾的是,它支持“git lfs pull”检出后 - 但似乎实际上并不起作用。该死的,我讨厌Jenkins。迫不及待地想要摆脱这个破玩意。 - TJ Biddle
2
"hudson.plugins.git.GitException: 命令“git lfs pull origin”返回状态码1: 标准输出: 标准错误:git:“lfs”不是git命令。请参阅'git --help'。你是指这个吗? log“。这可能需要在从属机上预先安装git lfs..." - Prathamesh dhanawade

16

可以使用“Pre SCM BuildStep”插件来完成此操作。

  1. 在Jenkins中添加“Pre SCM BuildStep”插件。

  2. 在作业配置中

    1. 在构建环境部分选择属性在SCM运行之前运行构建步骤

    2. 单击添加构建步骤

    3. 选择执行Shell 或执行Windows批处理命令

    4. 在shell中添加以下命令,

      git lfs安装

  3. 在源代码管理部分 ->其他行为 ->添加 Git LFS fetch after checkout

参考链接


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接