Skip to content

hotfix: sửa lỗi trên production

/znf:hotfix là workflow sửa lỗi đang ảnh hưởng production. Nó branch từ release đang chạy, dùng lại bước chẩn đoán của /znf:fix, và để bạn chọn giữa revert, disable hoặc fix forward.

Khi nào dùng

Dùng /znf:hotfix khi lỗi đang ảnh hưởng production và bạn xác nhận độ khẩn.

Không dùng /znf:hotfix khi lỗi chỉ xảy ra trên staging hoặc dev. Dùng /znf:fix.

Cách gọi

text
/znf:hotfix <mô tả ngắn>

Chỉ bạn gõ được /znf:hotfix. Agent không tự gọi được lệnh này, chỉ đề xuất. Độ khẩn là quyết định của bạn.

Viết yêu cầu

TrườngVí dụ
RepoRepo đang chạy bản lỗi
Release đang chạyBản đang chạy production, không phải nhánh tích hợp
Ảnh hưởngAi hoặc luồng nào đang bị chặn
Bằng chứngLog thật, ticket, docker logs <container>

Các bước

Các bước của một lần chạy hotfix

BướcKit làm gìBạn làm gì
1Chốt repo bị ảnh hưởngXác nhận đúng repo
2fetch rồi resolve base ref hotfix bằng zenify hotfix baserefXác nhận đây đúng là bản đang chạy production
3Chẩn đoán bằng bước 0-2 của /znf:fixĐọc nguyên nhân đã xác nhận
4Trình bày ba lựa chọn kèm khuyến nghịChọn revert, disable hoặc fix forward. Revert và disable dừng tại đây, không tạo worktree
5Tạo worktree --type hotfix --base <release> (chỉ khi fix forward)Không cần làm gì
6Chạy /znf:scout trên ref đã resolve, không phải base thường ngàyĐọc báo cáo scout
7Sửa nhỏ nhấtKhông cần làm gì
8Verify trên code path thậtĐọc kết quả
9Chạy /znf:gate rồi /znf:ship, kể cả khi đang gấp. Ship mở PR vào base ref releaseĐọc board ship, nhận PR URL
10Nhắc bước tay còn lạiMerge PR (tức là deploy), rồi đồng bộ fix ngược về base feature bằng merge hoặc cherry-pick

Kết quả

MụcNội dung
Base ref xác nhậnorigin/release<N> chỉ khi repo khai release-latest hoặc custom. Mặc định hotfix baseref trả ref staging, khi đó bạn truyền --base bằng tay
Nguyên nhân xác nhậnKèm bằng chứng thật
Cách xử lý đã chọnRevert, disable hoặc fix forward, kèm lý do
Branch (nếu fix forward)<user>/hotfix/<slug>
PRMở vào base ref release, chưa merge

Quyết định thuộc về bạn

  • Đây có phải hotfix thật không. Độ khẩn là quyết định của bạn.
  • Base ref có đúng là bản đang chạy không.
  • Chọn revert, disable hoặc fix forward.
  • Merge PR, rồi đồng bộ fix ngược về base feature.

Ví dụ

Ví dụ minh hoạ, chưa có hotfix thật nên dùng số release giữ chỗ.

release<N> đang chạy gặp lỗi, xác nhận qua log thật. Bạn xác nhận base ref origin/release<N> và chọn fix forward vì nguyên nhân đã rõ. Kit tạo worktree --type hotfix --base origin/release<N>, scout đúng ref đó, sửa, verify, gate rồi ship. Ship mở PR vào release<N>. Bạn merge rồi cherry-pick fix về base feature.

Lỗi thường gặp

TránhNên làm
Resolve release rồi mới fetchLuôn fetch trước rồi resolve. Nếu không, ref có thể cũ hơn bản đang chạy
Fix forward dưới áp lực khi còn phân vânChọn revert khi fix forward cần quyết định thiết kế. Lúc gấp không phải lúc thiết kế
Quên đồng bộ ngược về base featureBước 10 luôn nhắc. Release sau vẫn cần fix này

Xem thêm

/reference/skills/hotfix, Base ref, hotfix base, port block, Chọn workflow