我在 Jenkins 中使用 git LFS 时遇到了问题。我现在正在做的是
- 我正在从 maven 到 Jenkins 构建一场战争,战争包含一个 jar 文件
- 通过 Git LFS,我们将该 jar 文件转换为指针文件。但是在 Jenkins 结账时,该罐子并没有转换为其原始大小,而是作为指针包含在战争中。
我们在 Jenkins 中使用了 git 插件和 git-client 插件,分别是 3.3.0 和 2.4.2 版本。
发生了什么事情:
A.war -> a.jar(其原始大小为 1234 kb,但即将推出 3 kb(这是指针文件的大小)
所以我的问题是:
- 如何在 Jenkins 中使用 git LFS?
- 詹金斯有没有单独的 Git Lfs 插件?
- 当使用 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"插件来完成。
-
在 Jenkins 中添加"Pre SCM BuildStep">插件。
-
在作业配置中
-
在"生成环境"部分中选择属性"在SCM 运行之前运行生成步骤
-
单击添加构建步骤
-
选择"执行命令行管理程序"或"执行 Windows 批处理命令"。
-
在外壳程序中添加以下命令,
Git LFS 安装
-
-
在源代码管理部分 ->其他行为 -> 在签出后添加 Git LFS 拉取。
参考链接