GitLab公式リポジトリを使ってGitLab Runnerをインストールします。

私たちはpackagecloudで以下のサポートされているバージョンのLinuxディストリビューション用のパッケージを提供しています。新しいOSディストリビューションリリースのための新しいrunnerdeb またはrpm パッケージは、packagecloudでサポートされている場合、自動的に追加されます。セットアップによっては、deb またはrpm ベースのディストリビューションもサポートされる場合があります。これは、サポートされているGitLab Runnerディストリビューションの派生版で、互換性のあるパッケージリポジトリを持つディストリビューションを指します。例えば、DeepinはDebianの派生版なので、Runner DebianパッケージはDeepin上にインストールされ、実行されるはずです。GitLab Runnerをバイナリとして他のLinuxディストリビューションにインストールすることもできます。

ディストリビューションサポート情報
Debianhttps://wiki.debian.org/LTS
Ubuntuhttps://wiki.ubuntu.com/Releases
リナックスミントhttps://linuxmint.com/download_all.php
ラズビアン 
RHELhttps://access.redhat.com/product-life-cycles?product=Red%20Hat%20Enterprise%20Linux
オラクル・リナックスhttps://endoflife.date/oraclelinux
Fedorahttps://docs.fedoraproject.org/en-US/releases/eol/
Amazon Linuxhttps://aws.amazon.com/linux/
note
リストにないディストリビューション用のパッケージは現在パッケージリポジトリから入手できません。S3バケットからRPMパッケージをダウンロードして手動でインストールしてください。

前提条件

Docker Executorを使用したい場合は、GitLab Runnerを使用する前にDockerをインストールしてください。お使いのディストリビューションにDockerをインストールする方法をお読みください。

GitLab Runnerのインストール

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
    
    note
    Debian ユーザーはAPT pinning を使ってください。
  2. GitLab Runnerの最新バージョンをインストールするか、次のステップに進んで特定のバージョンをインストールしてください:

    note
    GitLab Runner 14.0からNo such file or directory ジョブの失敗を防ぐためにskel ディレクトリの使用がデフォルトで無効になっています。

    Debian/Ubuntu/Mint 用:

    sudo apt-get install gitlab-runner
    

    RHEL/CentOS/Fedora用:

    sudo yum install gitlab-runner
    
    note
    GitLab 14.7以降では、GitLab RunnerのFIPS 140-2準拠バージョンがRHELディストリビューションで利用可能です。このバージョンはgitlab-runner の代わりにgitlab-runner-fips をパッケージ名として使うことでインストールできます。
  3. GitLab Runnerの特定のバージョンをインストールするには:

    DEB ベースのシステムの場合:

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

    RPM ベースのシステムの場合:

    yum list gitlab-runner --showduplicates | sort -r
    sudo yum install gitlab-runner-15.11.0-1
    
  4. ランナーを登録します。

上記のステップを完了すると、Runnerが開始され、プロジェクトで使用できるようになります!

GitLab Runnerのよくある問題についてはFAQセクションを読んでください。

APT のピン留め

Debian Stretch ではgitlab-ci-multi-runner というネイティブパッケージが利用可能です。デフォルトでは、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 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プロジェクトはパッケージのインストール方法に2種類のGPG署名を提供しています: リポジトリメタデータ署名とパッケージ署名です。

リポジトリメタデータ署名

リモートリポジトリからダウンロードしたパッケージ情報が信頼できることを確認するために、パッケージマネージャはリポジトリメタデータ署名を使用します。

署名はapt-get update のようなコマンドを使用する際に検証され、パッケージがダウンロード・インストールされる前に利用可能なパッケージの情報が更新されます。検証に失敗すると、パッケージマネージャはメタデータを拒否します。これは、署名の不一致の原因となった問題が見つかり解決されるま で、リポジトリからパッケージをダウンロード・インストールできないことを意味し ます。

パッケージメタデータの署名検証に使用される GPG 公開鍵は、上記の手順で行われる最初のインストール時に自動的にインストールされます。今後鍵を更新する場合は、既存のユーザーが手動で新しい鍵をダウンロードしてインストールする必要があります。

私たちはhttps://packages.gitlab.com でホストされているすべてのプロジェクトに一つの鍵を使用しています。現在使われているキーの詳細と、必要なときにキーを更新する方法についての技術的な説明は、Linux パッケージのドキュメントにあります。このドキュメンテーションページには、過去に使用されたすべてのキーも掲載されています。

パッケージ署名

リポジトリのメタデータへの署名は、ダウンロードされたバージョン情報がhttps://packages.gitlab.com に由来することを証明します。パッケージ自体のインテグリティを証明するものではありません。作成者であろうとなかろうと、https://packages.gitlab.com にアップロードされたものは、リポジトリからユーザーへのメタデータ転送が影響を受けない限り、適切に検証されます。

ここでパッケージの署名の出番です。

パッケージ署名では、各パッケージはビルドされるときに署名されます。ですから、ビルド環境と使用される GPG 鍵の機密性を信頼できるまで、パッケージの有効な署名は、その出所が認証され、その完全性が侵害されていないことを証明します。

パッケージの署名検証は、一部のDEB/RPMベースのディストリビューションでのみデフォルトで有効になっているので、この種の検証を行いたいユーザーは設定を調整する必要があるかもしれません。

パッケージの署名検証に使用されるGPGキーは、https://packages.gitlab.com でホストされているリポジトリごとに異なる場合があります。GitLab Runnerプロジェクトでは、このタイプの署名に独自の鍵ペアを使用しています。

RPMベースのディストリビューション

RPMフォーマットにはGPG署名機能の完全な実装がコンテナとして含まれているため、このフォーマットに基づいたパッケージ管理システムと完全にインテグレーションされています。

RPMベースのディストリビューションのパッケージ署名検証の設定方法に関する技術的な説明は、Linuxパッケージのドキュメントにあります。GitLab Runnerの違いは以下の通りです:

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公開鍵

パッケージの署名に使われている現在の公開 GPG 鍵は、https://packages.gitlab.com/runner/gitlab-runner/gpgkey/runner-gitlab-runner-49F16C5CC3A0F81F.pub.gpg からダウンロードできます。

鍵属性
名前GitLab, Inc.
Eメールsupport@gitlab.com
指紋931D A69C FA3A FEBB C97D AA8C 6C57 C29C 6BA7 5A4E
有効期限2025-04-25
note
同じ鍵がGitLab Runnerプロジェクトによって、<https://gitlab-runner-downloads.s3.amazonaws.com/> バケットで利用可能なS3リリースのrelease.sha256 ファイルに署名するために使用されます。

以前のGPG公開鍵

過去に使用された鍵は以下の表にあります。

失効した鍵については、パッケージ署名検証設定から削除することを強く推奨します。

これらの鍵による署名はもう信用すべきではありません。

Sl.番号キー指紋ステータス有効期限ダウンロード(失効した鍵のみ)
13018 3AC2 C4E2 3A40 9EFB E705 9CE4 5ABC 8807 21D4revoked2021-06-08失効キー
209E5 7083 F34C CA94 D541 BC58 A674 BF81 35DF A027revoked2023-04-26失効キー

パッケージの手動ダウンロード

必要に応じて、手動でパッケージをダウンロードしてインストールすることができます。

無効化skel

時々、デフォルトのスケルトン (skel) ディレクトリGitLab Runner のイシューを引き起こし、ジョブの実行に失敗することがあります。

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 設定はジョブの実行を妨害し、上記のような予期せぬ問題を引き起こす可能性があります。