Add version parity checks to external plugin quality gates (#2307)

* Add external plugin version-match gate

Enforce external.json version matching against remote plugin.json for source ref and/or sha in shared quality gates, and surface the new gate status/output in intake and PR workflows.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 8aa3e98d-1873-4cab-8866-1b2efd0f24ad

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
This commit is contained in:
Aaron Powell
2026-07-16 12:39:32 +10:00
committed by GitHub
parent 49c6c0f561
commit 61dda50523
6 changed files with 215 additions and 14 deletions
+19
View File
@@ -425,10 +425,12 @@ function normalizeQualityGateResult(rawResult) {
overall_status: "not_run",
vally_lint_status: "not_run",
smoke_status: "not_run",
version_match_status: "not_run",
failure_class: "none",
summary: "",
vally_lint_output: "",
smoke_output: "",
version_match_output: "",
};
if (!rawResult || typeof rawResult !== "object" || Array.isArray(rawResult)) {
@@ -444,6 +446,7 @@ function normalizeQualityGateResult(rawResult) {
function buildQualityGatesCommentSection(qualityResult) {
const vallyState = qualityResult.vally_lint_status || "not_run";
const smokeState = qualityResult.smoke_status || "not_run";
const versionMatchState = qualityResult.version_match_status || "not_run";
const summaryText = String(qualityResult.summary || "").trim() || "_No quality gate details were provided._";
const sections = [
@@ -453,6 +456,7 @@ function buildQualityGatesCommentSection(qualityResult) {
"|---|---|",
`| vally lint | ${vallyState} |`,
`| install smoke test | ${smokeState} |`,
`| version match | ${versionMatchState} |`,
"",
summaryText,
];
@@ -487,6 +491,21 @@ function buildQualityGatesCommentSection(qualityResult) {
);
}
const versionMatchOutput = String(qualityResult.version_match_output || "").trim();
if (versionMatchOutput) {
sections.push(
"",
"<details>",
"<summary>Version match output</summary>",
"",
"```text",
versionMatchOutput,
"```",
"",
"</details>",
);
}
return sections.join("\n");
}