区块链技术博客
www.b2bchain.cn

优化持续集成构建速度求职学习资料

本文介绍了优化持续集成构建速度求职学习资料,有助于帮助完成毕业设计以及求职,是一篇很好的资料。

对技术面试,学习经验等有一些体会,在此分享。

前言

在 持续集成是什么?中提到

没有什么比缓慢的构建更能危害持续集成活动。所以一旦你的构建速度过慢,应该先想办法加快它。

我们都希望整个集成流程尽量快。但是,随着项目的开发,代码量增加,仓库变大,拉取时间变长;资源文件增多,文件读取变慢;依赖库增多,拉取依赖库时间变长,构建时间变长;

下面,我针对这三个方面,根据项目的实践经验,向大家提供一些建议。

代码

代码量增加,是项目迭代不可避免的一个现象。在持续集成 Jenkins Pipeline 中每个 stage 的第一步就是做 Check out (除非使用 options { skipDefaultCheckout() })。而且,如果项目的构建需要多个节点,那么每个节点(包括 master 节点)都需要拉一次代码。这意味着,在整个集成的过程中,代码的拉取是个必要且频繁的一个操作。

优化持续集成构建速度

那么,减少 git clone 的时间便是我们的方向。

另外,在 持续集成与 Git 工作流 中我推荐大家试用 TBDTBD 工作流的集成只需要关注最新的代码

git clone 有个可选项 --depth,表示浅克隆的深度。

❯ git clone -h | grep depth     --depth <depth>       create a shallow clone of that depth

--depth=1 的时候,表示只克隆包含最近一次 commit 的一个分支,不会下载 Git 协作的历史记录,这样这个项目文件就不会很大。

举个例子

直接 git clone,时间消耗是 106

❯ git clone https://github.com/kiali/kiali.git Cloning into 'kiali'... remote: Enumerating objects: 79, done. remote: Counting objects: 100% (79/79), done. remote: Compressing objects: 100% (72/72), done. remote: Total 37952 (delta 31), reused 19 (delta 7), pack-reused 37873 Receiving objects: 100% (37952/37952), 35.28 MiB | 335.00 KiB/s, done. Resolving deltas: 100% (21837/21837), done. ❯ du -h -d 1  45M    ./kiali  45M    .

使用 --depth=1,时间消耗是 5

❯ mkdir compare ❯ cd compare ❯ git clone --depth=1 https://github.com/kiali/kiali.git Cloning into 'kiali'... remote: Enumerating objects: 543, done. remote: Counting objects: 100% (543/543), done. remote: Compressing objects: 100% (477/477), done. remote: Total 543 (delta 71), reused 188 (delta 50), pack-reused 0 Receiving objects: 100% (543/543), 2.67 MiB | 280.00 KiB/s, done. Resolving deltas: 100% (71/71), done. ❯ du -h -d 1  11M    ./kiali  11M    .

可以看出,--depth=1 能大大减少 git clone 的时间。

在 Jenkins 中可以利用 Git Plugin 实现 --depth=1,如下图

前言

在 持续集成是什么?中提到

没有什么比缓慢的构建更能危害持续集成活动。所以一旦你的构建速度过慢,应该先想办法加快它。

我们都希望整个集成流程尽量快。但是,随着项目的开发,代码量增加,仓库变大,拉取时间变长;资源文件增多,文件读取变慢;依赖库增多,拉取依赖库时间变长,构建时间变长;

下面,我针对这三个方面,根据项目的实践经验,向大家提供一些建议。

代码

代码量增加,是项目迭代不可避免的一个现象。在持续集成 Jenkins Pipeline 中每个 stage 的第一步就是做 Check out (除非使用 options { skipDefaultCheckout() })。而且,如果项目的构建需要多个节点,那么每个节点(包括 master 节点)都需要拉一次代码。这意味着,在整个集成的过程中,代码的拉取是个必要且频繁的一个操作。

优化持续集成构建速度

那么,减少 git clone 的时间便是我们的方向。

另外,在 持续集成与 Git 工作流 中我推荐大家试用 TBDTBD 工作流的集成只需要关注最新的代码

git clone 有个可选项 --depth,表示浅克隆的深度。

❯ git clone -h | grep depth     --depth <depth>       create a shallow clone of that depth

--depth=1 的时候,表示只克隆包含最近一次 commit 的一个分支,不会下载 Git 协作的历史记录,这样这个项目文件就不会很大。

举个例子

直接 git clone,时间消耗是 106

❯ git clone https://github.com/kiali/kiali.git Cloning into 'kiali'... remote: Enumerating objects: 79, done. remote: Counting objects: 100% (79/79), done. remote: Compressing objects: 100% (72/72), done. remote: Total 37952 (delta 31), reused 19 (delta 7), pack-reused 37873 Receiving objects: 100% (37952/37952), 35.28 MiB | 335.00 KiB/s, done. Resolving deltas: 100% (21837/21837), done. ❯ du -h -d 1  45M    ./kiali  45M    .

使用 --depth=1,时间消耗是 5

❯ mkdir compare ❯ cd compare ❯ git clone --depth=1 https://github.com/kiali/kiali.git Cloning into 'kiali'... remote: Enumerating objects: 543, done. remote: Counting objects: 100% (543/543), done. remote: Compressing objects: 100% (477/477), done. remote: Total 543 (delta 71), reused 188 (delta 50), pack-reused 0 Receiving objects: 100% (543/543), 2.67 MiB | 280.00 KiB/s, done. Resolving deltas: 100% (71/71), done. ❯ du -h -d 1  11M    ./kiali  11M    .

可以看出,--depth=1 能大大减少 git clone 的时间。

在 Jenkins 中可以利用 Git Plugin 实现 --depth=1,如下图

前言

在 持续集成是什么?中提到

没有什么比缓慢的构建更能危害持续集成活动。所以一旦你的构建速度过慢,应该先想办法加快它。

我们都希望整个集成流程尽量快。但是,随着项目的开发,代码量增加,仓库变大,拉取时间变长;资源文件增多,文件读取变慢;依赖库增多,拉取依赖库时间变长,构建时间变长;

下面,我针对这三个方面,根据项目的实践经验,向大家提供一些建议。

代码

代码量增加,是项目迭代不可避免的一个现象。在持续集成 Jenkins Pipeline 中每个 stage 的第一步就是做 Check out (除非使用 options { skipDefaultCheckout() })。而且,如果项目的构建需要多个节点,那么每个节点(包括 master 节点)都需要拉一次代码。这意味着,在整个集成的过程中,代码的拉取是个必要且频繁的一个操作。

优化持续集成构建速度

那么,减少 git clone 的时间便是我们的方向。

另外,在 持续集成与 Git 工作流 中我推荐大家试用 TBDTBD 工作流的集成只需要关注最新的代码

git clone 有个可选项 --depth,表示浅克隆的深度。

❯ git clone -h | grep depth     --depth <depth>       create a shallow clone of that depth

--depth=1 的时候,表示只克隆包含最近一次 commit 的一个分支,不会下载 Git 协作的历史记录,这样这个项目文件就不会很大。

举个例子

直接 git clone,时间消耗是 106

❯ git clone https://github.com/kiali/kiali.git Cloning into 'kiali'... remote: Enumerating objects: 79, done. remote: Counting objects: 100% (79/79), done. remote: Compressing objects: 100% (72/72), done. remote: Total 37952 (delta 31), reused 19 (delta 7), pack-reused 37873 Receiving objects: 100% (37952/37952), 35.28 MiB | 335.00 KiB/s, done. Resolving deltas: 100% (21837/21837), done. ❯ du -h -d 1  45M    ./kiali  45M    .

使用 --depth=1,时间消耗是 5

❯ mkdir compare ❯ cd compare ❯ git clone --depth=1 https://github.com/kiali/kiali.git Cloning into 'kiali'... remote: Enumerating objects: 543, done. remote: Counting objects: 100% (543/543), done. remote: Compressing objects: 100% (477/477), done. remote: Total 543 (delta 71), reused 188 (delta 50), pack-reused 0 Receiving objects: 100% (543/543), 2.67 MiB | 280.00 KiB/s, done. Resolving deltas: 100% (71/71), done. ❯ du -h -d 1  11M    ./kiali  11M    .

可以看出,--depth=1 能大大减少 git clone 的时间。

在 Jenkins 中可以利用 Git Plugin 实现 --depth=1,如下图

部分转自互联网,侵权删除联系

赞(0) 打赏
部分文章转自网络,侵权联系删除b2bchain区块链学习技术社区 » 优化持续集成构建速度求职学习资料
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

b2b链

联系我们联系我们