极狐GitLab Runner 的系统服务

极狐GitLab Runner 使用 Go service Library检测底层 OS,最终基于 init 系统安装服务文件。

note service 作为服务(daemon)安装、卸载、开始、停止和运行程序。 支持 Windows XP+、 Linux/(systemd | Upstart | SysV) 和 macOS/Launchd。

当极狐GitLab Runner 被安装,会自动创建服务文件。

  • systemd: /etc/systemd/system/gitlab-runner.service
  • upstart: /etc/init/gitlab-runner

设置自定义环境变量

您可能想使用自定义环境变量运行极狐GitLab Runner。 例如,假设您想要在 Runner 的环境中定义 GOOGLE_APPLICATION_CREDENTIALS。 请注意这不同于 environment 配置设置, 它定义了自动添加到 Runner 执行的所有作业的变量。

自定义 systemd

对于使用 systemd 的 Runner,使用 Environment=key=value 为每个导出的变量创建 /etc/systemd/system/gitlab-runner.service.d/env.conf。 例如:

[Service]
Environment=GOOGLE_APPLICATION_CREDENTIALS=/etc/gitlab-runner/gce-credentials.json

然后重新加载配置:

systemctl daemon-reload
systemctl restart gitlab-runner.service

自定义 upstart

对于使用 upstart 的 Runner,创建 /etc/init/gitlab-runner.override 并导出需要的变量。 例如:

export GOOGLE_APPLICATION_CREDENTIALS="/etc/gitlab-runner/gce-credentials.json"

重启 Runner 以生效配置。

覆盖默认停止行为

在一些情况下,您可能想要覆盖服务的默认行为。

例如,当您升级极狐GitLab Runner 时,您应该优雅关闭它,直到所有作业都结束。然而,systemd、upstart 或其他服务可能会立即重启进程。

所以当您升级极狐GitLab Runner 时,安装脚本会关闭并重启可能在处理新作业的 Runner 进程。

覆盖 systemd

对于使用 systemd 的 Runner,使用以下内容创建 /etc/systemd/system/gitlab-runner.service.d/kill.conf

[Service]
TimeoutStopSec=7200
KillSignal=SIGQUIT

将这两个设置添加到 systemd 单元配置中后,您可以停止 Runner,并且 systemd 使用 SIGQUIT 作为关闭信号关闭进程。 此外,为停止命令设置了 2h 的超时时间。如果作业在超时时间前没有优雅关闭,systemd 会使用 SIGKILL 关闭进程。

覆盖 upstart

对于使用 upstart 的 Runner,使用以下内容创建 /etc/init/gitlab-runner.override

kill signal SIGQUIT
kill timeout 7200

将这两个设置添加到 upstart 单元配置后,您可以停止 Runner,并且 upstart 的情况会与上文提到的 systemd 一样。