Git LFS setup in jenkins



我在 Jenkins 中使用 git LFS 时遇到了问题。我现在正在做的是

  1. 我正在从 maven 到 Jenkins 构建一场战争,战争包含一个 jar 文件
  2. 通过 Git LFS,我们将该 jar 文件转换为指针文件。但是在 Jenkins 结账时,该罐子并没有转换为其原始大小,而是作为指针包含在战争中。

我们在 Jenkins 中使用了 git 插件和 git-client 插件,分别是 3.3.0 和 2.4.2 版本。

发生了什么事情:

A.war -> a.jar(其原始大小为 1234 kb,但即将推出 3 kb(这是指针文件的大小)

所以我的问题是:

  1. 如何在 Jenkins 中使用 git LFS?
  2. 詹金斯有没有单独的 Git Lfs 插件?
  3. 当使用 Git LfS 时,文件应该如何在结帐时转换为其原始大小?

这可以使用 Jenkins 的常规 Git+Plugin (版本 3.1.0 及更高版本)来完成。

如果您使用的是 Jenkins Pipelines(即在存储库的根目录中使用 Jenkinsfile),关键是要在checkout()调用中包含扩展[$class: 'GitLFSPull']。这是从我们的一个存储库中获取的(编辑的)示例:

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 来生成此代码。在此处查看屏幕截图

这可以通过"Pre SCM BuildStep"插件来完成。

  1. 在 Jenkins 中添加"Pre SCM BuildStep">插件。

  2. 在作业配置中

    1. 在"生成环境"部分中选择属性"在SCM 运行之前运行生成步骤

    2. 单击添加构建步骤

    3. 选择"执行命令行管理程序"或"执行 Windows 批处理命令"。

    4. 在外壳程序中添加以下命令,

      Git LFS 安装

  3. 在源代码管理部分 ->其他行为 -> 在签出后添加 Git LFS 拉取

参考链接

最新更新