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

支持的发行版

我们通过 packagecloud 为以下受支持的 Linux 发行版版本提供软件包。当受 packagecloud 支持时,会自动添加新操作系统发行版的新 Runner debrpm 包。 根据您的设置,可能也支持其他基于 debrpm 的发行版。这是指从受支持的极狐GitLab Runner 发行版衍生并且具有兼容包仓库的发行版。例如,Deepin 是 Debian 的衍生产品,因此 Runner Debian 软件包应在 Deepin 上安装并运行。您还可以在其他 Linux 发行版上将极狐GitLab Runner 作为二进制文件进行安装

发行版 支持的信息
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/
note 我们的安装包库中暂时没有列表中未列出的发行版所对应的安装包。您可以从 S3 桶中下载 RPM 包进行手动安装。 <!– ## 先决条件

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

–> ## 安装极狐GitLab Runner

安装极狐GitLab Runner:

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

    ::Tabs

    :::TabTitle Debian/Ubuntu/Mint

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

    :::TabTitle RHEL/CentOS/Fedora/Amazon Linux

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

    ::EndTabs

  2. 安装最新版本的极狐GitLab Runner,或跳到下一步,安装特定版本。

    note Debian 用户应该使用 APT Pinning。为了方便用户安装使用极狐GitLab Runner,我们在中国国内设置了极狐GitLab 镜像站点

    ::Tabs

    :::TabTitle Debian/Ubuntu/Mint

    sudo apt install gitlab-runner
    

    :::TabTitle RHEL/CentOS/Fedora/Amazon Linux

    sudo yum install gitlab-runner
    
    or
    
    sudo dnf install gitlab-runner
    

    ::EndTabs

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

    ::Tabs

    :::TabTitle Debian/Ubuntu/Mint

    apt-cache madison gitlab-runner
    sudo apt install gitlab-runner=17.2.0-1
    

    :::TabTitle RHEL/CentOS/Fedora/Amazon Linux

    yum list gitlab-runner --showduplicates | sort -r
    sudo yum install gitlab-runner-17.2.0-1
    

    ::EndTabs

  4. 注册 Runner.

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

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

升级极狐GitLab Runner

将极狐GitLab Runner 升级到最新版本:

::Tabs

:::TabTitle Debian/Ubuntu/Mint

sudo apt update
sudo apt install gitlab-runner

:::TabTitle RHEL/CentOS/Fedora/Amazon Linux

sudo yum update
sudo yum install gitlab-runner

::EndTabs

极狐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

包安装的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-49F16C5CC3A0F81F.pub.gpg"
     gpg --import runner-gitlab-runner-49F16C5CC3A0F81F.pub.gpg
    
  3. 使用 dpkg-sig 验证下载的包。

     dpkg-sig --verify gitlab-runner_amd64.deb
     Processing gitlab-runner_amd64.deb...
     GOODSIG _gpgbuilder 931DA69CFA3AFEBBC97DAA8C6C57C29C6BA75A4E 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 931D A69C FA3A FEBB C97D AA8C 6C57 C29C 6BA7 5A4E
Expiry 2025-04-25

以前的 GPG 公钥

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

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

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

编号 关键指纹 状态 到期日期 下载(仅对撤销密钥)
1 3018 3AC2 C4E2 3A40 9EFB E705 9CE4 5ABC 8807 21D4 revoked 2021-06-08 撤销密钥
2 09E5 7083 F34C CA94 D541 BC58 A674 BF81 35DF A027 revoked 2023-04-26 撤销密钥

故障排查

以下是当您安装极狐GitLab Runner 可能会遇到的一些问题以及排查思路。

Error: No such file or directory 导致作业失败

有时候,默认的 skeleton (skel) 目录会引起极狐GitLab Runner 出现故障,导致作业运行失败。

为了避免这种情况,当您安装极狐GitLab Runner 时,会创建一个 gitlab-runner 用户,而且在默认情况下,创建的主目录中不包含任何骨架。使用 skel 添加到 $HOME 目录的 Shell 配置可能会干扰作业执行并引入上述意外问题。

如果您在避免使用 skel 成为默认行为之前创建了 runner,您可以尝试删除以下点文件:

sudo rm /home/gitlab-runner/.profile
sudo rm /home/gitlab-runner/.bashrc
sudo rm /home/gitlab-runner/.bash_logout

如果您需要使用 skel 目录来填充新建的 $HOME 目录,GITLAB_RUNNER_DISABLE_SKEL变量在安装 runner 之前应被明确设置为 false。例如:

::Tabs

:::TabTitle Debian/Ubuntu/Mint

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

:::TabTitle RHEL/CentOS/Fedora/Amazon Linux

export GITLAB_RUNNER_DISABLE_SKEL=false; sudo -E yum install gitlab-runner

::EndTabs