首先介绍一下整体的情况,和我们的需求。

  1. 在我们组里,不同的项目和服务,被分到不同的 repo 中,托管在 gitlab 上面。

  2. 最近一段时间,由于构建的时间变长,用掉了 gitlab 免费的 2000 minutes。

因此,打算采用自己的 runner,来进行服务的构建和使用。

Gitlab runner 配置有些神奇。

🔙 技术背景

在这之前,我们已经单给 data_service 部署了一个 gitlab-runner。这是由于data-service 跑 CI 的时间格外长,因此单独进行了配置。

但是没有想到的是,backend-service 耗尽了所有的 gitlab 分钟数。

​ 本文花费了作者 $8 。如果可以的话,请支持一下作者。

🏃‍♂️ Gitlab Runner 概念

CI 是由 jobs 组成的;

pipeline 是由多个 jobs 组成。

官方文档声称,在 gitlab 中,没有shared runner,就不能启动 jobs 了。

但其实,只要有 group runner 或者 specific runner (也就是我们自己配置的 runner),job 也可以正常运行。

要注意一下 tag 选项。tag 选项,并非单纯的对 runner 进行区分。项目也会依据tag,被分配给不同的runner

不过,我们在最初配置runner时不清楚这一点。我们还以为,就是官方所声称的:

"""
Shared Runners on GitLab.com run in autoscale mode and are powered by Google Cloud Platform. Autoscaling means reduced wait times to spin up builds, and isolated VMs for each project, thus maximizing security.

They're free to use for public open source projects and limited to 2000 CI minutes per month per group for private projects. Read about all GitLab.com plans.
"""

因此给gitlab进行了一下信仰充值。后来发觉似乎充值之后,我们配置的group runner也没有开始运行。

最后我们定位到runnertag问题,最终暂时移除了tag,解决了问题。

希望 gitlab 能够发展的越来越好。希望Mozilla支撑下去。