mirror of
https://github.com/openclaw/openclaw.git
synced 2026-08-20 17:41:33 -06:00
ci: require enabled Telegram package proof (#103310)
This commit is contained in:
committed by
GitHub
parent
1696366f88
commit
a24139e199
@@ -657,14 +657,15 @@ jobs:
|
||||
steps:
|
||||
- name: Verify package acceptance results
|
||||
env:
|
||||
ADVISORY: ${{ inputs.advisory }}
|
||||
DOCKER_RESULT: ${{ needs.docker_acceptance.result }}
|
||||
PACKAGE_INTEGRITY_RESULT: ${{ needs.package_integrity.result }}
|
||||
PACKAGE_TELEGRAM_RESULT: ${{ needs.package_telegram.result }}
|
||||
RESOLVE_RESULT: ${{ needs.resolve_package.result }}
|
||||
TELEGRAM_ENABLED: ${{ needs.resolve_package.outputs.telegram_enabled }}
|
||||
shell: bash
|
||||
run: |
|
||||
set -euo pipefail
|
||||
advisory="${{ inputs.advisory }}"
|
||||
failed=0
|
||||
for item in \
|
||||
"resolve_package=${RESOLVE_RESULT}" \
|
||||
@@ -674,8 +675,17 @@ jobs:
|
||||
do
|
||||
name="${item%%=*}"
|
||||
result="${item#*=}"
|
||||
result_failed=false
|
||||
if [[ "$result" != "success" && "$result" != "skipped" ]]; then
|
||||
if [[ "$advisory" == "true" && "$name" != "resolve_package" ]]; then
|
||||
result_failed=true
|
||||
fi
|
||||
if [[ "$name" == "package_telegram" &&
|
||||
"$TELEGRAM_ENABLED" == "true" &&
|
||||
"$result" != "success" ]]; then
|
||||
result_failed=true
|
||||
fi
|
||||
if [[ "$result_failed" == "true" ]]; then
|
||||
if [[ "$ADVISORY" == "true" && "$name" != "resolve_package" ]]; then
|
||||
echo "::warning::${name} ended with ${result}; package acceptance is advisory for this caller."
|
||||
continue
|
||||
fi
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
// Package Acceptance Workflow tests cover package acceptance workflow script behavior.
|
||||
import { spawnSync } from "node:child_process";
|
||||
import { readdirSync, readFileSync, statSync } from "node:fs";
|
||||
import { describe, expect, it } from "vitest";
|
||||
import { parse } from "yaml";
|
||||
@@ -114,6 +115,30 @@ function expectTextToIncludeAll(text: string | undefined, snippets: string[]): v
|
||||
}
|
||||
}
|
||||
|
||||
function runPackageAcceptanceSummary(params: {
|
||||
advisory?: boolean;
|
||||
telegramEnabled: boolean;
|
||||
telegramResult: string;
|
||||
}) {
|
||||
const summary = workflowJob(PACKAGE_ACCEPTANCE_WORKFLOW, "summary");
|
||||
const script = workflowStep(summary, "Verify package acceptance results").run;
|
||||
if (!script) {
|
||||
throw new Error("Expected package acceptance summary script");
|
||||
}
|
||||
return spawnSync("bash", ["-c", script], {
|
||||
encoding: "utf8",
|
||||
env: {
|
||||
ADVISORY: String(params.advisory ?? false),
|
||||
DOCKER_RESULT: "success",
|
||||
PACKAGE_INTEGRITY_RESULT: "success",
|
||||
PACKAGE_TELEGRAM_RESULT: params.telegramResult,
|
||||
PATH: process.env.PATH,
|
||||
RESOLVE_RESULT: "success",
|
||||
TELEGRAM_ENABLED: String(params.telegramEnabled),
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
describe("package acceptance workflow", () => {
|
||||
it("verifies immutable postpublish evidence before stable closeout reads it", () => {
|
||||
const workflow = readFileSync(STABLE_MAIN_CLOSEOUT_WORKFLOW, "utf8");
|
||||
@@ -1773,6 +1798,42 @@ describe("package artifact reuse", () => {
|
||||
expect(workflow).not.toContain("npm_telegram:");
|
||||
});
|
||||
|
||||
it.each([
|
||||
{ telegramEnabled: true, telegramResult: "success" },
|
||||
{ telegramEnabled: false, telegramResult: "skipped" },
|
||||
])(
|
||||
"accepts Telegram result $telegramResult when enabled=$telegramEnabled",
|
||||
({ telegramEnabled, telegramResult }) => {
|
||||
const result = runPackageAcceptanceSummary({ telegramEnabled, telegramResult });
|
||||
|
||||
expect(result.status).toBe(0);
|
||||
expect(result.stderr).toBe("");
|
||||
},
|
||||
);
|
||||
|
||||
it("rejects a skipped Telegram lane when package acceptance enabled it", () => {
|
||||
const result = runPackageAcceptanceSummary({
|
||||
telegramEnabled: true,
|
||||
telegramResult: "skipped",
|
||||
});
|
||||
|
||||
expect(result.status).toBe(1);
|
||||
expect(result.stdout).toContain("::error::package_telegram ended with skipped");
|
||||
});
|
||||
|
||||
it("preserves advisory handling for an unexpectedly skipped Telegram lane", () => {
|
||||
const result = runPackageAcceptanceSummary({
|
||||
advisory: true,
|
||||
telegramEnabled: true,
|
||||
telegramResult: "skipped",
|
||||
});
|
||||
|
||||
expect(result.status).toBe(0);
|
||||
expect(result.stdout).toContain(
|
||||
"::warning::package_telegram ended with skipped; package acceptance is advisory for this caller.",
|
||||
);
|
||||
});
|
||||
|
||||
it("gives release build steps enough Node heap", () => {
|
||||
for (const workflowPath of [LIVE_E2E_WORKFLOW, RELEASE_CHECKS_WORKFLOW]) {
|
||||
const jobs = readWorkflow(workflowPath).jobs ?? {};
|
||||
|
||||
Reference in New Issue
Block a user