Runbook này định nghĩa quy trình release tiêu chuẩn của maintainer.
Cập nhật lần cuối: 2026-02-20.
- Đảm bảo release có thể dự đoán và lặp lại.
- Chỉ publish từ code đã có trên
master. - Xác minh các artifact đa nền tảng trước khi publish.
- Duy trì nhịp release đều đặn ngay cả khi PR volume cao.
- Release patch/minor: hàng tuần hoặc hai tuần một lần.
- Bản vá bảo mật khẩn cấp: out-of-band.
- Không bao giờ chờ tích lũy quá nhiều commit lớn.
Automation release nằm tại:
.github/workflows/pub-release.yml.github/workflows/pub-homebrew-core.yml(PR formula Homebrew thủ công, do bot sở hữu)
Các chế độ:
- Tag push
v*: chế độ publish. - Manual dispatch: chế độ chỉ xác minh hoặc publish.
- Lịch hàng tuần: chế độ chỉ xác minh.
Các guardrail ở chế độ publish:
- Tag phải khớp định dạng semver-like
vX.Y.Z[-suffix]. - Tag phải đã tồn tại trên origin.
- Commit của tag phải có thể truy vết được từ
origin/master. - GHCR image tag tương ứng (
ghcr.io/<owner>/<repo>:<tag>) phải sẵn sàng trước khi GitHub Release publish hoàn tất. - Artifact được xác minh trước khi publish.
- Đảm bảo các required check đều xanh trên
mastermới nhất. - Xác nhận không có sự cố ưu tiên cao hoặc regression đã biết nào đang mở.
- Xác nhận các workflow installer và Docker đều khoẻ mạnh trên các commit
mastergần đây.
Chạy Pub Release thủ công:
publish_release:falserelease_ref:master
Kết quả mong đợi:
- Ma trận target đầy đủ build thành công.
verify-artifactsxác nhận tất cả archive mong đợi đều tồn tại.- Không có GitHub Release nào được publish.
Từ một checkout cục bộ sạch đã sync với origin/master:
scripts/release/cut_release_tag.sh vX.Y.Z --pushScript này đảm bảo:
- working tree sạch
HEAD == origin/master- tag không bị trùng lặp
- định dạng tag semver-like
Sau khi push tag, theo dõi:
- Chế độ publish
Pub Release - Job publish
Pub Docker Img
Kết quả publish mong đợi:
- release archive
SHA256SUMS- SBOM
CycloneDXvàSPDX - chữ ký/chứng chỉ cosign
- GitHub Release notes + asset
- Xác minh GitHub Release asset có thể tải xuống.
- Xác minh GHCR tag cho phiên bản đã release (
vX.Y.Z) và tag SHA commit release (sha-<12>). - Xác minh các đường dẫn cài đặt phụ thuộc vào release asset (ví dụ tải xuống binary bootstrap).
Chạy Pub Homebrew Core thủ công:
release_tag:vX.Y.Zdry_run:truetrước, sau đófalse
Cài đặt repository bắt buộc cho non-dry-run:
- secret:
HOMEBREW_CORE_BOT_TOKEN(token từ tài khoản bot chuyên dụng, không phải tài khoản maintainer cá nhân) - variable:
HOMEBREW_CORE_BOT_FORK_REPO(ví dụzeroclaw-release-bot/homebrew-core) - variable tùy chọn:
HOMEBREW_CORE_BOT_EMAIL
Các guardrail workflow:
- release tag phải khớp version
Cargo.toml - URL nguồn và SHA256 của formula được cập nhật từ tagged tarball
- license formula được chuẩn hóa thành
Apache-2.0 OR MIT - PR được mở từ bot fork vào
Homebrew/homebrew-core:master
Nếu release push tag thất bại sau khi artifact đã được xác minh:
- Sửa vấn đề workflow hoặc packaging trên
master. - Chạy lại
Pub Releasethủ công ở chế độ publish với:publish_release=truerelease_tag=<existing tag>release_reftự động được pin vàorelease_tagở chế độ publish
- Xác minh lại asset đã release.
- Giữ các thay đổi release nhỏ và có thể đảo ngược.
- Dùng một issue/checklist release cho mỗi phiên bản để bàn giao rõ ràng.
- Tránh publish từ các feature branch ad-hoc.