跳到主要内容

教程:使用 Git 将包发布到私有 kmpkg 注册表

你可以通过 Git 创建专属的 kmpkg 私有包注册表,用于管理和使用私有库,或对现有包进行非公开的定制修改。你可完全掌控包的版本和内容,私有注册表的使用几乎没有任何限制。

本教程将涵盖以下内容:

前提条件:

  • 已安装 kmpkg
  • 已安装 Git
  • 终端/命令行工具

1 - 使用 Git 创建 kmpkg 注册表

kmpkg 基于 Git 的注册表本质是符合 kmpkg 目录规范的 Git 仓库,kmpkg 能识别该结构并加载其中的包。

初始化 Git 注册表仓库:

mkdir kmpkg-registry
cd kmpkg-registry
git init

2 - 创建注册表目录结构

一个有效的 kmpkg 基于 Git 的注册表需包含以下核心内容:

  • 名为 ports 的文件夹:存放注册表中的所有包端口(port);
  • 名为 versions 的文件夹:存放版本数据库;
  • versions 文件夹下的 baseline.json 文件:版本基线配置文件。

仓库中可包含其他任意文件(如脚本、LICENSE 许可证文件、README.md 说明文档等)。

步骤 1:创建 portsversions 文件夹

mkdir ports
mkdir versions

步骤 2:创建 versions/baseline.json 基线文件

versions 文件夹中新建 baseline.json 文件,写入以下内容(最小化有效配置):

{
"default": {}
}

baseline.json 的最简有效配置需包含上述内容。如需了解该文件和版本数据库的更多细节,请参考 版本控制文档

步骤 3:提交目录结构到 Git 仓库

git add versions/baseline.json
git commit -m "Initial commit"

(可选)若已配置远程 Git 仓库,此时可将本地提交推送到远程:

git remote add origin https://example.com/kmpkg-registry.git
git push --set-upstream origin HEAD

3 - 向注册表添加端口

将所有自定义包的“端口目录”复制到注册表的 ports 文件夹中。每个端口必须有独立的目录,且目录中至少包含 kmpkg.json(包清单)和 portfile.cmake(构建脚本)两个核心文件。如需了解如何创建端口,可参考 打包 GitHub 仓库教程

添加端口后提交到 Git 仓库:

git add ports/.
git commit -m "Add registry ports"

4 - 更新版本数据库

注册表中的每个端口都需对应一个版本文件,版本文件可通过 kmpkg x-add-version 命令自动生成,该命令还会更新 version/baseline.json 中每个端口的基线条目。

批量更新所有端口的版本数据库

执行以下命令,一次性扫描并更新 ports 目录下所有端口的版本信息:

kmpkg --x-builtin-ports-root=./ports --x-builtin-registry-versions-dir=./versions x-add-version --all --verbose

命令参数说明:

  • --x-builtin-ports-root=./ports:重定向“内置端口根目录”到本地 ./ports(默认指向 kmpkg 官方内置端口目录);
  • --x-builtin-registry-versions-dir=./versions:重定向“内置注册表版本目录”到本地 ./versions
  • --all:扫描 ports 目录下所有端口并批量更新版本信息;
  • --verbose:打印命令执行的详细日志(移除该参数可关闭冗余输出)。

提交版本数据库变更

确认命令输出无异常后,将版本文件提交到 Git 仓库:

git add .
git commit -m "Update versions database"

(若配置了远程仓库)推送变更到远程:

git push

后续步骤

至此,你已完成基于 Git 的 kmpkg 私有注册表搭建!

你可尝试以下进阶操作: