Packages AND Registries

概述

参考:

与 GitHub 不同,GitLab 有一个单独的存放 Assets 的地方,而不是放在 Release Assets 中,这个地方就是 Packages registry。

在 WebUI 点击左侧导航栏中 Deploy > Package Registry 标签可以查看项目中所有 Packages

GitLab 将多种实体或抽象概念抽象为 Packages

  • Package registry # 储存各种二进制文件
  • Container registry # 储存容器镜像
  • etc.

一个项目产生的交付物都可以称为 Packages。可以在项目左侧导航栏点击 Deploy > Package Registry 查看项目的 Packages。

Package registry

GitLab 将如下的实体抽象为 Package:

  • Generic(通用) # 二进制文件
  • Helm # Helm 文件
  • etc.

Generic package

参考:

使用 GitLab CI 推送通用的 Package

Generic package 管理

参考:

上传与下载 Package

export MY_TOKEN="XXXXXXXX"
export UPLOAD_FILE="node_exporter"
export UPLOAD_URL="${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/packages/generic/node_exporter/v1.0.0"
# CI_API_V4_URL 通常为 https://gitlab.example.com/api/v4
# CI_PROJECT_ID 可以从项目左侧导航栏点击 **Settings > General** 查看到
curl -k --header "PRIVATE-TOKEN: ${MY_TOKEN}" --upload-file bin/node_exporter "${UPLOAD_URL}"
# 下载时使用 UPLOAD_URL 即可匿名下载 Package 而不必更改项目的可见性。

[!Tip] Package 的可见性 从项目左侧导航栏点击 Setting > General > Visibility, project features, permissions 打开 Package registry > Allow anyone to pull from Package Registry 的开关。

此时可以匿名下载 Package

[!Notes] 相同 Package 的处理 当我们上传相同的 Package 时,GitLab 会保留所有 Package,并不会覆盖原始的包。使用 API 下载时,会下载最后上传的版本。

若想删除相同 Pacakage 的旧版本,可以配置自动删除策略或手动删除,参考下文删除 Package

删除 Package

自动删除根据策略删除相同的 Package,手动删除则任意

手动删除有两种途径,利用 API 或者在 Web UI 操作。

curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" \
  "https://gitlab.example.com/api/v4/projects/:id/packages/:package_id"

要配置自动删除策略,点击左侧导航栏 Settings > Packages and registries 配置 Manage storage used by package assets,这里包含如下规则

  • 清理重复的 asset。执行周期为 12 小时。可以配置保留多少个重复的 asset。主要用在
  • Notes: 现阶段暂无其他规则

最后修改 July 18, 2024: gitlab (a4050913)