- Debian API を有効化
- Debian グループ API を有効にします。
- Debian パッケージのビルド
- Debian エンドポイントへの認証
- ディストリビューションの作成
- パッケージの公開
- ディストリビューションとコンポーネントを明示したパッケージのアップロード
- パッケージのインストール
- ソースパッケージをダウンロード
パッケージレジストリ内の Debian パッケージ
- GitLab 13.5で導入されたDebian API。
- GitLab 14.2 で導入された Debian グループ API。
- 機能フラグの後ろにデプロイされ、デフォルトでは無効になっています。
Debian パッケージをプロジェクトのパッケージレジストリに公開します。そして、依存関係として使う必要があるときはいつでもパッケージをインストールしてください。
プロジェクトパッケージとグループパッケージがサポートされています。
Debian パッケージマネージャクライアントが使用する特定の API エンドポイントの文書については、Debian API 文書を参照してください。
前提条件:
- GitLabインスタンスにdpkg-debバイナリがインストールされている必要があります。このバイナリは通常、Debianとその派生物にデフォルトでインストールされているdpkgパッケージ。
- 圧縮アルゴリズムZStandardのサポートには、Debian 12 Bookwormのバージョンdpkg >= 1.21.18、またはUbuntu 18.04 Bionic Beaverのバージョンdpkg >= 1.19.0.5ubuntu2。
Debian API を有効化
Debian リポジトリのサポートはまだ作業中です。機能フラグがあり、デフォルトでは無効になっています。GitLab RailsコンソールにアクセスできるGitLab管理者は、この機能を有効にすることができます。
有効にするには:
Feature.enable(:debian_packages)
無効化するには:
Feature.disable(:debian_packages)
Debian グループ API を有効にします。
Debian グループリポジトリには、デフォルトでは無効になっている 2 つ目の機能フラグがあります。
有効にするには:
Feature.enable(:debian_group_packages)
無効化するには:
Feature.disable(:debian_group_packages)
Debian パッケージのビルド
Debian パッケージの作成についてはDebian Wiki に文書があります。
Debian エンドポイントへの認証
認証方法はディストリビューションの APIやパッケージリポジトリによって異なります。
Debian ディストリビューション API への認証
ディストリビューションを作成、読み込み、更新、削除するには、 以下のいずれかが必要です:
- 
個人アクセストークン。--header "PRIVATE-TOKEN: <personal_access_token>"
- を使用してデプロイトークンを作成します。--header "Deploy-Token: <deploy_token>"
- 
CI/CDジョブトークン --header "Job-Token: <job_token>"
Debian パッケージリポジトリへの認証
パッケージを公開したり、非公開パッケージをインストールしたりするには、 以下のいずれかの基本認証を使う必要があります:
- 
個人アクセストークン。<username>:<personal_access_token>
- を使用してデプロイトークンを作成します。<deploy_token_name>:<deploy_token>
- 
CI/CDジョブトークン gitlab-ci-token:<job_token>
ディストリビューションの作成
プロジェクトレベルでは、Debian パッケージはDebian ディストリビューションとともに公開されます。グループレベルでは、Debian パッケージはグループ内のプロジェクトから集められます:
- プロジェクトの可視性がpublicに設定されています。
- グループの Debian はプロジェクトのcodenameDebian と一致codenameします。
個人アクセストークンを使ってプロジェクトレベルのディストリビューションを作成するには:
curl --request POST --header "PRIVATE-TOKEN: <personal_access_token>" \
  "https://gitlab.example.com/api/v4/projects/<project_id>/debian_distributions?codename=<codename>"
codename=sid を使用したレスポンスの例です:
{
  "id": 1,
  "codename": "sid",
  "suite": null,
  "origin": null,
  "label": null,
  "version": null,
  "description": null,
  "valid_time_duration_seconds": null,
  "components": [
    "main"
  ],
  "architectures": [
    "all",
    "amd64"
  ]
}
Debian ディストリビューション API の詳細:
パッケージの公開
ビルドされると、いくつかのファイルが作成されます:
- 
.debファイル: バイナリパッケージ
- 
.udebファイル: Debian インストーラで使用される軽量化された .deb ファイル (必要な場合)
- 
.ddebファイルです:Ubuntu デバッグ .deb ファイル (必要な場合)
- 
.tar.{gz,bz2,xz,...}ファイルソースファイル
- 
.dscファイルです:ソース・メタデータ、ソース・ファイルのリスト(ハッシュ付き)
- 
.buildinfoファイル:再現可能なビルドに使用(オプション)
- 
.changesファイルをアップロードします:メタデータのアップロード、アップロードされたファイルのリスト(上記すべて)
これらのファイルをアップロードするには、dput-ng >= 1.32 (Debian bullseye) を使用できます。<username> と<password> は上記のように定義されています:
cat <<EOF > dput.cf
[gitlab]
method = https
fqdn = <username>:<password>@gitlab.example.com
incoming = /api/v4/projects/<project_id>/packages/debian
EOF
dput --config=dput.cf --unchecked --no-upload-log gitlab <your_package>.changes
ディストリビューションとコンポーネントを明示したパッケージのアップロード
GitLab 15.9で導入された、明示的ディストリビューションとコンポーネントによるアップロード。
.changes ファイルにアクセスできない場合は、ディストリビューションcodename とターゲットcomponent に認証情報をパラメータとして渡すことで、.deb を直接アップロードできます。例えば、個人アクセストークンを使ってディストリビューションsid のコンポーネントmain にアップロードする場合です:
curl --request PUT --user "<username>:<personal_access_token>" \
  --get --data "distribution=sid" --data "component=main" \
  "https://gitlab.example.com/api/v4/projects/<project_id>/packages/debian/" \
  --upload-file  /path/to/your.deb
パッケージのインストール
パッケージをインストールするには
- 
リポジトリを設定します: 非公開プロジェクトを使用している場合は、apt 設定に認証情報を追加します: echo 'machine gitlab.example.com login <username> password <password>' \ | sudo tee /etc/apt/auth.conf.d/gitlab_project.conf認証情報を使ってディストリビューション・キーをダウンロードしてください: sudo mkdir -p /usr/local/share/keyrings curl --header "PRIVATE-TOKEN: <your_access_token>" \ "https://gitlab.example.com/api/v4/projects/<project_id>/debian_distributions/<codename>/key.asc" \ | \ gpg --dearmor \ | \ sudo tee /usr/local/share/keyrings/<codename>-archive-keyring.gpg \ > /dev/nullプロジェクトをソースとして追加します: echo 'deb [ signed-by=/usr/local/share/keyrings/<codename>-archive-keyring.gpg ] https://gitlab.example.com/api/v4/projects/<project_id>/packages/debian <codename> <component1> <component2>' \ | sudo tee /etc/apt/sources.list.d/gitlab_project.list sudo apt-get update
- 
パッケージをインストールします: sudo apt-get -y install -t <codename> <package-name>
ソースパッケージをダウンロード
ソースパッケージをダウンロードするには
- 
リポジトリを設定します: 非公開プロジェクトを使用している場合は、apt 設定に認証情報を追加します: echo 'machine gitlab.example.com login <username> password <password>' \ | sudo tee /etc/apt/auth.conf.d/gitlab_project.conf認証情報を使ってディストリビューション・キーをダウンロードしてください: sudo mkdir -p /usr/local/share/keyrings curl --header "PRIVATE-TOKEN: <your_access_token>" \ "https://gitlab.example.com/api/v4/projects/<project_id>/debian_distributions/<codename>/key.asc" \ | \ gpg --dearmor \ | \ sudo tee /usr/local/share/keyrings/<codename>-archive-keyring.gpg \ > /dev/nullプロジェクトをソースとして追加します: echo 'deb-src [ signed-by=/usr/local/share/keyrings/<codename>-archive-keyring.gpg ] https://gitlab.example.com/api/v4/projects/<project_id>/packages/debian <codename> <component1> <component2>' \ | sudo tee /etc/apt/sources.list.d/gitlab_project-sources.list sudo apt-get update
- 
ソースパッケージをダウンロードしてください: sudo apt-get source -t <codename> <package-name>
