Publish full external plugin quality gate logs (#3668)

* fix(external-plugins): publish full quality gate logs

Upload full external plugin quality gate output as workflow artifacts and link those artifacts from PR and intake comments.

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

* Limit safeName length to 64 characters

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

---------

Co-authored-by: Copilot App <223556219+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-09-23 11:34:42 +10:00
committed by GitHub
co-authored by Copilot App Copilot Autofix powered by AI
parent 1874d1b88b
commit a89cd67e19
10 changed files with 237 additions and 20 deletions
@@ -143,6 +143,18 @@ jobs:
const intakeState = await import(pathToFileURL(path.join(process.env.GITHUB_WORKSPACE, 'eng', 'external-plugin-intake-state.mjs')).href);
const marker = '<!-- external-plugin-pr-quality -->';
const artifacts = await github.paginate(github.rest.actions.listWorkflowRunArtifacts, {
owner: context.repo.owner,
repo: context.repo.repo,
run_id: workflowRun.id,
per_page: 100,
});
const qualityLogArtifact = artifacts.find((artifact) =>
artifact.name === 'external-plugin-pr-quality-logs' && !artifact.expired
);
const qualityLogUrl = qualityLogArtifact
? `https://github.com/${context.repo.owner}/${context.repo.repo}/actions/runs/${workflowRun.id}/artifacts/${qualityLogArtifact.id}`
: '';
const detectJobResult = payload.detect_job_result;
const shouldRun = payload.should_run;
const changedCount = payload.changed_count;
@@ -345,6 +357,7 @@ jobs:
'',
`- **Changed entries detected:** ${changedCount}`,
`- **Workflow state label:** \`${stateLabel}\``,
qualityLogUrl ? `- **Full logs:** [Download quality gate artifact](${qualityLogUrl})` : '',
'- **Status legend:** ✅ pass · ⚠️ warning · 🛑 fail',
'',
'### Per-plugin quality summary',