发布检查清单

English

准备 tag release 时使用这份清单。对于 v0.2.0,预期行为是:release tag 通过 GitHub Actions release workflow 发布 GitHub Release 和 GHCR container images。 PyPI 发布在 PyPI project 和 trusted publishing 配好之前默认关住。

维护者明确批准 release 之前,不要创建或推送 release tag。

发布前检查

本地验证

打 tag 前在仓库根目录运行:

nix develop -c python3 -m unittest discover -s tests -v
nix develop -c python3 -m build
nix build .#codex-quota-monitor --no-link
nix run .#codex-quota-monitor -- --help
nix run .#codex-quota-monitor -- --version
nix run .#codex-quota-monitor -- init --mode user >/tmp/cqm-init.txt
nix run .#codex-quota-monitor -- print-config --state-db off
printf 'state_db = "off"\ndisplay_timezone = "UTC"\n' >/tmp/cqm-config.toml
nix run .#codex-quota-monitor -- print-config --config /tmp/cqm-config.toml
nix run .#codex-quota-monitor -- doctor --json --management-base-url http://127.0.0.1:9 --gateway-health-url http://127.0.0.1:9/healthz --state-db off >/tmp/cqm-doctor.json || test "$?" -eq 1
printf '{"access_token":"secret","account_id":"acct-a"}\n' >/tmp/cqm-secret.json
nix run .#codex-quota-monitor -- redact /tmp/cqm-secret.json --secret secret >/tmp/cqm-redacted.json
! grep -q secret /tmp/cqm-redacted.json
nix run .#codex-quota-benchmark -- --help

上面故意指向不可达 CPA 的 doctor 应该输出带明确 fail 项的 JSON,而不是 traceback。

如果本地有 Docker,再运行:

docker build -t codex-quota-monitor:release-check .
docker run --rm codex-quota-monitor:release-check --help
./scripts/ci/smoke-docker-image.sh codex-quota-monitor:release-check cqm-release-check

如果本地没有 Docker,把 GitHub Actions 里的 Docker job 作为阻塞性的 image validation gate。

打 Tag 和发布

只有在明确批准后,才创建 annotated tag 并推送:

git tag -a v0.2.0 -m "codex-quota-monitor v0.2.0"
git push origin v0.2.0

推送 tag 会触发 .github/workflows/release.yml,它应该:

发布后检查

停止条件