创建 Package

Package 的创建强依赖于 git,因此要求必须拥有一个 git 仓库才会进行对应的打包

注:以下均需要使用 v1.4.0 版本的 ambot-packager,低版本可能存在一些问题

创建可以被打包的 Repo

如果是一个新的项目,需要存在 **/.ambot/BUILD 文件才会被 ambot-packager 认为是一个可以被打包的项目

如果存在 BUILD-xxx 则代表使用了进阶的 Build Policy 功能

BUILD 脚本的编写请阅读 Build Script 相关内容

一个 Repo 中可以包含若干个 Package,ambot-packager 程序会自动递归寻找,需要注意的是,多个 package 的 id 不能相同

基于 Package 打包

基于一个 repo 进行打包使用的是 ambot-packager new 命令

$ ambot-packager new -h
创建一个全新的 ambot 软件包

Usage:
  ambot-packager new <repo> [flags]

Flags:
      --allow-invalid-tag
  -b, --branch string
      --build-policy strings
  -h, --help                   help for new
  -t, --to string
      --unsafe-allow-dirty

一个典型的使用方法是 ambot-packager new REPO -t /path/to/somewhere

该命令执行完毕后会在 /path/to/somewhere 生成 [pkg-id].ambot 的文件,pkg-id 部分为对应的 package id,为了防止命名冲突该文件名不支持自定义

Repo 地址

Repo 地址支持一个本地的绝对路径或 SSH URL,前者用于本地测试用,后者通常给 CI 使用

在使用本地的绝对路径时应当注意目标必须是一个 git 目录并且 checkout 到了目标分支(此时 -b 参数是没有意义的)

在使用 SSH URL 时应当注意在 Repo 设置中 (Settings → Repository → Deploy Keys → Privately accessible deploy keys)中启用 AutoDeployKey-PRS key(19:0a:33:6a:bb:01:ee:ee:04:77:14:66:a3:d4:69:80),ambot-packager 会自动 clone 相应 repo 并 checkout 到指定分支(分支由 -b 参数指定,默认为 HEAD)

参数

unsafe-allow-dirty

该参数只会在本地路径中出现,如果本地 repo 的 Worktree 中存在任何尚未提交的内容(即 git status -s 输出不为空),则认为当前是 dirty 状态,所打出的 package 为 Dirty Package。

因为 Dirty Package 无法被追溯代码(相关改动并未提交到仓库),因此默认情况下是禁止使用 Dirty 的。如果你确有需要,可以使用明确指定 --unsafe-allow-dirty 来允许 Dirty Package 被打包(但不推荐),另外,Dirty Package 默认情况下也是禁止安装的,具体可参考安装文档的相关章节。

allow-invalid-tag

如果使用的版本号不遵从语义化版本号的相关规范,会导致 package 打包失败。如果是仅自己测试,可以打开 --allow-invalid-tag 选项,这时会自动创建一个类似 0.0.0-xxx 的版本号。 `