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 而不必更改项目的可见性。
从项目左侧导航栏点击 Setting > General > Visibility, project features, permissions 打开 Package registry > Allow anyone to pull from Package Registry 的开关。
此时可以匿名下载 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: 现阶段暂无其他规则
意见反馈
这个页面对您有帮助吗?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.