ci: require enabled Telegram package proof (#103310)

This commit is contained in:
Peter Steinberger
2026-07-10 04:24:36 +01:00
committed by GitHub
parent 1696366f88
commit a24139e199
2 changed files with 73 additions and 2 deletions
+12 -2
View File
@@ -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 ?? {};