极狐GitLab Runner 的系统服务
极狐GitLab Runner 使用 Go service
Library检测底层 OS,最终基于 init 系统安装服务文件。
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 一样。