最佳实践

以下是您使用和管理极狐GitLab Runner 应该遵循的准则。

构建目录

极狐GitLab Runner 将目录克隆到 Builds Directory 基路径下面的路径中。基目录的默认位置取决于执行器。对于:

  • Kubernetes、Docker 和 Docker Machine 执行器, 默认位置是容器内部的 /builds
  • Shell 执行器,默认位置是 $PWD/builds
  • SSH、VirtualBox 和 Parallels 执行器,默认位置是处理目标机SSH连接的用户的主目录中的 ~/builds
  • Custom 执行器,不提供默认位置,必须明确配置默认地址,否则作业会失败。

用户可以使用 builds_dir 配置所使用的 Builds Directory

note 如果您想克隆到自定义目录,您也可以指定 GIT_CLONE_PATH,而且以下准则将不再适用。

极狐GitLab Runner 为所有运行作业使用 Builds Directory,但是使用特定模式 {builds_dir}/$RUNNER_TOKEN_KEY/$CONCURRENT_ID/$NAMESPACE/$PROJECT_NAME 进行嵌套。 例如: /builds/2mn-ncv-/0/user/playground

极狐GitLab Runner 不会阻止您在 Builds Directory 中存储文件。例如您可以在 /builds/tools 里面存储 CI 执行工具。但是我们 非常 不鼓励您这样做,您不应该在 Builds Directory 里面存储任何东西。极狐GitLab Runner 应该对其拥有完全控制权,并且在这种情况下不提供稳定性保证。 如果您需要安装 CI 所需的其他文件,我们建议您安在别处。

优雅关闭

当在主机上安装 Runner,并且运行本地执行器时,它会为某些操作开启额外进程,例如上传或下载产物或处理缓存。这些进程以 gitlab-runner 命令的形式进行执行,您可以使用 pkill -QUIT gitlab-runnerkillall QUIT gitlab-runner 结束进程。结束进程时,相关操作会失败。

以下是防止这种现象发生的两种方法:

  • 将 Runner 注册为本地服务 (例如 systemd),以 SIGQUIT 作为结束信号, 并且使用 gitlab-runner stopsystemctl stop gitlab-runner.service。 以下是 GitLab.com 上共享 Runner 配置的一个例子:

    ; /etc/systemd/system/gitlab-runner.service.d/kill.conf
    [Service]
    KillSignal=SIGQUIT
    TimeoutStopSec=__REDACTED__
    
  • 使用 kill -SIGQUIT <pid> 手动结束进程。您需要通过查看日志找到主 gitlab-runner 进程的 pid,它会在启动时显示。

    $ gitlab-runner run
    Runtime platform                                    arch=amd64 os=linux pid=87858 revision=8d21977e version=12.10.0~beta.82.g8d21977e