是否可以为管道的所有 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.
我想你有两种选择来拆分它 -
- 正如 sytech 所提到的,您可以用
machine-1
、machine-2
等标记每台机器,这将使您的工作对每个 运行ner 都有粘性。由于您可以在 运行ner 标签中使用变量,因此您可以在开始时进行一项工作,检查哪个 运行ner 不是 运行ning 测试,并设置 RUNNER_TAG
或其他内容类似于那个 运行ner,所以你不必将你的 运行ner 硬编码到一个盒子
- 您无法直接让测试框 运行 作业(可能您今天使用
shell
运行ner 来执行此操作),并使用 SSH 或 winRM 来直接访问该框,并从那里进行修改。那么你的 运行ner 的状态就根本不重要了。这可能是“更清洁”的方式,因此您的测试盒不必与 运行ner 共享资源或状态
我正在使用 GitLab 管道在各种物理机器上进行 运行 端到端测试(这些机器以 1 对 1 的关系连接到测试硬件)。在每台机器上,安装了 GitLab 运行ner。管道由三个主要部分组成:
- 准备测试硬件(部署、配置)
- 执行端到端测试(在测试硬件上)
- 清理测试硬件
目前,我正在通过使用 before_script、脚本和 after_script 关键字在一项工作中完成所有这些工作。但是我想为此使用多个作业(甚至阶段)。
我面临的问题是,我无法确定所有 jobs/stages 都在同一个 运行 上执行。所以可能会发生,准备步骤在 runner1
上执行,而执行步骤在 runner2
上执行(即使是并行的),这显然不是我想要的。准备不仅仅是制作神器,不能简单的交给下一份工作
tags好像也解决不了这个问题,因为一个tag只能指定一个job,不能指定多个job,或者complete stage。
我知道这不是 运行ners 正常使用的方式,但我仍然想知道是否有办法实现这一点。
或者有人可以指出另一种解决方法吗?
我正在使用 GitLab 社区版 14.3.2.
我想你有两种选择来拆分它 -
- 正如 sytech 所提到的,您可以用
machine-1
、machine-2
等标记每台机器,这将使您的工作对每个 运行ner 都有粘性。由于您可以在 运行ner 标签中使用变量,因此您可以在开始时进行一项工作,检查哪个 运行ner 不是 运行ning 测试,并设置RUNNER_TAG
或其他内容类似于那个 运行ner,所以你不必将你的 运行ner 硬编码到一个盒子 - 您无法直接让测试框 运行 作业(可能您今天使用
shell
运行ner 来执行此操作),并使用 SSH 或 winRM 来直接访问该框,并从那里进行修改。那么你的 运行ner 的状态就根本不重要了。这可能是“更清洁”的方式,因此您的测试盒不必与 运行ner 共享资源或状态