- 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 はプロジェクトの
codename
Debian と一致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>