带有端点设备的主机上的 Gitlab-runner

问题描述 投票:0回答:1

我想知道一个理论问题,我有几个 gitlab 运行程序作为主机上的 Docker 容器,端点设备通过以太网电缆连接到主机上。

我希望仅当 Gitlab 调用特定的 Gitlab-runner 时才打开端点设备(端点设备是单独控制的),并在作业完成且给定的 gitlab-runner 暂时失业时立即关闭。

我还不知道如何解决这个问题,有什么建议吗?

Gitlab 服务器 - 16.0.3-CE Gitlab-runner - 16.0.1

感谢所有的想法

gitlab gitlab-ci-runner gitlab-api gitlab-ce
1个回答
0
投票

您可以通过几种方法来实现这一点。

  1. 在运行器配置中实施所需的步骤
  2. 使用自定义运行器执行器
  3. 在 GitLab 作业中使用脚本步骤

使用运行器配置

运行器配置有两个关键配置参数:

pre_build_script
post_build_script
,可用于在作业运行之前和之后运行脚本。您可以配置
pre_build_script
以打开设备,并配置
post_build_script
以关闭设备。

这些可以在跑步者中设置

config.toml

[[runners]]
# ...
pre_build_script = /usr/local/bin/turn-on-device
post_build_script = /usr/local/bin/turn-off-device

警告:这假设您的运行程序配置为一次仅允许一项作业(

concurrent
设置设置为
1
)。否则,如果您计划让并发作业同时访问设备,则需要
pre_build
post_build
脚本来确定设备是否已打开或正在被其他作业使用,以确保您的
post_build
当另一个作业正在使用该设备时,脚本不会关闭设备。

使用自定义跑步者

与上面类似,自定义执行器可以定义一个

prepare_exec
程序来运行以准备作业环境,以及一个
cleanup_exec
程序来在作业完成后清理作业环境,您可以将其配置为执行用于转变您的作业环境的脚本。设备打开和关闭。

如果您已经出于其他原因使用自定义执行器,这可能是一种有用的方法。

[[runners]]
  name = "custom"
  executor = "custom"
  # ...
  [runners.custom]
    # ...
    prepare_exec = "/usr/local/bin/turn-on-device"
    # ...
    cleanup_exec = "/usr/local/bin/turn-off-device"
    # ...

在 GitLab 作业中使用脚本步骤

另一种方法是实现与上述方法类似的方法,但使用

before_script:
after_script:
步骤来打开和关闭设备作为工作本身的一部分。

before_script:
  - ./turn-device-on.sh # or whatever

after_script:
  - ./turn-device-off.sh # or whatever

此方法非常适合您无法控制运行器配置的情况。

警告:在某些情况下,

after_script:
可能无法运行,例如运行系统出现故障,或者作业被取消

© www.soinside.com 2019 - 2024. All rights reserved.