mirror of
https://github.com/certd/certd.git
synced 2026-07-17 03:17:34 +08:00
perf: 增加稳定版,预览版区分,预览版是最新版,稳定版在预览版验证稳定后,再将预览版转为稳定版
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
LEGO_VERSION=4.30.1
|
||||
JKS_GO_VERSION=1.0.3
|
||||
certd_plugin_loadmode=dev
|
||||
certd_plugin_loadmode=dev
|
||||
certd_release_mode=stable
|
||||
@@ -3,7 +3,7 @@
|
||||
|
||||
import assert from "node:assert/strict";
|
||||
|
||||
import { normalizeReleaseVersion } from "./app-controller.js";
|
||||
import { getReleaseMode, normalizeReleaseVersion } from "./app-controller.js";
|
||||
|
||||
describe("AppController.normalizeReleaseVersion", () => {
|
||||
it("normalizes AtomGit release tag names", () => {
|
||||
@@ -15,3 +15,29 @@ describe("AppController.normalizeReleaseVersion", () => {
|
||||
assert.equal(normalizeReleaseVersion({ name: "v1.40.0" }), "1.40.0");
|
||||
});
|
||||
});
|
||||
|
||||
describe("AppController.getReleaseMode", () => {
|
||||
it("returns 'latest' when env var is not set", () => {
|
||||
delete process.env.certd_release_mode;
|
||||
assert.equal(getReleaseMode(), "latest");
|
||||
});
|
||||
|
||||
it("returns 'latest' when env var is empty", () => {
|
||||
process.env.certd_release_mode = "";
|
||||
assert.equal(getReleaseMode(), "latest");
|
||||
});
|
||||
|
||||
it("returns 'stable' when env var is 'stable'", () => {
|
||||
process.env.certd_release_mode = "stable";
|
||||
assert.equal(getReleaseMode(), "stable");
|
||||
});
|
||||
|
||||
it("returns 'latest' when env var is an unknown value", () => {
|
||||
process.env.certd_release_mode = "unknown";
|
||||
assert.equal(getReleaseMode(), "latest");
|
||||
});
|
||||
|
||||
after(() => {
|
||||
delete process.env.certd_release_mode;
|
||||
});
|
||||
});
|
||||
|
||||
@@ -8,6 +8,10 @@ export function normalizeReleaseVersion(release: { tag_name?: string; name?: str
|
||||
return version.replace(/^v/i, "");
|
||||
}
|
||||
|
||||
export function getReleaseMode(): "stable" | "latest" {
|
||||
return process.env.certd_release_mode === "stable" ? "stable" : "latest";
|
||||
}
|
||||
|
||||
/**
|
||||
*/
|
||||
@Provide()
|
||||
@@ -20,14 +24,30 @@ export class AppController extends BaseController {
|
||||
|
||||
@Get("/latest", { description: Constants.per.authOnly })
|
||||
async latest(): Promise<any> {
|
||||
const mode = getReleaseMode();
|
||||
try {
|
||||
const res = await http.request({
|
||||
url: "https://api.atomgit.com/api/v5/repos/certd/certd/releases/latest",
|
||||
method: "get",
|
||||
logRes: false,
|
||||
timeout: 5000,
|
||||
});
|
||||
const latest = normalizeReleaseVersion(res);
|
||||
let latest = "";
|
||||
if (mode === "stable") {
|
||||
// 稳定版: 查询被设为 latest 的正式版本
|
||||
const res = await http.request({
|
||||
url: "https://api.atomgit.com/api/v5/repos/certd/certd/releases/latest?type=latest",
|
||||
method: "get",
|
||||
logRes: false,
|
||||
timeout: 5000,
|
||||
});
|
||||
latest = normalizeReleaseVersion(res);
|
||||
} else {
|
||||
// 预览版: 获取最新一条 release(可能包含 pre-release)
|
||||
const list = await http.request({
|
||||
url: "https://api.atomgit.com/api/v5/repos/certd/certd/releases/?direction=desc&per_page=1",
|
||||
method: "get",
|
||||
logRes: false,
|
||||
timeout: 5000,
|
||||
});
|
||||
if (Array.isArray(list) && list.length > 0) {
|
||||
latest = normalizeReleaseVersion(list[0]);
|
||||
}
|
||||
}
|
||||
return this.ok(latest);
|
||||
} catch (e: any) {
|
||||
logger.error(e);
|
||||
|
||||
@@ -5,6 +5,7 @@ import { SysInviteCommissionSetting } from "@certd/commercial-core";
|
||||
import { cloneDeep } from "lodash-es";
|
||||
import { getVersion } from "../../utils/version.js";
|
||||
import { http } from "@certd/basic";
|
||||
import { getReleaseMode } from "./app-controller.js";
|
||||
|
||||
/**
|
||||
*/
|
||||
@@ -108,6 +109,7 @@ export class BasicSettingsController extends BaseController {
|
||||
app: {
|
||||
time: new Date().getTime(),
|
||||
version,
|
||||
releaseMode: getReleaseMode(),
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user