mirror of
https://github.com/moltbot/moltbot.git
synced 2026-05-13 15:47:28 +00:00
ci(release): stabilize full validation gates
This commit is contained in:
@@ -523,6 +523,8 @@ jobs:
|
||||
install-bun: "true"
|
||||
|
||||
- name: Build dist for repo E2E
|
||||
env:
|
||||
NODE_OPTIONS: --max-old-space-size=6144
|
||||
run: pnpm build
|
||||
|
||||
- name: Run repo E2E suite
|
||||
@@ -568,6 +570,8 @@ jobs:
|
||||
(inputs.include_live_suites && matrix.requires_live_suites)
|
||||
) &&
|
||||
(inputs.live_suite_filter == '' || inputs.live_suite_filter == matrix.suite_id)
|
||||
env:
|
||||
NODE_OPTIONS: --max-old-space-size=6144
|
||||
run: pnpm build
|
||||
|
||||
- name: Configure suite-specific env
|
||||
|
||||
14
.github/workflows/openclaw-release-checks.yml
vendored
14
.github/workflows/openclaw-release-checks.yml
vendored
@@ -693,6 +693,8 @@ jobs:
|
||||
install-bun: "true"
|
||||
|
||||
- name: Build private QA runtime
|
||||
env:
|
||||
NODE_OPTIONS: --max-old-space-size=6144
|
||||
run: pnpm build
|
||||
|
||||
- name: Run parity lane
|
||||
@@ -770,6 +772,8 @@ jobs:
|
||||
merge-multiple: true
|
||||
|
||||
- name: Build private QA runtime
|
||||
env:
|
||||
NODE_OPTIONS: --max-old-space-size=6144
|
||||
run: pnpm build
|
||||
|
||||
- name: Generate parity report
|
||||
@@ -821,6 +825,8 @@ jobs:
|
||||
install-bun: "true"
|
||||
|
||||
- name: Build private QA runtime
|
||||
env:
|
||||
NODE_OPTIONS: --max-old-space-size=6144
|
||||
run: pnpm build
|
||||
|
||||
- name: Run Matrix live lane
|
||||
@@ -918,6 +924,8 @@ jobs:
|
||||
require_var OPENCLAW_QA_CONVEX_SECRET_CI
|
||||
|
||||
- name: Build private QA runtime
|
||||
env:
|
||||
NODE_OPTIONS: --max-old-space-size=6144
|
||||
run: pnpm build
|
||||
|
||||
- name: Run Telegram live lane
|
||||
@@ -1012,6 +1020,8 @@ jobs:
|
||||
require_var OPENCLAW_QA_CONVEX_SECRET_CI
|
||||
|
||||
- name: Build private QA runtime
|
||||
env:
|
||||
NODE_OPTIONS: --max-old-space-size=6144
|
||||
run: pnpm build
|
||||
|
||||
- name: Run Discord live lane
|
||||
@@ -1106,6 +1116,8 @@ jobs:
|
||||
require_var OPENCLAW_QA_CONVEX_SECRET_CI
|
||||
|
||||
- name: Build private QA runtime
|
||||
env:
|
||||
NODE_OPTIONS: --max-old-space-size=6144
|
||||
run: pnpm build
|
||||
|
||||
- name: Run WhatsApp live lane
|
||||
@@ -1200,6 +1212,8 @@ jobs:
|
||||
require_var OPENCLAW_QA_CONVEX_SECRET_CI
|
||||
|
||||
- name: Build private QA runtime
|
||||
env:
|
||||
NODE_OPTIONS: --max-old-space-size=6144
|
||||
run: pnpm build
|
||||
|
||||
- name: Run Slack live lane
|
||||
|
||||
16
src/config/types.channel-health.ts
Normal file
16
src/config/types.channel-health.ts
Normal file
@@ -0,0 +1,16 @@
|
||||
export type ChannelHeartbeatVisibilityConfig = {
|
||||
/** Show HEARTBEAT_OK acknowledgments in chat (default: false). */
|
||||
showOk?: boolean;
|
||||
/** Show heartbeat alerts with actual content (default: true). */
|
||||
showAlerts?: boolean;
|
||||
/** Emit indicator events for UI status display (default: true). */
|
||||
useIndicator?: boolean;
|
||||
};
|
||||
|
||||
export type ChannelHealthMonitorConfig = {
|
||||
/**
|
||||
* Enable channel-health-monitor restarts for this channel or account.
|
||||
* Inherits the global gateway setting when omitted.
|
||||
*/
|
||||
enabled?: boolean;
|
||||
};
|
||||
@@ -8,7 +8,7 @@ import type {
|
||||
import type {
|
||||
ChannelHealthMonitorConfig,
|
||||
ChannelHeartbeatVisibilityConfig,
|
||||
} from "./types.channels.js";
|
||||
} from "./types.channel-health.js";
|
||||
import type { DmConfig } from "./types.messages.js";
|
||||
|
||||
export type CommonChannelMessagingConfig = {
|
||||
|
||||
@@ -1,4 +1,8 @@
|
||||
import type { ContextVisibilityMode, GroupPolicy } from "./types.base.js";
|
||||
import type {
|
||||
ChannelHealthMonitorConfig,
|
||||
ChannelHeartbeatVisibilityConfig,
|
||||
} from "./types.channel-health.js";
|
||||
import type { DiscordConfig } from "./types.discord.js";
|
||||
import type { GoogleChatConfig } from "./types.googlechat.js";
|
||||
import type { IMessageConfig } from "./types.imessage.js";
|
||||
@@ -9,22 +13,10 @@ import type { SlackConfig } from "./types.slack.js";
|
||||
import type { TelegramConfig } from "./types.telegram.js";
|
||||
import type { WhatsAppConfig } from "./types.whatsapp.js";
|
||||
|
||||
export type ChannelHeartbeatVisibilityConfig = {
|
||||
/** Show HEARTBEAT_OK acknowledgments in chat (default: false). */
|
||||
showOk?: boolean;
|
||||
/** Show heartbeat alerts with actual content (default: true). */
|
||||
showAlerts?: boolean;
|
||||
/** Emit indicator events for UI status display (default: true). */
|
||||
useIndicator?: boolean;
|
||||
};
|
||||
|
||||
export type ChannelHealthMonitorConfig = {
|
||||
/**
|
||||
* Enable channel-health-monitor restarts for this channel or account.
|
||||
* Inherits the global gateway setting when omitted.
|
||||
*/
|
||||
enabled?: boolean;
|
||||
};
|
||||
export type {
|
||||
ChannelHealthMonitorConfig,
|
||||
ChannelHeartbeatVisibilityConfig,
|
||||
} from "./types.channel-health.js";
|
||||
|
||||
export type ChannelDefaultsConfig = {
|
||||
groupPolicy?: GroupPolicy;
|
||||
|
||||
@@ -10,7 +10,7 @@ import type {
|
||||
import type {
|
||||
ChannelHealthMonitorConfig,
|
||||
ChannelHeartbeatVisibilityConfig,
|
||||
} from "./types.channels.js";
|
||||
} from "./types.channel-health.js";
|
||||
import type { DmConfig, ProviderCommandsConfig } from "./types.messages.js";
|
||||
import type { SecretInput } from "./types.secrets.js";
|
||||
import type { GroupToolPolicyBySenderConfig, GroupToolPolicyConfig } from "./types.tools.js";
|
||||
|
||||
@@ -4,7 +4,7 @@ import type {
|
||||
GroupPolicy,
|
||||
ReplyToMode,
|
||||
} from "./types.base.js";
|
||||
import type { ChannelHealthMonitorConfig } from "./types.channels.js";
|
||||
import type { ChannelHealthMonitorConfig } from "./types.channel-health.js";
|
||||
import type { DmConfig } from "./types.messages.js";
|
||||
import type { SecretRef } from "./types.secrets.js";
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ import type {
|
||||
import type {
|
||||
ChannelHealthMonitorConfig,
|
||||
ChannelHeartbeatVisibilityConfig,
|
||||
} from "./types.channels.js";
|
||||
} from "./types.channel-health.js";
|
||||
import type { DmConfig } from "./types.messages.js";
|
||||
import type { GroupToolPolicyBySenderConfig, GroupToolPolicyConfig } from "./types.tools.js";
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ import type {
|
||||
import type {
|
||||
ChannelHealthMonitorConfig,
|
||||
ChannelHeartbeatVisibilityConfig,
|
||||
} from "./types.channels.js";
|
||||
} from "./types.channel-health.js";
|
||||
import type { DmConfig } from "./types.messages.js";
|
||||
import type { SecretInput } from "./types.secrets.js";
|
||||
import type { GroupToolPolicyBySenderConfig, GroupToolPolicyConfig } from "./types.tools.js";
|
||||
|
||||
@@ -9,7 +9,7 @@ import type {
|
||||
import type {
|
||||
ChannelHealthMonitorConfig,
|
||||
ChannelHeartbeatVisibilityConfig,
|
||||
} from "./types.channels.js";
|
||||
} from "./types.channel-health.js";
|
||||
import type { DmConfig, ProviderCommandsConfig } from "./types.messages.js";
|
||||
import type { GroupToolPolicyBySenderConfig, GroupToolPolicyConfig } from "./types.tools.js";
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ import type {
|
||||
import type {
|
||||
ChannelHealthMonitorConfig,
|
||||
ChannelHeartbeatVisibilityConfig,
|
||||
} from "./types.channels.js";
|
||||
} from "./types.channel-health.js";
|
||||
import type { DmConfig, ProviderCommandsConfig } from "./types.messages.js";
|
||||
import type { GroupToolPolicyBySenderConfig, GroupToolPolicyConfig } from "./types.tools.js";
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ import type {
|
||||
import type {
|
||||
ChannelHealthMonitorConfig,
|
||||
ChannelHeartbeatVisibilityConfig,
|
||||
} from "./types.channels.js";
|
||||
} from "./types.channel-health.js";
|
||||
import type { DmConfig } from "./types.messages.js";
|
||||
import type { GroupToolPolicyBySenderConfig, GroupToolPolicyConfig } from "./types.tools.js";
|
||||
|
||||
|
||||
@@ -649,6 +649,21 @@ describe("package artifact reuse", () => {
|
||||
expect(workflow).not.toContain("npm_telegram:");
|
||||
});
|
||||
|
||||
it("gives release build steps enough Node heap", () => {
|
||||
for (const workflowPath of [LIVE_E2E_WORKFLOW, RELEASE_CHECKS_WORKFLOW]) {
|
||||
const jobs = readWorkflow(workflowPath).jobs ?? {};
|
||||
for (const [jobName, job] of Object.entries(jobs)) {
|
||||
for (const step of job.steps ?? []) {
|
||||
if (step.run === "pnpm build") {
|
||||
expect(step.env, `${workflowPath}:${jobName}:${step.name}`).toMatchObject({
|
||||
NODE_OPTIONS: "--max-old-space-size=6144",
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
it("runs full release children from the trusted workflow ref", () => {
|
||||
const workflow = readFileSync(FULL_RELEASE_VALIDATION_WORKFLOW, "utf8");
|
||||
const preparePackageJob = workflowJob(
|
||||
|
||||
@@ -216,6 +216,9 @@ describe("scripts/lib/plugin-prerelease-test-plan.mjs", () => {
|
||||
const pluginPrereleaseScript = releaseWorkflow.jobs.plugin_prerelease.steps.find(
|
||||
(step) => step.name === "Dispatch and monitor plugin prerelease",
|
||||
).run;
|
||||
const buildDistStep = workflow.jobs["build-artifacts"].steps.find(
|
||||
(step) => step.name === "Build dist",
|
||||
);
|
||||
|
||||
expect(workflow.jobs["plugin-prerelease-static-shard"]).toBeUndefined();
|
||||
expect(workflow.jobs["plugin-prerelease-docker-suite"]).toBeUndefined();
|
||||
@@ -223,6 +226,7 @@ describe("scripts/lib/plugin-prerelease-test-plan.mjs", () => {
|
||||
expect(workflow.jobs["checks-node-extensions-shard"]).toBeUndefined();
|
||||
expect(preflight.outputs).not.toHaveProperty("run_plugin_prerelease_suite");
|
||||
expect(preflight.outputs).not.toHaveProperty("run_checks_node_extensions");
|
||||
expect(buildDistStep.env).toEqual({ NODE_OPTIONS: "--max-old-space-size=6144" });
|
||||
expect(staticShard).toEqual({
|
||||
if: "needs.preflight.outputs.run_plugin_prerelease_static == 'true'",
|
||||
name: "${{ matrix.check_name }}",
|
||||
|
||||
Reference in New Issue
Block a user