ci: soft-fail coverage-gate while artifact quota persists - #41

Merged
moonming merged 1 commit into
mainfrom
fix/coverage-gate-soft
Apr 26, 2026
Merged

ci: soft-fail coverage-gate while artifact quota persists#41
moonming merged 1 commit into
mainfrom
fix/coverage-gate-soft

Conversation

@moonming

Copy link
Copy Markdown
Member

Summary

main CI is currently red on commit 6bf6227 because the `coverage-gate` job fails when its first `download-artifact` (coverage-unit) can't find an artifact. That artifact's upload was already soft-failed on the rust-unit job by PR #40 due to the GitHub Actions storage quota outage. The job-level `continue-on-error` was missed on coverage-gate so the workflow conclusion still rolls up to failure.

The coverage-gate threshold check is already a soft gate (the bash explicitly `exit 0`s even when below threshold; the comment says "soft during scaffold milestones; flip to `exit 1` at PR #5"). Aligning the job-level setting with that documented intent.

Changes

  • `continue-on-error: true` on the coverage-gate job
  • `continue-on-error: true` on the first `download-artifact` step (coverage-unit) so the merge step still runs when only e2e coverage is present

Test plan

After PR #40, the workflow conclusion is still 'failure' because the
coverage-gate job fails when its first download-artifact (coverage-unit)
can't find an artifact — that artifact's upload is currently soft-failed
on the rust-unit job due to the GH Actions storage quota outage.
The coverage-gate threshold check itself is already a soft gate (the
bash exits 0 even on below-threshold; see comment on the merge step).
Align the job-level setting with that intent: continue-on-error so a
failure doesn't make the whole workflow red. Also mark the first
download-artifact step continue-on-error so missing input doesn't
prevent the threshold step (which already tolerates an empty cov/e2e
directory).
Revert with the other quota mitigations once GH storage usage refreshes
or the quota is raised.
CopilotAI review requested due to automatic review settings April 26, 2026 04:33

CopilotAI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adjusts CI’s advisory coverage gate to avoid failing the overall workflow while GitHub Actions artifact uploads/downloads are intermittently failing due to the org storage quota outage.

Changes:

  • Marks the coverage-gate job as continue-on-error: true so it won’t fail the workflow conclusion.
  • Soft-fails the coverage-unit artifact download step so the job can proceed even when that artifact is missing.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +217 to +220
# workflow when coverage-gate fails — especially while the artifact
# storage quota outage prevents the upstream coverage-unit upload.
# Revert when the gate is flipped from advisory to gating (PR #5).
continue-on-error: true

CopilotAIApr 26, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The new comment says to “Revert when the gate is flipped … (PR #5)”, but PR #5 (per this PR’s metadata) is about server startup/health listeners and doesn’t appear related to coverage gating. Consider removing the PR reference or linking to the correct tracking issue/PR so future readers know when to revert.

Copilot uses AI. Check for mistakes.
Comment on lines 223 to 225
- uses: actions/download-artifact@v4
continue-on-error: true
with: { name: coverage-unit, path: cov/unit }

CopilotAIApr 26, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

continue-on-error on the download-artifact step lets the job proceed, but the later merge script still assumes cov/unit/*.info exists (files=(cov/unit/*.info) + cp "${files[0]}" ...). When the unit artifact is missing, Bash will keep the literal glob, causing lcov-result-merger/cp to fail and the subsequent upload step to be skipped. Please make the merge step tolerate missing/empty artifacts (e.g., enable nullglob and build the files array only from existing matches, or explicitly handle the empty case).

Copilot uses AI. Check for mistakes.
@moonming
moonming merged commit 8f5e403 into mainApr 26, 2026
7 of 10 checks passed
@moonming
moonming deleted the fix/coverage-gate-soft branch April 26, 2026 04:38
moonming added a commit that referenced this pull request Apr 26, 2026
…42)
The Packages spending limit on the moonming account was raised from
$0 to $5/mo (artifact storage is billed under the Packages SKU, not
Actions). Verified by re-running run 24948385951: build-ui's
upload-artifact step no longer reports "Artifact storage quota has
been hit", and downstream build-aisix can now download ui-dist.
Reverts the four `continue-on-error` mitigations added by:
- #40: rust-unit's coverage-unit upload-artifact
build-ui's ui-dist upload-artifact
build-bin (build-aisix) job-level
- #41: coverage-gate job-level
coverage-gate's coverage-unit download-artifact
Preserves the two pre-existing `continue-on-error` markers that
predate the quota outage:
- e2e job-level (etcd service startup / undici flake)
- coverage-gate's coverage-e2e download-artifact (e2e produces no
coverage when its tests don't run)
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@moonming
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

ci: soft-fail coverage-gate while artifact quota persists - #41

Merged
moonming merged 1 commit into
mainfrom
fix/coverage-gate-soft
Apr 26, 2026
Merged

ci: soft-fail coverage-gate while artifact quota persists#41
moonming merged 1 commit into
mainfrom
fix/coverage-gate-soft

Conversation

@moonming

Copy link
Copy Markdown
Member

Summary

main CI is currently red on commit 6bf6227 because the `coverage-gate` job fails when its first `download-artifact` (coverage-unit) can't find an artifact. That artifact's upload was already soft-failed on the rust-unit job by PR #40 due to the GitHub Actions storage quota outage. The job-level `continue-on-error` was missed on coverage-gate so the workflow conclusion still rolls up to failure.

The coverage-gate threshold check is already a soft gate (the bash explicitly `exit 0`s even when below threshold; the comment says "soft during scaffold milestones; flip to `exit 1` at PR #5"). Aligning the job-level setting with that documented intent.

Changes

  • `continue-on-error: true` on the coverage-gate job
  • `continue-on-error: true` on the first `download-artifact` step (coverage-unit) so the merge step still runs when only e2e coverage is present

Test plan

After PR #40, the workflow conclusion is still 'failure' because the
coverage-gate job fails when its first download-artifact (coverage-unit)
can't find an artifact — that artifact's upload is currently soft-failed
on the rust-unit job due to the GH Actions storage quota outage.
The coverage-gate threshold check itself is already a soft gate (the
bash exits 0 even on below-threshold; see comment on the merge step).
Align the job-level setting with that intent: continue-on-error so a
failure doesn't make the whole workflow red. Also mark the first
download-artifact step continue-on-error so missing input doesn't
prevent the threshold step (which already tolerates an empty cov/e2e
directory).
Revert with the other quota mitigations once GH storage usage refreshes
or the quota is raised.
CopilotAI review requested due to automatic review settings April 26, 2026 04:33

CopilotAI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adjusts CI’s advisory coverage gate to avoid failing the overall workflow while GitHub Actions artifact uploads/downloads are intermittently failing due to the org storage quota outage.

Changes:

  • Marks the coverage-gate job as continue-on-error: true so it won’t fail the workflow conclusion.
  • Soft-fails the coverage-unit artifact download step so the job can proceed even when that artifact is missing.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +217 to +220
# workflow when coverage-gate fails — especially while the artifact
# storage quota outage prevents the upstream coverage-unit upload.
# Revert when the gate is flipped from advisory to gating (PR #5).
continue-on-error: true

CopilotAIApr 26, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The new comment says to “Revert when the gate is flipped … (PR #5)”, but PR #5 (per this PR’s metadata) is about server startup/health listeners and doesn’t appear related to coverage gating. Consider removing the PR reference or linking to the correct tracking issue/PR so future readers know when to revert.

Copilot uses AI. Check for mistakes.
Comment on lines 223 to 225
- uses: actions/download-artifact@v4
continue-on-error: true
with: { name: coverage-unit, path: cov/unit }

CopilotAIApr 26, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

continue-on-error on the download-artifact step lets the job proceed, but the later merge script still assumes cov/unit/*.info exists (files=(cov/unit/*.info) + cp "${files[0]}" ...). When the unit artifact is missing, Bash will keep the literal glob, causing lcov-result-merger/cp to fail and the subsequent upload step to be skipped. Please make the merge step tolerate missing/empty artifacts (e.g., enable nullglob and build the files array only from existing matches, or explicitly handle the empty case).

Copilot uses AI. Check for mistakes.
@moonming
moonming merged commit 8f5e403 into mainApr 26, 2026
7 of 10 checks passed
@moonming
moonming deleted the fix/coverage-gate-soft branch April 26, 2026 04:38
moonming added a commit that referenced this pull request Apr 26, 2026
…42)
The Packages spending limit on the moonming account was raised from
$0 to $5/mo (artifact storage is billed under the Packages SKU, not
Actions). Verified by re-running run 24948385951: build-ui's
upload-artifact step no longer reports "Artifact storage quota has
been hit", and downstream build-aisix can now download ui-dist.
Reverts the four `continue-on-error` mitigations added by:
- #40: rust-unit's coverage-unit upload-artifact
build-ui's ui-dist upload-artifact
build-bin (build-aisix) job-level
- #41: coverage-gate job-level
coverage-gate's coverage-unit download-artifact
Preserves the two pre-existing `continue-on-error` markers that
predate the quota outage:
- e2e job-level (etcd service startup / undici flake)
- coverage-gate's coverage-e2e download-artifact (e2e produces no
coverage when its tests don't run)
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@moonming
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

ci: soft-fail coverage-gate while artifact quota persists - #41

Merged
moonming merged 1 commit into
mainfrom
fix/coverage-gate-soft
Apr 26, 2026
Merged

ci: soft-fail coverage-gate while artifact quota persists#41
moonming merged 1 commit into
mainfrom
fix/coverage-gate-soft

Conversation

@moonming

Copy link
Copy Markdown
Member

Summary

main CI is currently red on commit 6bf6227 because the `coverage-gate` job fails when its first `download-artifact` (coverage-unit) can't find an artifact. That artifact's upload was already soft-failed on the rust-unit job by PR #40 due to the GitHub Actions storage quota outage. The job-level `continue-on-error` was missed on coverage-gate so the workflow conclusion still rolls up to failure.

The coverage-gate threshold check is already a soft gate (the bash explicitly `exit 0`s even when below threshold; the comment says "soft during scaffold milestones; flip to `exit 1` at PR #5"). Aligning the job-level setting with that documented intent.

Changes

  • `continue-on-error: true` on the coverage-gate job
  • `continue-on-error: true` on the first `download-artifact` step (coverage-unit) so the merge step still runs when only e2e coverage is present

Test plan

After PR #40, the workflow conclusion is still 'failure' because the
coverage-gate job fails when its first download-artifact (coverage-unit)
can't find an artifact — that artifact's upload is currently soft-failed
on the rust-unit job due to the GH Actions storage quota outage.
The coverage-gate threshold check itself is already a soft gate (the
bash exits 0 even on below-threshold; see comment on the merge step).
Align the job-level setting with that intent: continue-on-error so a
failure doesn't make the whole workflow red. Also mark the first
download-artifact step continue-on-error so missing input doesn't
prevent the threshold step (which already tolerates an empty cov/e2e
directory).
Revert with the other quota mitigations once GH storage usage refreshes
or the quota is raised.
CopilotAI review requested due to automatic review settings April 26, 2026 04:33

CopilotAI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adjusts CI’s advisory coverage gate to avoid failing the overall workflow while GitHub Actions artifact uploads/downloads are intermittently failing due to the org storage quota outage.

Changes:

  • Marks the coverage-gate job as continue-on-error: true so it won’t fail the workflow conclusion.
  • Soft-fails the coverage-unit artifact download step so the job can proceed even when that artifact is missing.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +217 to +220
# workflow when coverage-gate fails — especially while the artifact
# storage quota outage prevents the upstream coverage-unit upload.
# Revert when the gate is flipped from advisory to gating (PR #5).
continue-on-error: true

CopilotAIApr 26, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The new comment says to “Revert when the gate is flipped … (PR #5)”, but PR #5 (per this PR’s metadata) is about server startup/health listeners and doesn’t appear related to coverage gating. Consider removing the PR reference or linking to the correct tracking issue/PR so future readers know when to revert.

Copilot uses AI. Check for mistakes.
Comment on lines 223 to 225
- uses: actions/download-artifact@v4
continue-on-error: true
with: { name: coverage-unit, path: cov/unit }

CopilotAIApr 26, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

continue-on-error on the download-artifact step lets the job proceed, but the later merge script still assumes cov/unit/*.info exists (files=(cov/unit/*.info) + cp "${files[0]}" ...). When the unit artifact is missing, Bash will keep the literal glob, causing lcov-result-merger/cp to fail and the subsequent upload step to be skipped. Please make the merge step tolerate missing/empty artifacts (e.g., enable nullglob and build the files array only from existing matches, or explicitly handle the empty case).

Copilot uses AI. Check for mistakes.
@moonming
moonming merged commit 8f5e403 into mainApr 26, 2026
7 of 10 checks passed
@moonming
moonming deleted the fix/coverage-gate-soft branch April 26, 2026 04:38
moonming added a commit that referenced this pull request Apr 26, 2026
…42)
The Packages spending limit on the moonming account was raised from
$0 to $5/mo (artifact storage is billed under the Packages SKU, not
Actions). Verified by re-running run 24948385951: build-ui's
upload-artifact step no longer reports "Artifact storage quota has
been hit", and downstream build-aisix can now download ui-dist.
Reverts the four `continue-on-error` mitigations added by:
- #40: rust-unit's coverage-unit upload-artifact
build-ui's ui-dist upload-artifact
build-bin (build-aisix) job-level
- #41: coverage-gate job-level
coverage-gate's coverage-unit download-artifact
Preserves the two pre-existing `continue-on-error` markers that
predate the quota outage:
- e2e job-level (etcd service startup / undici flake)
- coverage-gate's coverage-e2e download-artifact (e2e produces no
coverage when its tests don't run)
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@moonming
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

ci: soft-fail coverage-gate while artifact quota persists - #41

Merged
moonming merged 1 commit into
mainfrom
fix/coverage-gate-soft
Apr 26, 2026
Merged

ci: soft-fail coverage-gate while artifact quota persists#41
moonming merged 1 commit into
mainfrom
fix/coverage-gate-soft

Conversation

@moonming

Copy link
Copy Markdown
Member

Summary

main CI is currently red on commit 6bf6227 because the `coverage-gate` job fails when its first `download-artifact` (coverage-unit) can't find an artifact. That artifact's upload was already soft-failed on the rust-unit job by PR #40 due to the GitHub Actions storage quota outage. The job-level `continue-on-error` was missed on coverage-gate so the workflow conclusion still rolls up to failure.

The coverage-gate threshold check is already a soft gate (the bash explicitly `exit 0`s even when below threshold; the comment says "soft during scaffold milestones; flip to `exit 1` at PR #5"). Aligning the job-level setting with that documented intent.

Changes

  • `continue-on-error: true` on the coverage-gate job
  • `continue-on-error: true` on the first `download-artifact` step (coverage-unit) so the merge step still runs when only e2e coverage is present

Test plan

After PR #40, the workflow conclusion is still 'failure' because the
coverage-gate job fails when its first download-artifact (coverage-unit)
can't find an artifact — that artifact's upload is currently soft-failed
on the rust-unit job due to the GH Actions storage quota outage.
The coverage-gate threshold check itself is already a soft gate (the
bash exits 0 even on below-threshold; see comment on the merge step).
Align the job-level setting with that intent: continue-on-error so a
failure doesn't make the whole workflow red. Also mark the first
download-artifact step continue-on-error so missing input doesn't
prevent the threshold step (which already tolerates an empty cov/e2e
directory).
Revert with the other quota mitigations once GH storage usage refreshes
or the quota is raised.
CopilotAI review requested due to automatic review settings April 26, 2026 04:33

CopilotAI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adjusts CI’s advisory coverage gate to avoid failing the overall workflow while GitHub Actions artifact uploads/downloads are intermittently failing due to the org storage quota outage.

Changes:

  • Marks the coverage-gate job as continue-on-error: true so it won’t fail the workflow conclusion.
  • Soft-fails the coverage-unit artifact download step so the job can proceed even when that artifact is missing.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +217 to +220
# workflow when coverage-gate fails — especially while the artifact
# storage quota outage prevents the upstream coverage-unit upload.
# Revert when the gate is flipped from advisory to gating (PR #5).
continue-on-error: true

CopilotAIApr 26, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The new comment says to “Revert when the gate is flipped … (PR #5)”, but PR #5 (per this PR’s metadata) is about server startup/health listeners and doesn’t appear related to coverage gating. Consider removing the PR reference or linking to the correct tracking issue/PR so future readers know when to revert.

Copilot uses AI. Check for mistakes.
Comment on lines 223 to 225
- uses: actions/download-artifact@v4
continue-on-error: true
with: { name: coverage-unit, path: cov/unit }

CopilotAIApr 26, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

continue-on-error on the download-artifact step lets the job proceed, but the later merge script still assumes cov/unit/*.info exists (files=(cov/unit/*.info) + cp "${files[0]}" ...). When the unit artifact is missing, Bash will keep the literal glob, causing lcov-result-merger/cp to fail and the subsequent upload step to be skipped. Please make the merge step tolerate missing/empty artifacts (e.g., enable nullglob and build the files array only from existing matches, or explicitly handle the empty case).

Copilot uses AI. Check for mistakes.
@moonming
moonming merged commit 8f5e403 into mainApr 26, 2026
7 of 10 checks passed
@moonming
moonming deleted the fix/coverage-gate-soft branch April 26, 2026 04:38
moonming added a commit that referenced this pull request Apr 26, 2026
…42)
The Packages spending limit on the moonming account was raised from
$0 to $5/mo (artifact storage is billed under the Packages SKU, not
Actions). Verified by re-running run 24948385951: build-ui's
upload-artifact step no longer reports "Artifact storage quota has
been hit", and downstream build-aisix can now download ui-dist.
Reverts the four `continue-on-error` mitigations added by:
- #40: rust-unit's coverage-unit upload-artifact
build-ui's ui-dist upload-artifact
build-bin (build-aisix) job-level
- #41: coverage-gate job-level
coverage-gate's coverage-unit download-artifact
Preserves the two pre-existing `continue-on-error` markers that
predate the quota outage:
- e2e job-level (etcd service startup / undici flake)
- coverage-gate's coverage-e2e download-artifact (e2e produces no
coverage when its tests don't run)
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@moonming
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

ci: soft-fail coverage-gate while artifact quota persists - #41

Merged
moonming merged 1 commit into
mainfrom
fix/coverage-gate-soft
Apr 26, 2026
Merged

ci: soft-fail coverage-gate while artifact quota persists#41
moonming merged 1 commit into
mainfrom
fix/coverage-gate-soft

Conversation

@moonming

Copy link
Copy Markdown
Member

Summary

main CI is currently red on commit 6bf6227 because the `coverage-gate` job fails when its first `download-artifact` (coverage-unit) can't find an artifact. That artifact's upload was already soft-failed on the rust-unit job by PR #40 due to the GitHub Actions storage quota outage. The job-level `continue-on-error` was missed on coverage-gate so the workflow conclusion still rolls up to failure.

The coverage-gate threshold check is already a soft gate (the bash explicitly `exit 0`s even when below threshold; the comment says "soft during scaffold milestones; flip to `exit 1` at PR #5"). Aligning the job-level setting with that documented intent.

Changes

  • `continue-on-error: true` on the coverage-gate job
  • `continue-on-error: true` on the first `download-artifact` step (coverage-unit) so the merge step still runs when only e2e coverage is present

Test plan

After PR #40, the workflow conclusion is still 'failure' because the
coverage-gate job fails when its first download-artifact (coverage-unit)
can't find an artifact — that artifact's upload is currently soft-failed
on the rust-unit job due to the GH Actions storage quota outage.
The coverage-gate threshold check itself is already a soft gate (the
bash exits 0 even on below-threshold; see comment on the merge step).
Align the job-level setting with that intent: continue-on-error so a
failure doesn't make the whole workflow red. Also mark the first
download-artifact step continue-on-error so missing input doesn't
prevent the threshold step (which already tolerates an empty cov/e2e
directory).
Revert with the other quota mitigations once GH storage usage refreshes
or the quota is raised.
CopilotAI review requested due to automatic review settings April 26, 2026 04:33

CopilotAI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adjusts CI’s advisory coverage gate to avoid failing the overall workflow while GitHub Actions artifact uploads/downloads are intermittently failing due to the org storage quota outage.

Changes:

  • Marks the coverage-gate job as continue-on-error: true so it won’t fail the workflow conclusion.
  • Soft-fails the coverage-unit artifact download step so the job can proceed even when that artifact is missing.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +217 to +220
# workflow when coverage-gate fails — especially while the artifact
# storage quota outage prevents the upstream coverage-unit upload.
# Revert when the gate is flipped from advisory to gating (PR #5).
continue-on-error: true

CopilotAIApr 26, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The new comment says to “Revert when the gate is flipped … (PR #5)”, but PR #5 (per this PR’s metadata) is about server startup/health listeners and doesn’t appear related to coverage gating. Consider removing the PR reference or linking to the correct tracking issue/PR so future readers know when to revert.

Copilot uses AI. Check for mistakes.
Comment on lines 223 to 225
- uses: actions/download-artifact@v4
continue-on-error: true
with: { name: coverage-unit, path: cov/unit }

CopilotAIApr 26, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

continue-on-error on the download-artifact step lets the job proceed, but the later merge script still assumes cov/unit/*.info exists (files=(cov/unit/*.info) + cp "${files[0]}" ...). When the unit artifact is missing, Bash will keep the literal glob, causing lcov-result-merger/cp to fail and the subsequent upload step to be skipped. Please make the merge step tolerate missing/empty artifacts (e.g., enable nullglob and build the files array only from existing matches, or explicitly handle the empty case).

Copilot uses AI. Check for mistakes.
@moonming
moonming merged commit 8f5e403 into mainApr 26, 2026
7 of 10 checks passed
@moonming
moonming deleted the fix/coverage-gate-soft branch April 26, 2026 04:38
moonming added a commit that referenced this pull request Apr 26, 2026
…42)
The Packages spending limit on the moonming account was raised from
$0 to $5/mo (artifact storage is billed under the Packages SKU, not
Actions). Verified by re-running run 24948385951: build-ui's
upload-artifact step no longer reports "Artifact storage quota has
been hit", and downstream build-aisix can now download ui-dist.
Reverts the four `continue-on-error` mitigations added by:
- #40: rust-unit's coverage-unit upload-artifact
build-ui's ui-dist upload-artifact
build-bin (build-aisix) job-level
- #41: coverage-gate job-level
coverage-gate's coverage-unit download-artifact
Preserves the two pre-existing `continue-on-error` markers that
predate the quota outage:
- e2e job-level (etcd service startup / undici flake)
- coverage-gate's coverage-e2e download-artifact (e2e produces no
coverage when its tests don't run)
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@moonming
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

ci: soft-fail coverage-gate while artifact quota persists - #41

Merged
moonming merged 1 commit into
mainfrom
fix/coverage-gate-soft
Apr 26, 2026
Merged

ci: soft-fail coverage-gate while artifact quota persists#41
moonming merged 1 commit into
mainfrom
fix/coverage-gate-soft

Conversation

@moonming

Copy link
Copy Markdown
Member

Summary

main CI is currently red on commit 6bf6227 because the `coverage-gate` job fails when its first `download-artifact` (coverage-unit) can't find an artifact. That artifact's upload was already soft-failed on the rust-unit job by PR #40 due to the GitHub Actions storage quota outage. The job-level `continue-on-error` was missed on coverage-gate so the workflow conclusion still rolls up to failure.

The coverage-gate threshold check is already a soft gate (the bash explicitly `exit 0`s even when below threshold; the comment says "soft during scaffold milestones; flip to `exit 1` at PR #5"). Aligning the job-level setting with that documented intent.

Changes

  • `continue-on-error: true` on the coverage-gate job
  • `continue-on-error: true` on the first `download-artifact` step (coverage-unit) so the merge step still runs when only e2e coverage is present

Test plan

After PR #40, the workflow conclusion is still 'failure' because the
coverage-gate job fails when its first download-artifact (coverage-unit)
can't find an artifact — that artifact's upload is currently soft-failed
on the rust-unit job due to the GH Actions storage quota outage.
The coverage-gate threshold check itself is already a soft gate (the
bash exits 0 even on below-threshold; see comment on the merge step).
Align the job-level setting with that intent: continue-on-error so a
failure doesn't make the whole workflow red. Also mark the first
download-artifact step continue-on-error so missing input doesn't
prevent the threshold step (which already tolerates an empty cov/e2e
directory).
Revert with the other quota mitigations once GH storage usage refreshes
or the quota is raised.
CopilotAI review requested due to automatic review settings April 26, 2026 04:33

CopilotAI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adjusts CI’s advisory coverage gate to avoid failing the overall workflow while GitHub Actions artifact uploads/downloads are intermittently failing due to the org storage quota outage.

Changes:

  • Marks the coverage-gate job as continue-on-error: true so it won’t fail the workflow conclusion.
  • Soft-fails the coverage-unit artifact download step so the job can proceed even when that artifact is missing.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +217 to +220
# workflow when coverage-gate fails — especially while the artifact
# storage quota outage prevents the upstream coverage-unit upload.
# Revert when the gate is flipped from advisory to gating (PR #5).
continue-on-error: true

CopilotAIApr 26, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The new comment says to “Revert when the gate is flipped … (PR #5)”, but PR #5 (per this PR’s metadata) is about server startup/health listeners and doesn’t appear related to coverage gating. Consider removing the PR reference or linking to the correct tracking issue/PR so future readers know when to revert.

Copilot uses AI. Check for mistakes.
Comment on lines 223 to 225
- uses: actions/download-artifact@v4
continue-on-error: true
with: { name: coverage-unit, path: cov/unit }

CopilotAIApr 26, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

continue-on-error on the download-artifact step lets the job proceed, but the later merge script still assumes cov/unit/*.info exists (files=(cov/unit/*.info) + cp "${files[0]}" ...). When the unit artifact is missing, Bash will keep the literal glob, causing lcov-result-merger/cp to fail and the subsequent upload step to be skipped. Please make the merge step tolerate missing/empty artifacts (e.g., enable nullglob and build the files array only from existing matches, or explicitly handle the empty case).

Copilot uses AI. Check for mistakes.
@moonming
moonming merged commit 8f5e403 into mainApr 26, 2026
7 of 10 checks passed
@moonming
moonming deleted the fix/coverage-gate-soft branch April 26, 2026 04:38
moonming added a commit that referenced this pull request Apr 26, 2026
…42)
The Packages spending limit on the moonming account was raised from
$0 to $5/mo (artifact storage is billed under the Packages SKU, not
Actions). Verified by re-running run 24948385951: build-ui's
upload-artifact step no longer reports "Artifact storage quota has
been hit", and downstream build-aisix can now download ui-dist.
Reverts the four `continue-on-error` mitigations added by:
- #40: rust-unit's coverage-unit upload-artifact
build-ui's ui-dist upload-artifact
build-bin (build-aisix) job-level
- #41: coverage-gate job-level
coverage-gate's coverage-unit download-artifact
Preserves the two pre-existing `continue-on-error` markers that
predate the quota outage:
- e2e job-level (etcd service startup / undici flake)
- coverage-gate's coverage-e2e download-artifact (e2e produces no
coverage when its tests don't run)
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@moonming
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

ci: soft-fail coverage-gate while artifact quota persists - #41

Merged
moonming merged 1 commit into
mainfrom
fix/coverage-gate-soft
Apr 26, 2026
Merged

ci: soft-fail coverage-gate while artifact quota persists#41
moonming merged 1 commit into
mainfrom
fix/coverage-gate-soft

Conversation

@moonming

Copy link
Copy Markdown
Member

Summary

main CI is currently red on commit 6bf6227 because the `coverage-gate` job fails when its first `download-artifact` (coverage-unit) can't find an artifact. That artifact's upload was already soft-failed on the rust-unit job by PR #40 due to the GitHub Actions storage quota outage. The job-level `continue-on-error` was missed on coverage-gate so the workflow conclusion still rolls up to failure.

The coverage-gate threshold check is already a soft gate (the bash explicitly `exit 0`s even when below threshold; the comment says "soft during scaffold milestones; flip to `exit 1` at PR #5"). Aligning the job-level setting with that documented intent.

Changes

  • `continue-on-error: true` on the coverage-gate job
  • `continue-on-error: true` on the first `download-artifact` step (coverage-unit) so the merge step still runs when only e2e coverage is present

Test plan

After PR #40, the workflow conclusion is still 'failure' because the
coverage-gate job fails when its first download-artifact (coverage-unit)
can't find an artifact — that artifact's upload is currently soft-failed
on the rust-unit job due to the GH Actions storage quota outage.
The coverage-gate threshold check itself is already a soft gate (the
bash exits 0 even on below-threshold; see comment on the merge step).
Align the job-level setting with that intent: continue-on-error so a
failure doesn't make the whole workflow red. Also mark the first
download-artifact step continue-on-error so missing input doesn't
prevent the threshold step (which already tolerates an empty cov/e2e
directory).
Revert with the other quota mitigations once GH storage usage refreshes
or the quota is raised.
CopilotAI review requested due to automatic review settings April 26, 2026 04:33

CopilotAI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adjusts CI’s advisory coverage gate to avoid failing the overall workflow while GitHub Actions artifact uploads/downloads are intermittently failing due to the org storage quota outage.

Changes:

  • Marks the coverage-gate job as continue-on-error: true so it won’t fail the workflow conclusion.
  • Soft-fails the coverage-unit artifact download step so the job can proceed even when that artifact is missing.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +217 to +220
# workflow when coverage-gate fails — especially while the artifact
# storage quota outage prevents the upstream coverage-unit upload.
# Revert when the gate is flipped from advisory to gating (PR #5).
continue-on-error: true

CopilotAIApr 26, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The new comment says to “Revert when the gate is flipped … (PR #5)”, but PR #5 (per this PR’s metadata) is about server startup/health listeners and doesn’t appear related to coverage gating. Consider removing the PR reference or linking to the correct tracking issue/PR so future readers know when to revert.

Copilot uses AI. Check for mistakes.
Comment on lines 223 to 225
- uses: actions/download-artifact@v4
continue-on-error: true
with: { name: coverage-unit, path: cov/unit }

CopilotAIApr 26, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

continue-on-error on the download-artifact step lets the job proceed, but the later merge script still assumes cov/unit/*.info exists (files=(cov/unit/*.info) + cp "${files[0]}" ...). When the unit artifact is missing, Bash will keep the literal glob, causing lcov-result-merger/cp to fail and the subsequent upload step to be skipped. Please make the merge step tolerate missing/empty artifacts (e.g., enable nullglob and build the files array only from existing matches, or explicitly handle the empty case).

Copilot uses AI. Check for mistakes.
@moonming
moonming merged commit 8f5e403 into mainApr 26, 2026
7 of 10 checks passed
@moonming
moonming deleted the fix/coverage-gate-soft branch April 26, 2026 04:38
moonming added a commit that referenced this pull request Apr 26, 2026
…42)
The Packages spending limit on the moonming account was raised from
$0 to $5/mo (artifact storage is billed under the Packages SKU, not
Actions). Verified by re-running run 24948385951: build-ui's
upload-artifact step no longer reports "Artifact storage quota has
been hit", and downstream build-aisix can now download ui-dist.
Reverts the four `continue-on-error` mitigations added by:
- #40: rust-unit's coverage-unit upload-artifact
build-ui's ui-dist upload-artifact
build-bin (build-aisix) job-level
- #41: coverage-gate job-level
coverage-gate's coverage-unit download-artifact
Preserves the two pre-existing `continue-on-error` markers that
predate the quota outage:
- e2e job-level (etcd service startup / undici flake)
- coverage-gate's coverage-e2e download-artifact (e2e produces no
coverage when its tests don't run)
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@moonming
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

ci: soft-fail coverage-gate while artifact quota persists - #41

Merged
moonming merged 1 commit into
mainfrom
fix/coverage-gate-soft
Apr 26, 2026
Merged

ci: soft-fail coverage-gate while artifact quota persists#41
moonming merged 1 commit into
mainfrom
fix/coverage-gate-soft

Conversation

@moonming

Copy link
Copy Markdown
Member

Summary

main CI is currently red on commit 6bf6227 because the `coverage-gate` job fails when its first `download-artifact` (coverage-unit) can't find an artifact. That artifact's upload was already soft-failed on the rust-unit job by PR #40 due to the GitHub Actions storage quota outage. The job-level `continue-on-error` was missed on coverage-gate so the workflow conclusion still rolls up to failure.

The coverage-gate threshold check is already a soft gate (the bash explicitly `exit 0`s even when below threshold; the comment says "soft during scaffold milestones; flip to `exit 1` at PR #5"). Aligning the job-level setting with that documented intent.

Changes

  • `continue-on-error: true` on the coverage-gate job
  • `continue-on-error: true` on the first `download-artifact` step (coverage-unit) so the merge step still runs when only e2e coverage is present

Test plan

After PR #40, the workflow conclusion is still 'failure' because the
coverage-gate job fails when its first download-artifact (coverage-unit)
can't find an artifact — that artifact's upload is currently soft-failed
on the rust-unit job due to the GH Actions storage quota outage.
The coverage-gate threshold check itself is already a soft gate (the
bash exits 0 even on below-threshold; see comment on the merge step).
Align the job-level setting with that intent: continue-on-error so a
failure doesn't make the whole workflow red. Also mark the first
download-artifact step continue-on-error so missing input doesn't
prevent the threshold step (which already tolerates an empty cov/e2e
directory).
Revert with the other quota mitigations once GH storage usage refreshes
or the quota is raised.
CopilotAI review requested due to automatic review settings April 26, 2026 04:33

CopilotAI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adjusts CI’s advisory coverage gate to avoid failing the overall workflow while GitHub Actions artifact uploads/downloads are intermittently failing due to the org storage quota outage.

Changes:

  • Marks the coverage-gate job as continue-on-error: true so it won’t fail the workflow conclusion.
  • Soft-fails the coverage-unit artifact download step so the job can proceed even when that artifact is missing.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +217 to +220
# workflow when coverage-gate fails — especially while the artifact
# storage quota outage prevents the upstream coverage-unit upload.
# Revert when the gate is flipped from advisory to gating (PR #5).
continue-on-error: true

CopilotAIApr 26, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The new comment says to “Revert when the gate is flipped … (PR #5)”, but PR #5 (per this PR’s metadata) is about server startup/health listeners and doesn’t appear related to coverage gating. Consider removing the PR reference or linking to the correct tracking issue/PR so future readers know when to revert.

Copilot uses AI. Check for mistakes.
Comment on lines 223 to 225
- uses: actions/download-artifact@v4
continue-on-error: true
with: { name: coverage-unit, path: cov/unit }

CopilotAIApr 26, 2026

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

continue-on-error on the download-artifact step lets the job proceed, but the later merge script still assumes cov/unit/*.info exists (files=(cov/unit/*.info) + cp "${files[0]}" ...). When the unit artifact is missing, Bash will keep the literal glob, causing lcov-result-merger/cp to fail and the subsequent upload step to be skipped. Please make the merge step tolerate missing/empty artifacts (e.g., enable nullglob and build the files array only from existing matches, or explicitly handle the empty case).

Copilot uses AI. Check for mistakes.
@moonming
moonming merged commit 8f5e403 into mainApr 26, 2026
7 of 10 checks passed
@moonming
moonming deleted the fix/coverage-gate-soft branch April 26, 2026 04:38
moonming added a commit that referenced this pull request Apr 26, 2026
…42)
The Packages spending limit on the moonming account was raised from
$0 to $5/mo (artifact storage is billed under the Packages SKU, not
Actions). Verified by re-running run 24948385951: build-ui's
upload-artifact step no longer reports "Artifact storage quota has
been hit", and downstream build-aisix can now download ui-dist.
Reverts the four `continue-on-error` mitigations added by:
- #40: rust-unit's coverage-unit upload-artifact
build-ui's ui-dist upload-artifact
build-bin (build-aisix) job-level
- #41: coverage-gate job-level
coverage-gate's coverage-unit download-artifact
Preserves the two pre-existing `continue-on-error` markers that
predate the quota outage:
- e2e job-level (etcd service startup / undici flake)
- coverage-gate's coverage-e2e download-artifact (e2e produces no
coverage when its tests don't run)
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@moonming