Phiên bản CalVer

Phiên bản CalVer

Bắt đầu từ phiên bản 2026.3.0, iSPA CMS sử dụng Calendar Versioning (CalVer) thay cho Semantic Versioning (SemVer).

Định dạng

YYYY.MM.PATCH
SegmentÝ nghĩaVí dụ
YYYYNăm phát hành2026
MMTháng phát hành (có zero-pad)03
PATCHSố bản vá trong tháng, bắt đầu từ 00, 1, 2...

Ví dụ: 2026.03.0 — phát hành tháng 3 năm 2026, bản gốc.

Phiên bản cấp ứng dụng

File VERSION ở thư mục gốc dự án là nguồn mà cms:version và cấu hình ứng dụng đọc để báo phiên bản cấp CMS.

2026.03.0

Giá trị này được đọc trực tiếp bởi:

  • config('ispa-cms.app_version') — config Laravel
  • php artisan cms:version — phiên bản ứng dụng, PHP và Laravel

module.json và composer.json của từng module là metadata riêng. Lệnh cms:bump có thể đồng bộ chúng theo VERSION, nhưng không nên mặc định rằng mọi module trong working tree luôn đang cùng phiên bản.

Snapshot hiện tại có version drift

Ngày 26/08/2026, VERSION là 2026.03.0, trong khi 40 manifest module đang có nhiều giá trị từ 2026.03.0 đến 2026.08.1, và một số manifest chưa khai báo version. Đây là trạng thái source hiện tại; tài liệu không được tiếp tục khẳng định “tất cả module luôn đồng bộ”.

Bump phiên bản

Sử dụng lệnh cms:bump để tăng phiên bản đồng loạt:

LoạiHành viVí dụ
patchTăng PATCH segment2026.03.0 → 2026.03.1
minorPhát hành tháng mới2026.03.0 → 2026.04.0
majorTương tự minor (CalVer dựa trên lịch)2026.03.0 → 2026.04.0
# Tăng patch
php artisan cms:bump patch

# Tháng mới
php artisan cms:bump minor

# Xem trước
php artisan cms:bump patch --dry-run

Files được cập nhật

Khi bump, lệnh sẽ cập nhật:

  1. VERSION — file gốc
  2. Mọi cms/*/module.json khớp glob — trường version
  3. Mọi cms/*/composer.json khớp glob — trường version

Đây là thao tác release có ghi file

Chạy --dry-run trước và review toàn bộ file dự kiến đổi. base-admin/package.json không được lệnh cập nhật. Chỉ tạo git tag sau khi version, artifact và commit release đã được xác nhận.

Tại sao CalVer?

  • Dễ hiểu: Nhìn phiên bản biết ngay thời điểm phát hành.
  • Phù hợp với CMS: iSPA CMS phát hành liên tục, không theo chu kỳ major/minor truyền thống.
  • Có công cụ đồng bộ: cms:bump có thể đưa mọi manifest/composer module khớp glob về cùng version trong một release đã duyệt.
  • Được sử dụng rộng rãi: Ubuntu, pip, nhiều dự án lớn dùng CalVer.

So sánh với SemVer

So sánhSemVerCalVer (iSPA CMS)
Định dạngMAJOR.MINOR.PATCHYYYY.MM.PATCH
Ý nghĩa MAJORBreaking changesNăm
Ý nghĩa MINORFeaturesTháng
Ý nghĩa PATCHBug fixesBản vá trong tháng
Ưu điểmRõ ràng về tương thíchRõ ràng về thời gian