feat: move distribution builds to platform Docker builder

This commit is contained in:
npc0-hue
2026-07-30 19:25:50 +08:00
parent 1e004dc9ec
commit e614a17fe3
45 changed files with 4492 additions and 294 deletions
+20 -1
View File
@@ -2,7 +2,7 @@ import { describe, expect, it } from "vitest";
import type { GamePluginResponse } from "../api/types";
import { defaultServerCreateForm, runtimeBindingFields } from "../contracts/serverManagement";
import { serverCreateRequestFromForm, serverInstanceIdFromName } from "./serverManagement";
import { minimalServerCreateRequestFromForm, serverCreateRequestFromForm, serverInstanceIdFromName } from "./serverManagement";
const plugin: GamePluginResponse = {
id: "game.runtime",
@@ -83,6 +83,25 @@ describe("runtime profile server creation contracts", () => {
});
});
it("maps the create UI to a minimal server request", () => {
const form = defaultServerCreateForm([plugin], []);
const request = minimalServerCreateRequestFromForm({
...form,
name: " Minimal Runtime Server ",
deploymentTargetId: "run-builder",
runEndpointId: "run-existing",
bindings: { "rcon.password": "secret://must-not-submit" },
serverRoot: "/srv/must-not-submit"
}, 16);
expect(request).toEqual({
id: "server-minimal-runtime-server-16",
pluginId: "game.runtime",
name: "Minimal Runtime Server",
idempotencyKey: "web:create:server-minimal-runtime-server-16:16"
});
});
it("generates server instance ids from the visible server name", () => {
const form = defaultServerCreateForm([plugin], []);
const request = serverCreateRequestFromForm({ ...form, name: " Runtime Server ", bindings: {} }, 17);
+10
View File
@@ -11,6 +11,16 @@ import type {
} from "../api/types";
import type { ServerCreateFormState, ServerMetadataFormState, ServerRemovalConfirmationState } from "../contracts/serverManagement";
export function minimalServerCreateRequestFromForm(form: ServerCreateFormState, sequence = Date.now()): ServerLifecycleCreateRequest {
const id = form.id.trim() || serverInstanceIdFromName(form.name, sequence);
return {
id,
pluginId: form.pluginId.trim(),
name: form.name.trim(),
idempotencyKey: lifecycleIdempotencyKey("create", id, sequence)
};
}
export function serverCreateRequestFromForm(form: ServerCreateFormState, sequence = Date.now()): ServerLifecycleCreateRequest {
const id = form.id.trim() || serverInstanceIdFromName(form.name, sequence);
return {