是否可以为管道的所有 jobs/stages 保留一个 GitLab runner?

Is it possible to reserve a GitLab runner for all jobs/stages of a pipeline?

我正在使用 GitLab 管道在各种物理机器上进行 运行 端到端测试(这些机器以 1 对 1 的关系连接到测试硬件)。在每台机器上,安装了 GitLab 运行ner。管道由三个主要部分组成:

目前,我正在通过使用 before_script、脚本和 after_script 关键字在一项工作中完成所有这些工作。但是我想为此使用多个作业(甚至阶段)。

我面临的问题是,我无法确定所有 jobs/stages 都在同一个 运行 上执行。所以可能会发生,准备步骤在 runner1 上执行,而执行步骤在 runner2 上执行(即使是并行的),这显然不是我想要的。准备不仅仅是制作神器,不能简单的交给下一份工作

tags好像也解决不了这个问题,因为一个tag只能指定一个job,不能指定多个job,或者complete stage。

我知道这不是 运行ners 正常使用的方式,但我仍然想知道是否有办法实现这一点。

或者有人可以指出另一种解决方法吗?

我正在使用 GitLab 社区版 14.3.2.

我想你有两种选择来拆分它 -

  1. 正如 sytech 所提到的,您可以用 machine-1machine-2 等标记每台机器,这将使您的工作对每个 运行ner 都有粘性。由于您可以在 运行ner 标签中使用变量,因此您可以在开始时进行一项工作,检查哪个 运行ner 不是 运行ning 测试,并设置 RUNNER_TAG 或其他内容类似于那个 运行ner,所以你不必将你的 运行ner 硬编码到一个盒子
  2. 您无法直接让测试框 运行 作业(可能您今天使用 shell 运行ner 来执行此操作),并使用 SSH 或 winRM 来直接访问该框,并从那里进行修改。那么你的 运行ner 的状态就根本不重要了。这可能是“更清洁”的方式,因此您的测试盒不必与 运行ner
  3. 共享资源或状态