使用官方极狐GitLab 仓库安装极狐GitLab Runner

我们为当前支持的以下 Linux 发行版提供安装包。

发行版 支持的信息
Debian https://wiki.debian.org/LTS
Ubuntu https://wiki.ubuntu.com/Releases
LinuxMint https://linuxmint.com/download_all.php
Raspbian  
RHEL https://access.redhat.com/product-life-cycles?product=Red%20Hat%20Enterprise%20Linux
Oracle Linux https://endoflife.date/oraclelinux
Fedora https://docs.fedoraproject.org/en-US/releases/eol/
Amazon Linux https://aws.amazon.com/linux/

可能也附带支持上述的派生发行版。您也可以在其他 Linux 发行版上将极狐GitLab Runner 安装为二进制文件

note我们的安装包库中暂时没有列表中未列出的发行版所对应的安装包。您可以从 S3 桶中下载 RPM 包进行手动安装

先决条件

如果您想使用Docker 执行器,请在使用极狐GitLab Runner 前安装 Docker。 详情请参见如何为您的发行版安装 Docker

安装极狐GitLab Runner

note如果您正在使用或从极狐GitLab Runner 10 版本升级,请阅读如何升级到新版本

安装极狐GitLab Runner:

  1. 添加官方极狐GitLab 仓库:

    对于 Debian/Ubuntu/Mint:

    curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh" | sudo bash
    

    对于 RHEL/CentOS/Fedora:

    curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.rpm.sh" | sudo bash
    
    noteDebian 用户应该使用 APT Pinning。为了方便用户安装使用极狐GitLab Runner,我们在中国国内设置了极狐GitLab 镜像站点
  2. 安装最新版本的极狐GitLab Runner,或跳到下一步,安装特定版本。

    note从 14.0 开始,默认禁用 skel 目录使用,以避免 No such file or directory 作业错误。

    对于 Debian/Ubuntu/Mint:

    sudo apt-get install gitlab-runner
    

    对于 RHEL/CentOS/Fedora:

    sudo yum install gitlab-runner
    
note在 14.7 及更高版本中,符合 FIPS 140-2 的极狐GitLab Runner 版本可用于 RHEL 发行版。 您可以将 gitlab-runner-fips 用作包名称以安装这个版本,而不是使用 gitlab-runner
  1. 安装特定版本的极狐GitLab Runner:

    对于基于 DEB 的系统:

    apt-cache madison gitlab-runner
    sudo apt-get install gitlab-runner=10.0.0
    

    对于基于 RPM 的系统:

    yum list gitlab-runner --showduplicates | sort -r
    sudo yum install gitlab-runner-10.0.0-1
    
  2. 注册 Runner

完成上述步骤后,应启动 Runner 准备使用。

确保您阅读了 FAQ ,它介绍了您在使用极狐GitLab Runner 时最可能遇到的问题。

APT Pinning

一个名为 gitlab-ci-multi-runner 的本地包在 Debian Stretch 中可用。默认情况下,安装 gitlab-runner 时,官方仓库的安装包将具有更高的优先级。

如果您想使用我们的安装包,您应该手动设置安装包源。最好的方法是添加固定配置文件。

通过这种方式,极狐GitLab Runner 包的下一次升级,无论是手动还是自动,都会使用同一来源完成:

cat <<EOF | sudo tee /etc/apt/preferences.d/pin-gitlab-runner.pref
Explanation: Prefer GitLab provided packages over the Debian native ones
Package: gitlab-runner
Pin: origin packages.gitlab.com
Pin-Priority: 1001
EOF

极狐GitLab 镜像站点

中国国内用户可以使用极狐GitLab 镜像站点安装极狐GitLab Runner。目前镜像站点已经支持主流的 Linux 发行版,包括:

  • Ubuntu 22.04(jammy)
  • Ubuntu 20.04(focal)
  • Ubuntu 18.04(bionic)
  • Ubuntu 16.04(xenial)
  • Debian 11(bullseye)
  • Debian 10(buster)
  • Debian 9(stretch)
  • RHEL/CentOS Stream 8
  • RHEL/CentOS 7

如果要使用极狐GitLab 镜像站点,对于 Debian/Ubuntu:

curl -L "https://packages.gitlab.cn/repository/raw/scripts/runner.deb.sh" | sudo bash

对于 RHEL/CentOS:

curl -L "https://packages.gitlab.cn/repository/raw/scripts/runner.rpm.sh" | sudo bash

升级极狐GitLab Runner

执行以下命令,安装最新版本:

对于 Debian/Ubuntu/Mint:

sudo apt-get update
sudo apt-get install gitlab-runner

对于 RHEL/CentOS/Fedora:

sudo yum update
sudo yum install gitlab-runner

包安装的GPG 签名

为了增加用户对已安装软件的信心,极狐GitLab Runner 项目为安装方法提供两种 GPG 签名:仓库元数据签名和包签名。

仓库元数据签名

包管理器使用仓库元数据签名验证从远端仓库下载的包信息是否可信。

当您使用类似 apt-get update 的命令时会验证签名,进而在下载和安装任何软件包之前更新相关可用软件包的信息。验证失败也会导致包管理器拒绝元数据。这意味着在找到并解决导致签名不匹配的问题之前,您无法从仓库下载和安装任何软件包。

在按照上述指南安装完成以后,会自动安装用于包元数据签名验证的 GPG 公钥。 对于未来的关键升级,现有用户需要手动下载并安装新密钥。

包签名

使用包签名,每个包在构建时都会被签名。所以在您信任构建环境和所使用的 GPG 密钥的保密性之前,包上的有效签名都会证明其来源经过验证并且其完整性没有受到损坏。

默认情况下,仅在某些基于 DEB/RPM 的发行版中启用包签名验证,所以想要进行这种验证的用户可能需要调整配置。

基于 RPM 的发行版

RPM 格式包含 GPG 签名功能的完整实现,因此与基于该格式的包管理系统进行了完全集成。

您可以在 Omnibus GitLab 文档中找到为基于 RPM 的发行版配置包签名验证的技术说明。 极狐GitLab Runner 的区别是:

  • 应安装的公钥包的名称是 gpg-pubkey-35dfa027-60ba0235

  • 基于 RPM 的发行版的仓库文件将命名为 /etc/yum.repos.d/runner_gitlab-runner.repo (稳定版本)或 /etc/yum.repos.d/runner_unstable.repo(不稳定版本)。

基于 DEB 的发行版

DEB 格式没有正式包含用于签名包的默认和包含方法。 极狐GitLab Runner 项目使用 dpkg-sig 工具进行签名并验证包上的签名。这个方法仅支持手动验证包。

  1. 安装 dpkg-sig

     apt-get update && apt-get install dpkg-sig
    
  2. 下载并导入包签名公钥

     curl -JLO "https://packages.gitlab.com/runner/gitlab-runner/gpgkey/runner-gitlab-runner-4C80FB51394521E9.pub.gpg"
     gpg --import runner-gitlab-runner-4C80FB51394521E9.pub.gpg
    
  3. 使用 dpkg-sig 验证下载的包。

     dpkg-sig --verify gitlab-runner_amd64.deb
     Processing gitlab-runner_amd64.deb...
     GOODSIG _gpgbuilder 09E57083F34CCA94D541BC58A674BF8135DFA027 1623755049
    

    验证具有无效签名或使用无效密钥(例如撤销的密钥)签名的包将输出类似以下的内容:

     dpkg-sig --verify gitlab-runner_amd64.deb
     Processing gitlab-runner_amd64.deb...
     BADSIG _gpgbuilder
    

    如果用户的密钥环中没有密钥,则输出将类似于:

     dpkg-sig --verify gitlab-runner_amd64.v13.1.0.deb
     Processing gitlab-runner_amd64.v13.1.0.deb...
     UNKNOWNSIG _gpgbuilder 880721D4
    

当前 GPG 公钥

关键参数
Name GitLab, Inc.
EMail support@gitlab.com
Fingerprint 09E5 7083 F34C CA94 D541 BC58 A674 BF81 35DF A027
Expiry 2023-06-04

以前的 GPG 公钥

过去使用的密钥可以在下表中找到。

对于已撤销的密钥,我们强烈建议您将其从包签名验证配置中移除。

不应再信任由这些密钥生成的签名。

编号 关键指纹 状态 到期日期 下载(仅对撤销密钥)
1 3018 3AC2 C4E2 3A40 9EFB E705 9CE4 5ABC 8807 21D4 revoked 2021-06-08 撤销密钥

手动下载包

如有必要,您可以手动下载并安装包

禁用 skel

  • 引入于极狐GitLab Runner 12.10。

  • 默认设置为 true 于极狐GitLab Runner 14.0。

在极狐GitLab Runner 12.10 中,我们添加了对特殊变量 GITLAB_RUNNER_DISABLE_SKEL 的支持,当其设置为 true 时,在创建新创建用户的 $HOME 目录时会避免使用 skel

从极狐GitLab Runner 14.0 开始,GITLAB_RUNNER_DISABLE_SKEL 默认设置为 true

如果出于任何原因需要使用 skel 目录来填充新建的 $HOME 目录,GITLAB_RUNNER_DISABLE_SKEL变量在安装软件包之前应被明确设置为 false。例如:

对于 Debian/Ubuntu/Mint:

export GITLAB_RUNNER_DISABLE_SKEL=false; sudo -E apt-get install gitlab-runner

对于 RHEL/CentOS/Fedora:

export GITLAB_RUNNER_DISABLE_SKEL=false; sudo -E yum install gitlab-runner
note使用 skel 添加到 $HOME 目录的 Shell 配置可能会干扰作业执行并引入上述意外问题。

升级到极狐 GitLab Runner 10

升级 10.0 版本之前的极狐 GitLab Runner:

  1. 移除旧的仓库:

    对于 Debian/Ubuntu/Mint:

    sudo rm /etc/apt/sources.list.d/runner_gitlab-ci-multi-runner.list
    

    对于 RHEL/CentOS/Fedora:

    sudo rm /etc/yum.repos.d/runner_gitlab-ci-multi-runner.repo
    
  2. 遵循安装极狐GitLab Runner 时相同的步骤,无需注册和使用新的仓库。

  3. 对于 RHEL/CentOS/Fedora,请运行:

    sudo /usr/share/gitlab-runner/post-install