git文件过大导致构建失败的解决方案(快速提升jenkins构建速度)

简介: git文件过大导致构建失败的解决方案(快速提升jenkins构建速度)

01 引言

最近使用 jenkins 部署一个项目的时候,总是构建失败,卡在了git clone这一步骤,经过一系列的分析,发现jenkins执行git clone时,会先下载(或构建).git文件的。

随着项目提交的次数增多,特别是如果提交内容里有大文件,会发现.git文件越来越大

.git是一个隐藏文件,该文件夹存储了 Git 仓库的所有元数据和对象,包含:对象数据库(Object Database)、分支和标签信息、配置信息、日志和历史记录、钩子脚本(Hooks)等。

既然找到了导致jenkins构建过慢或者失败的病因,那该如何解决呢?

02 解决方式

2.1 方式1 - 压缩减小.git文件体积

可以使用Git提供的命令行工具将.git文件压缩为更小的大小,运行以下命令:

git gc --aggressive --prune=all

这将使用Git的垃圾收集机制来清理和压缩不再使用的对象,并将不必要的历史记录从存储库中删除,这可能会减小.git文件的大小。

也可以使用一些第三方工具清理和优化Git存储库,例如:BFG Repo-Cleaner


如果.git文件的大小主要是由于大型文件引起的,可以考虑从存储库中删除这些文件或使用GitLFS(Large File Storage)扩展来处理大型文件,通过移除或外部存储大文件,可以减小.git文件的大小。

2.1 方式2 - 使用浅克隆(推荐)

如果不需要存储库的完整历史记录,并且只对最新的提交和文件更改感兴趣,可以使用Git的浅克隆(shallow clone)功能来减小.git文件的大小,运行以下命令( --depth表示只需要最后1条记录):

git clone --depth 1 -b 分支 仓库地址

这将只克隆最新的提交和文件,而不会复制完整的历史记录。

那么对应jenkins是这样配置的,首先打开项目的Git配置部分,找到“Additional Behaviors”(附加行为)选项,并点击“Add”(添加)按钮,选择“Advanced clone behaviours”:

然后配置Shallow clone,depth为1即可:

03 文末

经过上述的配置,可以看到jenkins的构建速度明显加快了,希望能帮助到大家,谢谢大家的阅读,本文完!

目录
相关文章
|
1月前
|
jenkins Devops 机器人
【DevOps】(五)Jenkins构建给企业微信推送消息
【DevOps】(五)Jenkins构建给企业微信推送消息
41 1
|
1月前
|
开发工具 git
如何使git提交的时候忽略一些特殊文件?
如何使git提交的时候忽略一些特殊文件?
|
18天前
|
Kubernetes Cloud Native jenkins
云原生时代:从Jenkins到Argo Workflows,构建高效CI Pipeline
基于Argo Workflows可以构建大规模、高效率、低成本的CI流水线
|
1月前
|
移动开发 jenkins 持续交付
解决jenkins、git拉取代码仓库失败Please make sure you have the correct access rights
解决jenkins、git拉取代码仓库失败Please make sure you have the correct access rights
32 3
|
1月前
|
jenkins Java 持续交付
Jenkins 快速入门 (含Jenkins + Docker + Git 简单的自动化实操)(上)
Jenkins 快速入门 (含Jenkins + Docker + Git 简单的自动化实操)
|
1月前
|
存储 项目管理 开发工具
Git 版本控制:构建高效协作和开发流程的最佳实践
版本控制是软件开发的核心,促进团队协作与项目管理。通过制定明确的分支命名策略,遵循一致的代码提交规范,如指明提交类型和简短描述,增强了历史记录的可读性,可以清晰地组织和理解项目的结构与进展。
48 0
Git 版本控制:构建高效协作和开发流程的最佳实践
|
1月前
|
开发工具 git
【git】如何删除git远程仓库上的文件
【git】如何删除git远程仓库上的文件
23 1
|
1月前
|
jenkins Shell 持续交付
Jenkins job 创建、参数化、定时构建及时区偏差问题
在Jenkins中创建新任务,步骤:设置任务名,选择自由风格,输入描述并配置丢弃旧构建的规则(保留最近3次)。接着,参数化构建过程,添加字符参数并设定其名称、默认值和描述。在构建触发器中,设定定时构建为每2分钟一次(H2/ * * * *)。在构建阶段执行Shell命令,打印参数param。构建结果显示每2分钟执行一次,保留最近3次构建,参数默认值为Jenkins。定时构建的cron语法详解,并给出常见定时构建示例。当遇到Jenkins显示时间与系统时间不一致(UTC时间差8小时)的问题,解决办法是在Docker启动时添加参数调整时区至上海,确认时区修改成功后,构建历史时间将与系统时间同步。
33 2
|
1月前
|
SQL PHP 开发工具
【攻防世界】mfw(.git文件泄露)
【攻防世界】mfw(.git文件泄露)
|
1月前
|
jenkins 持续交付 开发工具
Jenkins 快速入门 (含Jenkins + Docker + Git 简单的自动化实操)(下)
Jenkins 快速入门 (含Jenkins + Docker + Git 简单的自动化实操)