Files
calculate-version/README.md
T
jiantw83 24ed2ab164
CI / 1. BUILD (pull_request) Successful in 1s
CI / 2. TEST (pull_request) Successful in 3m32s
CI / 3. RESULT (pull_request) Has been skipped
docs(README 與文件草稿): 重整說明與草稿內容
2026-07-11 10:00:34 +00:00

6.8 KiB
Raw Blame History

calculate-version

更新時間:2026/07/11 17:53:32Asia/Taipei

這個專案是一個 Gitea Docker action,會讀取 repository 的 release 清單,計算下一個正式版或 beta 版本號,並將結果輸出成 action output。

專案列表

專案描述表

專案名稱 專案描述
calculate-version 這是一個以 Node.js 實作的 Gitea Docker action,提供 release 擷取、版本解析、beta 推算與 action 主流程輸出。

參考專案表

專案名稱 參考專案列表
calculate-version

NuGet 套件表

專案名稱 NuGet 套件列表
calculate-version

功能列表

calculate-version

功能名稱 功能描述
calculate-version.normalizeBetaFlag 把空值或 null 正規化成 beta 旗標字串
calculate-version.parseVersionParts 把版本字串拆成數字片段
calculate-version.compareVersionParts 逐段比較版本片段,供排序使用
calculate-version.stableVersionFromTag 解析穩定版 tag 為版本片段
calculate-version.latestStableVersion 從 release 清單找出最新穩定版
calculate-version.nextReleaseVersion 將正式版版本號遞增一版
calculate-version.nextBetaNumber 推算下一個 beta 編號
calculate-version.calculateVersion 回傳目前最新版本與下一個版本
calculate-version.fetchReleases 分頁抓取 repository release 清單
calculate-version.main 執行 action 主流程並輸出結果

使用範例

calculate-version.normalizeBetaFlag

把空值、null 或未定義值正規化成 false,讓後續版本判斷只處理字串。

const { normalizeBetaFlag } = require('./src/index.js');

const isBeta = normalizeBetaFlag(process.env.IS_BETA);

calculate-version.parseVersionParts

將版本字串拆成數字陣列,非數字片段會保守視為 0

const { parseVersionParts } = require('./src/index.js');

const parts = parseVersionParts('1.2.3');

calculate-version.compareVersionParts

逐段比較兩組版本片段,適合搭配 Array.prototype.sort() 使用。

const { compareVersionParts } = require('./src/index.js');

const sorted = [[1, 2, 10], [1, 2, 3]].sort(compareVersionParts);

calculate-version.stableVersionFromTag

從 tag 名稱擷取穩定版版本資訊,像 v1.2.3 會被解析成版本片段。

const { stableVersionFromTag } = require('./src/index.js');

const parts = stableVersionFromTag('v1.2.3');

calculate-version.latestStableVersion

從 release 清單中找出最新的穩定版版本號,找不到時回傳 0.0.0

const { latestStableVersion } = require('./src/index.js');

const latest = latestStableVersion([
  { tag_name: 'v1.2.2' },
  { tag_name: 'v1.2.3-beta.1' },
  { tag_name: 'v1.2.3' },
]);

calculate-version.nextReleaseVersion

將正式版版本號遞增一版,patchminor 都會以 10 為進位界線。

const { nextReleaseVersion } = require('./src/index.js');

const nextVersion = nextReleaseVersion('1.2.9');

calculate-version.nextBetaNumber

推算下一個 beta 編號,會找出目前版本對應的最大 beta.N 再加一。

const { nextBetaNumber } = require('./src/index.js');

const betaNumber = nextBetaNumber([
  { tag_name: 'v1.2.4-beta.1' },
  { tag_name: 'v1.2.4-beta.3' },
], '1.2.4');

calculate-version.calculateVersion

回傳目前最新版本與下一個版本,beta 模式時會產生對應的 -beta.N 結果。

const { calculateVersion } = require('./src/index.js');

const [latest, nextVersion] = calculateVersion([
  { tag_name: 'v1.2.3' },
  { tag_name: 'v1.2.4-beta.1' },
], 'false');

calculate-version.fetchReleases

分頁抓取 repository 的 release 清單,直到 API 回傳空資料或最後一頁不足頁面上限。

const { fetchReleases } = require('./src/index.js');

// 需人工確認:baseUrl 與 repository 必須對應實際 Gitea 環境。
(async () => {
  const releases = await fetchReleases('https://gitea.example.com', 'owner/repo', 'token-value');
  console.log(releases);
})();

calculate-version.main

執行 action 主流程,會讀取環境變數、抓取 release、計算版本並輸出結果。

const { main } = require('./src/index.js');

// 需人工確認:這個入口通常應由 Gitea action 啟動,且需要完整環境變數。
(async () => {
  await main();
})();