为什么每次推送代码时都安装最新版本的chrome-gitlab-ci

时间:2018-06-28 13:12:04

标签: gitlab gitlab-ci

我已经看到了许多gitlab-ci.yml文件的示例,在该示例中,人们安装了最新版本的chrome。因此,这意味着每次推送到存储库时,服务器都会下载新版本的chrome,以便该实例运行。例如,这是我现在在gitlab-ci.yml文件中所拥有的:

# Installs Chrome
- wget -q -O — https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - 
- echo ‘deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main’ | tee /etc/apt/sources.list.d/google-chrome.list
- apt-get update
- apt-get install google-chrome-stable -y

人们为什么要这样做?如果许多开发人员同时推送代码,这会不会减慢速度并可能停止构建?为什么我会看到这种情况,而不仅是事先在服务器上下载了chrome,所以您的构建会运行得更快?

2 个答案:

答案 0 :(得分:1)

根据您对我的评论的回应,我可以想到三种可能的解释:

  • 创建gitlab-ci.yml的人没有想到使用Chrome创建自定义图片的可能性
  • 创建gitlab-ci.yml的人不知道如何创建自定义Docker映像
  • 创建gitlab-ci.yml的人员决定,他们不希望每次发布新版Chrome时都创建新版本的自定义图片-可能是因为在他们看来,CI是您一次设置的东西然后,除非有错误报告,否则都不要理会。

编辑:我无意指责任何人懒惰或无能。让我详细说明:

  • 在给定的时间不考虑给定问题的特定解决方案不会自动使人无能为力。我敢肯定,每个人至少都有一次以某种方式解决问题的方法,只是后来才意识到或让他们指出,有一个更快/更好/更优雅的解决方案,想知道为什么他们没有想到它,因为它是如此明显。没有人一直都是100%。
  • 不知道特定的工具并不能使人无能为力。据我所知,了解Docker不是使用Gitlab CI(或任何其他CI)的先决条件。设置CI的人可能不知道它是否可以在项目中的其他地方使用,并且没有足够的时间来学习它,因为给定了设置CI的时间(通常这不是他们要做的,但是等级较高的人)。
  • 我承认我的最后一点措辞可能更好。我的意思是,在我看来,配置项是一种旨在自动运行的配置,除非发生意外情况或外部条件发生变化。例如,我为不同的项目设置了多个Jenkins作业,以维护测试环境。基本模板始终是相同的-从存储库中签出代码,构建代码,运行测试,在测试环境中归档日志,最后将新版本部署到测试环境。作业始终设置为在发生故障时将电子邮件发送给预定义的人员列表。设置完成后,我为其设置了一些触发器(计时器或Webhook),然后将其遗忘,除非收到关于失败的电子邮件,或者需要构建或部署项目的方式已更改。我认为这不会使我变得懒惰-我认为这会使我高效,因为我现在有更多时间执行其他任务-无法轻松实现自动化(如果有的话)的任务。

答案 1 :(得分:1)

您正在看到它,是因为很有可能该代码不是在现有服务器上运行,而是在不包含该二进制文件的docker映像上运行。如果它将在服务器上运行,则有关的行将仅更新软件包。

如果遇到性能问题,可以准备自己的已经安装了该软件包的docker映像,但是很难说为什么以前没有这样做。也许以前没有注意到性能问题,或者代码来自不想集中精力创建图像的教程。