Skip to content

Skip artifact uploads on PR smoke builds to cut quota usage - #179

Merged
ptr727 merged 1 commit into
developfrom
reduce-smoke-artifact-uploads
Jun 22, 2026
Merged

Skip artifact uploads on PR smoke builds to cut quota usage#179
ptr727 merged 1 commit into
developfrom
reduce-smoke-artifact-uploads

Conversation

@ptr727

Copy link
Copy Markdown
Owner

Reduces GitHub Actions artifact-storage quota usage by not uploading artifacts during PR smoke builds, where nothing consumes them.

Problem

test-pull-request.yml runs build-release-task.yml with smoke: true. On smoke, every consumer of build artifacts is skipped - github-release and the executable aggregation job are gated if: !smoke, and publish-pypi runs only on a real publish. But three build tasks still uploaded during smoke, orphaning the artifacts:

TaskArtifactConsumer on smoke
build-nugetlibrary-taskrelease-asset-<branch>-nugetlibrarynone (github-release is !smoke)
build-pypilibrary-taskpypilibrary-build-<branch>none (publish-pypi is publish-only)
build-executable-taskpublish-<branch>-<runtime> (matrix)none (aggregation job is !smoke)

Every target-touching PR therefore churned the artifact quota (they have retention-days: 1 but still count against the live quota for the day). This is the recurring source behind the storage-quota CI failures.

Fix

Gate the uploads on !inputs.smoke so smoke builds still compile/lint/test (full validation) but persist nothing; publish runs (smoke: false) upload and consume exactly as before:

  • build-nugetlibrary-task.yml: add a smoke input; skip the zip + release-asset upload.
  • build-pypilibrary-task.yml: add a smoke input; skip the wheel/sdist upload.
  • build-executable-task.yml: skip the per-runtime publish-* matrix upload (its release-asset-* upload was already !smoke).
  • build-release-task.yml: forward smoke to the nuget and pypi tasks.

build-docker-task.yml creates no artifacts; nothing to change there.

Verification

  • actionlint (Docker) clean; all four workflows parse as YAML; CRLF preserved per .editorconfig.
  • Publish path unaffected: publish-release.yml calls with smoke: false, so release-asset-* / pypilibrary-build-* are uploaded and consumed by github-release / publish-pypi as before.

PR smoke builds (test-pull-request.yml -> build-release-task.yml smoke:true)
uploaded build artifacts that nothing consumes on a PR: the github-release and
executable-aggregation jobs are gated `!smoke`, and publish-pypi runs only on a
real publish. Those orphaned uploads (release-asset-*, pypilibrary-build-*,
publish-*) churn the Actions artifact-storage quota on every target-touching PR.
Gate the uploads on `!inputs.smoke` so smoke builds still compile/lint/test but
persist nothing; publish runs (smoke:false) upload and consume as before:
- build-nugetlibrary-task: add smoke input; skip the zip + release-asset upload.
- build-pypilibrary-task: add smoke input; skip the wheel/sdist upload.
- build-executable-task: skip the per-runtime publish-* matrix upload (the
release-asset upload was already `!smoke`).
- build-release-task: forward smoke to the nuget and pypi tasks.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
CopilotAI review requested due to automatic review settings June 22, 2026 16:08

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

This PR reduces GitHub Actions artifact-storage quota usage by skipping artifact uploads during PR smoke builds, where downstream jobs that would consume those artifacts are intentionally not run.

Changes:

  • Forward smoke into the NuGet and PyPI reusable build tasks from build-release-task.yml.
  • Add smoke inputs to the NuGet/PyPI reusable workflows and gate their artifact upload (and NuGet zip) steps on !inputs.smoke.
  • Gate the per-runtime executable matrix artifact upload on !inputs.smoke (the aggregation job was already smoke-gated).

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated no comments.

FileDescription
.github/workflows/build-release-task.ymlForwards smoke into NuGet/PyPI build tasks so smoke runs can suppress uploads end-to-end.
.github/workflows/build-pypilibrary-task.ymlAdds smoke input and skips wheel/sdist artifact upload during smoke runs.
.github/workflows/build-nugetlibrary-task.ymlAdds smoke input and skips release-asset zip + upload during smoke runs.
.github/workflows/build-executable-task.ymlSkips per-runtime matrix artifact upload during smoke runs to avoid orphaned artifacts.

@ptr727
ptr727 merged commit 402e862 into developJun 22, 2026
9 checks passed
@ptr727
ptr727 deleted the reduce-smoke-artifact-uploads branch June 22, 2026 16:20
ptr727 added a commit that referenced this pull request Jun 22, 2026
… quota (#180)
Promote accumulated `develop` work to `main` so derived repos can
re-sync from `main` (the stable ref) rather than tracking `develop`.
Docs / CI / config only — no `version.json` bump (no functional change).
## Notable contents
- **Consolidate code style + carry contract** (#178, closes#175): one
root `CODESTYLE.md` (General → .NET → Python, droppable sections);
`PyPiLibrary/CODESTYLE.md` removed; `CODESTYLE.md` +
`.vscode/tasks.json` added to the verbatim-carry list; official-tooling
casing (`.Net*` → `.NET*`); clean-compile rule; brownfield/suppression
scope hierarchy; `dependsOrder: sequence` on the `.NET Format` task.
- **Clarify project-rule home + harden Copilot runbook** (#173): project
conventions/API contracts live in `AGENTS.md`, not
`.github/copilot-instructions.md`; a no-inline-comment review is a clean
pass; poll for the auto-review before self-triggering.
- **Cut Actions artifact-storage quota usage** (#179): PR smoke builds
no longer upload artifacts nothing consumes.
- Plus prior develop work: docs/comment cleanup (#167),
`check-upstream-version-task` structured multi-key state (#169) + CRLF
state file (#172), `publish-docker-readme-task`, and routine codegen
updates.
## Notes
- develop → main is **merge-commit only** (preserves develop's commit
list as a second-parent reference on `main`).
- Merging closes#173 and #175 (their `Closes` keywords reach the
default branch).
- After merge, the downstream re-sync issues (each updated with the
current state) can point at `main`.
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

@ptr727
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
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;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} 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 artifact uploads on PR smoke builds to cut quota usage by ptr727 · Pull Request #179 · ptr727/ProjectTemplate · GitHub
Skip to content

Skip artifact uploads on PR smoke builds to cut quota usage - #179

Merged
ptr727 merged 1 commit into
developfrom
reduce-smoke-artifact-uploads
Jun 22, 2026
Merged

Skip artifact uploads on PR smoke builds to cut quota usage#179
ptr727 merged 1 commit into
developfrom
reduce-smoke-artifact-uploads

Conversation

@ptr727

Copy link
Copy Markdown
Owner

Reduces GitHub Actions artifact-storage quota usage by not uploading artifacts during PR smoke builds, where nothing consumes them.

Problem

test-pull-request.yml runs build-release-task.yml with smoke: true. On smoke, every consumer of build artifacts is skipped - github-release and the executable aggregation job are gated if: !smoke, and publish-pypi runs only on a real publish. But three build tasks still uploaded during smoke, orphaning the artifacts:

TaskArtifactConsumer on smoke
build-nugetlibrary-taskrelease-asset-<branch>-nugetlibrarynone (github-release is !smoke)
build-pypilibrary-taskpypilibrary-build-<branch>none (publish-pypi is publish-only)
build-executable-taskpublish-<branch>-<runtime> (matrix)none (aggregation job is !smoke)

Every target-touching PR therefore churned the artifact quota (they have retention-days: 1 but still count against the live quota for the day). This is the recurring source behind the storage-quota CI failures.

Fix

Gate the uploads on !inputs.smoke so smoke builds still compile/lint/test (full validation) but persist nothing; publish runs (smoke: false) upload and consume exactly as before:

  • build-nugetlibrary-task.yml: add a smoke input; skip the zip + release-asset upload.
  • build-pypilibrary-task.yml: add a smoke input; skip the wheel/sdist upload.
  • build-executable-task.yml: skip the per-runtime publish-* matrix upload (its release-asset-* upload was already !smoke).
  • build-release-task.yml: forward smoke to the nuget and pypi tasks.

build-docker-task.yml creates no artifacts; nothing to change there.

Verification

  • actionlint (Docker) clean; all four workflows parse as YAML; CRLF preserved per .editorconfig.
  • Publish path unaffected: publish-release.yml calls with smoke: false, so release-asset-* / pypilibrary-build-* are uploaded and consumed by github-release / publish-pypi as before.

PR smoke builds (test-pull-request.yml -> build-release-task.yml smoke:true)
uploaded build artifacts that nothing consumes on a PR: the github-release and
executable-aggregation jobs are gated `!smoke`, and publish-pypi runs only on a
real publish. Those orphaned uploads (release-asset-*, pypilibrary-build-*,
publish-*) churn the Actions artifact-storage quota on every target-touching PR.
Gate the uploads on `!inputs.smoke` so smoke builds still compile/lint/test but
persist nothing; publish runs (smoke:false) upload and consume as before:
- build-nugetlibrary-task: add smoke input; skip the zip + release-asset upload.
- build-pypilibrary-task: add smoke input; skip the wheel/sdist upload.
- build-executable-task: skip the per-runtime publish-* matrix upload (the
release-asset upload was already `!smoke`).
- build-release-task: forward smoke to the nuget and pypi tasks.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
CopilotAI review requested due to automatic review settings June 22, 2026 16:08

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

This PR reduces GitHub Actions artifact-storage quota usage by skipping artifact uploads during PR smoke builds, where downstream jobs that would consume those artifacts are intentionally not run.

Changes:

  • Forward smoke into the NuGet and PyPI reusable build tasks from build-release-task.yml.
  • Add smoke inputs to the NuGet/PyPI reusable workflows and gate their artifact upload (and NuGet zip) steps on !inputs.smoke.
  • Gate the per-runtime executable matrix artifact upload on !inputs.smoke (the aggregation job was already smoke-gated).

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated no comments.

FileDescription
.github/workflows/build-release-task.ymlForwards smoke into NuGet/PyPI build tasks so smoke runs can suppress uploads end-to-end.
.github/workflows/build-pypilibrary-task.ymlAdds smoke input and skips wheel/sdist artifact upload during smoke runs.
.github/workflows/build-nugetlibrary-task.ymlAdds smoke input and skips release-asset zip + upload during smoke runs.
.github/workflows/build-executable-task.ymlSkips per-runtime matrix artifact upload during smoke runs to avoid orphaned artifacts.

@ptr727
ptr727 merged commit 402e862 into developJun 22, 2026
9 checks passed
@ptr727
ptr727 deleted the reduce-smoke-artifact-uploads branch June 22, 2026 16:20
ptr727 added a commit that referenced this pull request Jun 22, 2026
… quota (#180)
Promote accumulated `develop` work to `main` so derived repos can
re-sync from `main` (the stable ref) rather than tracking `develop`.
Docs / CI / config only — no `version.json` bump (no functional change).
## Notable contents
- **Consolidate code style + carry contract** (#178, closes#175): one
root `CODESTYLE.md` (General → .NET → Python, droppable sections);
`PyPiLibrary/CODESTYLE.md` removed; `CODESTYLE.md` +
`.vscode/tasks.json` added to the verbatim-carry list; official-tooling
casing (`.Net*` → `.NET*`); clean-compile rule; brownfield/suppression
scope hierarchy; `dependsOrder: sequence` on the `.NET Format` task.
- **Clarify project-rule home + harden Copilot runbook** (#173): project
conventions/API contracts live in `AGENTS.md`, not
`.github/copilot-instructions.md`; a no-inline-comment review is a clean
pass; poll for the auto-review before self-triggering.
- **Cut Actions artifact-storage quota usage** (#179): PR smoke builds
no longer upload artifacts nothing consumes.
- Plus prior develop work: docs/comment cleanup (#167),
`check-upstream-version-task` structured multi-key state (#169) + CRLF
state file (#172), `publish-docker-readme-task`, and routine codegen
updates.
## Notes
- develop → main is **merge-commit only** (preserves develop's commit
list as a second-parent reference on `main`).
- Merging closes#173 and #175 (their `Closes` keywords reach the
default branch).
- After merge, the downstream re-sync issues (each updated with the
current state) can point at `main`.
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

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

Skip artifact uploads on PR smoke builds to cut quota usage - #179

Merged
ptr727 merged 1 commit into
developfrom
reduce-smoke-artifact-uploads
Jun 22, 2026
Merged

Skip artifact uploads on PR smoke builds to cut quota usage#179
ptr727 merged 1 commit into
developfrom
reduce-smoke-artifact-uploads

Conversation

@ptr727

Copy link
Copy Markdown
Owner

Reduces GitHub Actions artifact-storage quota usage by not uploading artifacts during PR smoke builds, where nothing consumes them.

Problem

test-pull-request.yml runs build-release-task.yml with smoke: true. On smoke, every consumer of build artifacts is skipped - github-release and the executable aggregation job are gated if: !smoke, and publish-pypi runs only on a real publish. But three build tasks still uploaded during smoke, orphaning the artifacts:

TaskArtifactConsumer on smoke
build-nugetlibrary-taskrelease-asset-<branch>-nugetlibrarynone (github-release is !smoke)
build-pypilibrary-taskpypilibrary-build-<branch>none (publish-pypi is publish-only)
build-executable-taskpublish-<branch>-<runtime> (matrix)none (aggregation job is !smoke)

Every target-touching PR therefore churned the artifact quota (they have retention-days: 1 but still count against the live quota for the day). This is the recurring source behind the storage-quota CI failures.

Fix

Gate the uploads on !inputs.smoke so smoke builds still compile/lint/test (full validation) but persist nothing; publish runs (smoke: false) upload and consume exactly as before:

  • build-nugetlibrary-task.yml: add a smoke input; skip the zip + release-asset upload.
  • build-pypilibrary-task.yml: add a smoke input; skip the wheel/sdist upload.
  • build-executable-task.yml: skip the per-runtime publish-* matrix upload (its release-asset-* upload was already !smoke).
  • build-release-task.yml: forward smoke to the nuget and pypi tasks.

build-docker-task.yml creates no artifacts; nothing to change there.

Verification

  • actionlint (Docker) clean; all four workflows parse as YAML; CRLF preserved per .editorconfig.
  • Publish path unaffected: publish-release.yml calls with smoke: false, so release-asset-* / pypilibrary-build-* are uploaded and consumed by github-release / publish-pypi as before.

PR smoke builds (test-pull-request.yml -> build-release-task.yml smoke:true)
uploaded build artifacts that nothing consumes on a PR: the github-release and
executable-aggregation jobs are gated `!smoke`, and publish-pypi runs only on a
real publish. Those orphaned uploads (release-asset-*, pypilibrary-build-*,
publish-*) churn the Actions artifact-storage quota on every target-touching PR.
Gate the uploads on `!inputs.smoke` so smoke builds still compile/lint/test but
persist nothing; publish runs (smoke:false) upload and consume as before:
- build-nugetlibrary-task: add smoke input; skip the zip + release-asset upload.
- build-pypilibrary-task: add smoke input; skip the wheel/sdist upload.
- build-executable-task: skip the per-runtime publish-* matrix upload (the
release-asset upload was already `!smoke`).
- build-release-task: forward smoke to the nuget and pypi tasks.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
CopilotAI review requested due to automatic review settings June 22, 2026 16:08

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

This PR reduces GitHub Actions artifact-storage quota usage by skipping artifact uploads during PR smoke builds, where downstream jobs that would consume those artifacts are intentionally not run.

Changes:

  • Forward smoke into the NuGet and PyPI reusable build tasks from build-release-task.yml.
  • Add smoke inputs to the NuGet/PyPI reusable workflows and gate their artifact upload (and NuGet zip) steps on !inputs.smoke.
  • Gate the per-runtime executable matrix artifact upload on !inputs.smoke (the aggregation job was already smoke-gated).

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated no comments.

FileDescription
.github/workflows/build-release-task.ymlForwards smoke into NuGet/PyPI build tasks so smoke runs can suppress uploads end-to-end.
.github/workflows/build-pypilibrary-task.ymlAdds smoke input and skips wheel/sdist artifact upload during smoke runs.
.github/workflows/build-nugetlibrary-task.ymlAdds smoke input and skips release-asset zip + upload during smoke runs.
.github/workflows/build-executable-task.ymlSkips per-runtime matrix artifact upload during smoke runs to avoid orphaned artifacts.

@ptr727
ptr727 merged commit 402e862 into developJun 22, 2026
9 checks passed
@ptr727
ptr727 deleted the reduce-smoke-artifact-uploads branch June 22, 2026 16:20
ptr727 added a commit that referenced this pull request Jun 22, 2026
… quota (#180)
Promote accumulated `develop` work to `main` so derived repos can
re-sync from `main` (the stable ref) rather than tracking `develop`.
Docs / CI / config only — no `version.json` bump (no functional change).
## Notable contents
- **Consolidate code style + carry contract** (#178, closes#175): one
root `CODESTYLE.md` (General → .NET → Python, droppable sections);
`PyPiLibrary/CODESTYLE.md` removed; `CODESTYLE.md` +
`.vscode/tasks.json` added to the verbatim-carry list; official-tooling
casing (`.Net*` → `.NET*`); clean-compile rule; brownfield/suppression
scope hierarchy; `dependsOrder: sequence` on the `.NET Format` task.
- **Clarify project-rule home + harden Copilot runbook** (#173): project
conventions/API contracts live in `AGENTS.md`, not
`.github/copilot-instructions.md`; a no-inline-comment review is a clean
pass; poll for the auto-review before self-triggering.
- **Cut Actions artifact-storage quota usage** (#179): PR smoke builds
no longer upload artifacts nothing consumes.
- Plus prior develop work: docs/comment cleanup (#167),
`check-upstream-version-task` structured multi-key state (#169) + CRLF
state file (#172), `publish-docker-readme-task`, and routine codegen
updates.
## Notes
- develop → main is **merge-commit only** (preserves develop's commit
list as a second-parent reference on `main`).
- Merging closes#173 and #175 (their `Closes` keywords reach the
default branch).
- After merge, the downstream re-sync issues (each updated with the
current state) can point at `main`.
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

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

Skip artifact uploads on PR smoke builds to cut quota usage - #179

Merged
ptr727 merged 1 commit into
developfrom
reduce-smoke-artifact-uploads
Jun 22, 2026
Merged

Skip artifact uploads on PR smoke builds to cut quota usage#179
ptr727 merged 1 commit into
developfrom
reduce-smoke-artifact-uploads

Conversation

@ptr727

Copy link
Copy Markdown
Owner

Reduces GitHub Actions artifact-storage quota usage by not uploading artifacts during PR smoke builds, where nothing consumes them.

Problem

test-pull-request.yml runs build-release-task.yml with smoke: true. On smoke, every consumer of build artifacts is skipped - github-release and the executable aggregation job are gated if: !smoke, and publish-pypi runs only on a real publish. But three build tasks still uploaded during smoke, orphaning the artifacts:

TaskArtifactConsumer on smoke
build-nugetlibrary-taskrelease-asset-<branch>-nugetlibrarynone (github-release is !smoke)
build-pypilibrary-taskpypilibrary-build-<branch>none (publish-pypi is publish-only)
build-executable-taskpublish-<branch>-<runtime> (matrix)none (aggregation job is !smoke)

Every target-touching PR therefore churned the artifact quota (they have retention-days: 1 but still count against the live quota for the day). This is the recurring source behind the storage-quota CI failures.

Fix

Gate the uploads on !inputs.smoke so smoke builds still compile/lint/test (full validation) but persist nothing; publish runs (smoke: false) upload and consume exactly as before:

  • build-nugetlibrary-task.yml: add a smoke input; skip the zip + release-asset upload.
  • build-pypilibrary-task.yml: add a smoke input; skip the wheel/sdist upload.
  • build-executable-task.yml: skip the per-runtime publish-* matrix upload (its release-asset-* upload was already !smoke).
  • build-release-task.yml: forward smoke to the nuget and pypi tasks.

build-docker-task.yml creates no artifacts; nothing to change there.

Verification

  • actionlint (Docker) clean; all four workflows parse as YAML; CRLF preserved per .editorconfig.
  • Publish path unaffected: publish-release.yml calls with smoke: false, so release-asset-* / pypilibrary-build-* are uploaded and consumed by github-release / publish-pypi as before.

PR smoke builds (test-pull-request.yml -> build-release-task.yml smoke:true)
uploaded build artifacts that nothing consumes on a PR: the github-release and
executable-aggregation jobs are gated `!smoke`, and publish-pypi runs only on a
real publish. Those orphaned uploads (release-asset-*, pypilibrary-build-*,
publish-*) churn the Actions artifact-storage quota on every target-touching PR.
Gate the uploads on `!inputs.smoke` so smoke builds still compile/lint/test but
persist nothing; publish runs (smoke:false) upload and consume as before:
- build-nugetlibrary-task: add smoke input; skip the zip + release-asset upload.
- build-pypilibrary-task: add smoke input; skip the wheel/sdist upload.
- build-executable-task: skip the per-runtime publish-* matrix upload (the
release-asset upload was already `!smoke`).
- build-release-task: forward smoke to the nuget and pypi tasks.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
CopilotAI review requested due to automatic review settings June 22, 2026 16:08

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

This PR reduces GitHub Actions artifact-storage quota usage by skipping artifact uploads during PR smoke builds, where downstream jobs that would consume those artifacts are intentionally not run.

Changes:

  • Forward smoke into the NuGet and PyPI reusable build tasks from build-release-task.yml.
  • Add smoke inputs to the NuGet/PyPI reusable workflows and gate their artifact upload (and NuGet zip) steps on !inputs.smoke.
  • Gate the per-runtime executable matrix artifact upload on !inputs.smoke (the aggregation job was already smoke-gated).

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated no comments.

FileDescription
.github/workflows/build-release-task.ymlForwards smoke into NuGet/PyPI build tasks so smoke runs can suppress uploads end-to-end.
.github/workflows/build-pypilibrary-task.ymlAdds smoke input and skips wheel/sdist artifact upload during smoke runs.
.github/workflows/build-nugetlibrary-task.ymlAdds smoke input and skips release-asset zip + upload during smoke runs.
.github/workflows/build-executable-task.ymlSkips per-runtime matrix artifact upload during smoke runs to avoid orphaned artifacts.

@ptr727
ptr727 merged commit 402e862 into developJun 22, 2026
9 checks passed
@ptr727
ptr727 deleted the reduce-smoke-artifact-uploads branch June 22, 2026 16:20
ptr727 added a commit that referenced this pull request Jun 22, 2026
… quota (#180)
Promote accumulated `develop` work to `main` so derived repos can
re-sync from `main` (the stable ref) rather than tracking `develop`.
Docs / CI / config only — no `version.json` bump (no functional change).
## Notable contents
- **Consolidate code style + carry contract** (#178, closes#175): one
root `CODESTYLE.md` (General → .NET → Python, droppable sections);
`PyPiLibrary/CODESTYLE.md` removed; `CODESTYLE.md` +
`.vscode/tasks.json` added to the verbatim-carry list; official-tooling
casing (`.Net*` → `.NET*`); clean-compile rule; brownfield/suppression
scope hierarchy; `dependsOrder: sequence` on the `.NET Format` task.
- **Clarify project-rule home + harden Copilot runbook** (#173): project
conventions/API contracts live in `AGENTS.md`, not
`.github/copilot-instructions.md`; a no-inline-comment review is a clean
pass; poll for the auto-review before self-triggering.
- **Cut Actions artifact-storage quota usage** (#179): PR smoke builds
no longer upload artifacts nothing consumes.
- Plus prior develop work: docs/comment cleanup (#167),
`check-upstream-version-task` structured multi-key state (#169) + CRLF
state file (#172), `publish-docker-readme-task`, and routine codegen
updates.
## Notes
- develop → main is **merge-commit only** (preserves develop's commit
list as a second-parent reference on `main`).
- Merging closes#173 and #175 (their `Closes` keywords reach the
default branch).
- After merge, the downstream re-sync issues (each updated with the
current state) can point at `main`.
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

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

Skip artifact uploads on PR smoke builds to cut quota usage - #179

Merged
ptr727 merged 1 commit into
developfrom
reduce-smoke-artifact-uploads
Jun 22, 2026
Merged

Skip artifact uploads on PR smoke builds to cut quota usage#179
ptr727 merged 1 commit into
developfrom
reduce-smoke-artifact-uploads

Conversation

@ptr727

Copy link
Copy Markdown
Owner

Reduces GitHub Actions artifact-storage quota usage by not uploading artifacts during PR smoke builds, where nothing consumes them.

Problem

test-pull-request.yml runs build-release-task.yml with smoke: true. On smoke, every consumer of build artifacts is skipped - github-release and the executable aggregation job are gated if: !smoke, and publish-pypi runs only on a real publish. But three build tasks still uploaded during smoke, orphaning the artifacts:

TaskArtifactConsumer on smoke
build-nugetlibrary-taskrelease-asset-<branch>-nugetlibrarynone (github-release is !smoke)
build-pypilibrary-taskpypilibrary-build-<branch>none (publish-pypi is publish-only)
build-executable-taskpublish-<branch>-<runtime> (matrix)none (aggregation job is !smoke)

Every target-touching PR therefore churned the artifact quota (they have retention-days: 1 but still count against the live quota for the day). This is the recurring source behind the storage-quota CI failures.

Fix

Gate the uploads on !inputs.smoke so smoke builds still compile/lint/test (full validation) but persist nothing; publish runs (smoke: false) upload and consume exactly as before:

  • build-nugetlibrary-task.yml: add a smoke input; skip the zip + release-asset upload.
  • build-pypilibrary-task.yml: add a smoke input; skip the wheel/sdist upload.
  • build-executable-task.yml: skip the per-runtime publish-* matrix upload (its release-asset-* upload was already !smoke).
  • build-release-task.yml: forward smoke to the nuget and pypi tasks.

build-docker-task.yml creates no artifacts; nothing to change there.

Verification

  • actionlint (Docker) clean; all four workflows parse as YAML; CRLF preserved per .editorconfig.
  • Publish path unaffected: publish-release.yml calls with smoke: false, so release-asset-* / pypilibrary-build-* are uploaded and consumed by github-release / publish-pypi as before.

PR smoke builds (test-pull-request.yml -> build-release-task.yml smoke:true)
uploaded build artifacts that nothing consumes on a PR: the github-release and
executable-aggregation jobs are gated `!smoke`, and publish-pypi runs only on a
real publish. Those orphaned uploads (release-asset-*, pypilibrary-build-*,
publish-*) churn the Actions artifact-storage quota on every target-touching PR.
Gate the uploads on `!inputs.smoke` so smoke builds still compile/lint/test but
persist nothing; publish runs (smoke:false) upload and consume as before:
- build-nugetlibrary-task: add smoke input; skip the zip + release-asset upload.
- build-pypilibrary-task: add smoke input; skip the wheel/sdist upload.
- build-executable-task: skip the per-runtime publish-* matrix upload (the
release-asset upload was already `!smoke`).
- build-release-task: forward smoke to the nuget and pypi tasks.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
CopilotAI review requested due to automatic review settings June 22, 2026 16:08

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

This PR reduces GitHub Actions artifact-storage quota usage by skipping artifact uploads during PR smoke builds, where downstream jobs that would consume those artifacts are intentionally not run.

Changes:

  • Forward smoke into the NuGet and PyPI reusable build tasks from build-release-task.yml.
  • Add smoke inputs to the NuGet/PyPI reusable workflows and gate their artifact upload (and NuGet zip) steps on !inputs.smoke.
  • Gate the per-runtime executable matrix artifact upload on !inputs.smoke (the aggregation job was already smoke-gated).

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated no comments.

FileDescription
.github/workflows/build-release-task.ymlForwards smoke into NuGet/PyPI build tasks so smoke runs can suppress uploads end-to-end.
.github/workflows/build-pypilibrary-task.ymlAdds smoke input and skips wheel/sdist artifact upload during smoke runs.
.github/workflows/build-nugetlibrary-task.ymlAdds smoke input and skips release-asset zip + upload during smoke runs.
.github/workflows/build-executable-task.ymlSkips per-runtime matrix artifact upload during smoke runs to avoid orphaned artifacts.

@ptr727
ptr727 merged commit 402e862 into developJun 22, 2026
9 checks passed
@ptr727
ptr727 deleted the reduce-smoke-artifact-uploads branch June 22, 2026 16:20
ptr727 added a commit that referenced this pull request Jun 22, 2026
… quota (#180)
Promote accumulated `develop` work to `main` so derived repos can
re-sync from `main` (the stable ref) rather than tracking `develop`.
Docs / CI / config only — no `version.json` bump (no functional change).
## Notable contents
- **Consolidate code style + carry contract** (#178, closes#175): one
root `CODESTYLE.md` (General → .NET → Python, droppable sections);
`PyPiLibrary/CODESTYLE.md` removed; `CODESTYLE.md` +
`.vscode/tasks.json` added to the verbatim-carry list; official-tooling
casing (`.Net*` → `.NET*`); clean-compile rule; brownfield/suppression
scope hierarchy; `dependsOrder: sequence` on the `.NET Format` task.
- **Clarify project-rule home + harden Copilot runbook** (#173): project
conventions/API contracts live in `AGENTS.md`, not
`.github/copilot-instructions.md`; a no-inline-comment review is a clean
pass; poll for the auto-review before self-triggering.
- **Cut Actions artifact-storage quota usage** (#179): PR smoke builds
no longer upload artifacts nothing consumes.
- Plus prior develop work: docs/comment cleanup (#167),
`check-upstream-version-task` structured multi-key state (#169) + CRLF
state file (#172), `publish-docker-readme-task`, and routine codegen
updates.
## Notes
- develop → main is **merge-commit only** (preserves develop's commit
list as a second-parent reference on `main`).
- Merging closes#173 and #175 (their `Closes` keywords reach the
default branch).
- After merge, the downstream re-sync issues (each updated with the
current state) can point at `main`.
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

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

Skip artifact uploads on PR smoke builds to cut quota usage - #179

Merged
ptr727 merged 1 commit into
developfrom
reduce-smoke-artifact-uploads
Jun 22, 2026
Merged

Skip artifact uploads on PR smoke builds to cut quota usage#179
ptr727 merged 1 commit into
developfrom
reduce-smoke-artifact-uploads

Conversation

@ptr727

Copy link
Copy Markdown
Owner

Reduces GitHub Actions artifact-storage quota usage by not uploading artifacts during PR smoke builds, where nothing consumes them.

Problem

test-pull-request.yml runs build-release-task.yml with smoke: true. On smoke, every consumer of build artifacts is skipped - github-release and the executable aggregation job are gated if: !smoke, and publish-pypi runs only on a real publish. But three build tasks still uploaded during smoke, orphaning the artifacts:

TaskArtifactConsumer on smoke
build-nugetlibrary-taskrelease-asset-<branch>-nugetlibrarynone (github-release is !smoke)
build-pypilibrary-taskpypilibrary-build-<branch>none (publish-pypi is publish-only)
build-executable-taskpublish-<branch>-<runtime> (matrix)none (aggregation job is !smoke)

Every target-touching PR therefore churned the artifact quota (they have retention-days: 1 but still count against the live quota for the day). This is the recurring source behind the storage-quota CI failures.

Fix

Gate the uploads on !inputs.smoke so smoke builds still compile/lint/test (full validation) but persist nothing; publish runs (smoke: false) upload and consume exactly as before:

  • build-nugetlibrary-task.yml: add a smoke input; skip the zip + release-asset upload.
  • build-pypilibrary-task.yml: add a smoke input; skip the wheel/sdist upload.
  • build-executable-task.yml: skip the per-runtime publish-* matrix upload (its release-asset-* upload was already !smoke).
  • build-release-task.yml: forward smoke to the nuget and pypi tasks.

build-docker-task.yml creates no artifacts; nothing to change there.

Verification

  • actionlint (Docker) clean; all four workflows parse as YAML; CRLF preserved per .editorconfig.
  • Publish path unaffected: publish-release.yml calls with smoke: false, so release-asset-* / pypilibrary-build-* are uploaded and consumed by github-release / publish-pypi as before.

PR smoke builds (test-pull-request.yml -> build-release-task.yml smoke:true)
uploaded build artifacts that nothing consumes on a PR: the github-release and
executable-aggregation jobs are gated `!smoke`, and publish-pypi runs only on a
real publish. Those orphaned uploads (release-asset-*, pypilibrary-build-*,
publish-*) churn the Actions artifact-storage quota on every target-touching PR.
Gate the uploads on `!inputs.smoke` so smoke builds still compile/lint/test but
persist nothing; publish runs (smoke:false) upload and consume as before:
- build-nugetlibrary-task: add smoke input; skip the zip + release-asset upload.
- build-pypilibrary-task: add smoke input; skip the wheel/sdist upload.
- build-executable-task: skip the per-runtime publish-* matrix upload (the
release-asset upload was already `!smoke`).
- build-release-task: forward smoke to the nuget and pypi tasks.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
CopilotAI review requested due to automatic review settings June 22, 2026 16:08

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

This PR reduces GitHub Actions artifact-storage quota usage by skipping artifact uploads during PR smoke builds, where downstream jobs that would consume those artifacts are intentionally not run.

Changes:

  • Forward smoke into the NuGet and PyPI reusable build tasks from build-release-task.yml.
  • Add smoke inputs to the NuGet/PyPI reusable workflows and gate their artifact upload (and NuGet zip) steps on !inputs.smoke.
  • Gate the per-runtime executable matrix artifact upload on !inputs.smoke (the aggregation job was already smoke-gated).

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated no comments.

FileDescription
.github/workflows/build-release-task.ymlForwards smoke into NuGet/PyPI build tasks so smoke runs can suppress uploads end-to-end.
.github/workflows/build-pypilibrary-task.ymlAdds smoke input and skips wheel/sdist artifact upload during smoke runs.
.github/workflows/build-nugetlibrary-task.ymlAdds smoke input and skips release-asset zip + upload during smoke runs.
.github/workflows/build-executable-task.ymlSkips per-runtime matrix artifact upload during smoke runs to avoid orphaned artifacts.

@ptr727
ptr727 merged commit 402e862 into developJun 22, 2026
9 checks passed
@ptr727
ptr727 deleted the reduce-smoke-artifact-uploads branch June 22, 2026 16:20
ptr727 added a commit that referenced this pull request Jun 22, 2026
… quota (#180)
Promote accumulated `develop` work to `main` so derived repos can
re-sync from `main` (the stable ref) rather than tracking `develop`.
Docs / CI / config only — no `version.json` bump (no functional change).
## Notable contents
- **Consolidate code style + carry contract** (#178, closes#175): one
root `CODESTYLE.md` (General → .NET → Python, droppable sections);
`PyPiLibrary/CODESTYLE.md` removed; `CODESTYLE.md` +
`.vscode/tasks.json` added to the verbatim-carry list; official-tooling
casing (`.Net*` → `.NET*`); clean-compile rule; brownfield/suppression
scope hierarchy; `dependsOrder: sequence` on the `.NET Format` task.
- **Clarify project-rule home + harden Copilot runbook** (#173): project
conventions/API contracts live in `AGENTS.md`, not
`.github/copilot-instructions.md`; a no-inline-comment review is a clean
pass; poll for the auto-review before self-triggering.
- **Cut Actions artifact-storage quota usage** (#179): PR smoke builds
no longer upload artifacts nothing consumes.
- Plus prior develop work: docs/comment cleanup (#167),
`check-upstream-version-task` structured multi-key state (#169) + CRLF
state file (#172), `publish-docker-readme-task`, and routine codegen
updates.
## Notes
- develop → main is **merge-commit only** (preserves develop's commit
list as a second-parent reference on `main`).
- Merging closes#173 and #175 (their `Closes` keywords reach the
default branch).
- After merge, the downstream re-sync issues (each updated with the
current state) can point at `main`.
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

@ptr727
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' Skip artifact uploads on PR smoke builds to cut quota usage by ptr727 · Pull Request #179 · ptr727/ProjectTemplate · GitHub
Skip to content

Skip artifact uploads on PR smoke builds to cut quota usage - #179

Merged
ptr727 merged 1 commit into
developfrom
reduce-smoke-artifact-uploads
Jun 22, 2026
Merged

Skip artifact uploads on PR smoke builds to cut quota usage#179
ptr727 merged 1 commit into
developfrom
reduce-smoke-artifact-uploads

Conversation

@ptr727

Copy link
Copy Markdown
Owner

Reduces GitHub Actions artifact-storage quota usage by not uploading artifacts during PR smoke builds, where nothing consumes them.

Problem

test-pull-request.yml runs build-release-task.yml with smoke: true. On smoke, every consumer of build artifacts is skipped - github-release and the executable aggregation job are gated if: !smoke, and publish-pypi runs only on a real publish. But three build tasks still uploaded during smoke, orphaning the artifacts:

TaskArtifactConsumer on smoke
build-nugetlibrary-taskrelease-asset-<branch>-nugetlibrarynone (github-release is !smoke)
build-pypilibrary-taskpypilibrary-build-<branch>none (publish-pypi is publish-only)
build-executable-taskpublish-<branch>-<runtime> (matrix)none (aggregation job is !smoke)

Every target-touching PR therefore churned the artifact quota (they have retention-days: 1 but still count against the live quota for the day). This is the recurring source behind the storage-quota CI failures.

Fix

Gate the uploads on !inputs.smoke so smoke builds still compile/lint/test (full validation) but persist nothing; publish runs (smoke: false) upload and consume exactly as before:

  • build-nugetlibrary-task.yml: add a smoke input; skip the zip + release-asset upload.
  • build-pypilibrary-task.yml: add a smoke input; skip the wheel/sdist upload.
  • build-executable-task.yml: skip the per-runtime publish-* matrix upload (its release-asset-* upload was already !smoke).
  • build-release-task.yml: forward smoke to the nuget and pypi tasks.

build-docker-task.yml creates no artifacts; nothing to change there.

Verification

  • actionlint (Docker) clean; all four workflows parse as YAML; CRLF preserved per .editorconfig.
  • Publish path unaffected: publish-release.yml calls with smoke: false, so release-asset-* / pypilibrary-build-* are uploaded and consumed by github-release / publish-pypi as before.

PR smoke builds (test-pull-request.yml -> build-release-task.yml smoke:true)
uploaded build artifacts that nothing consumes on a PR: the github-release and
executable-aggregation jobs are gated `!smoke`, and publish-pypi runs only on a
real publish. Those orphaned uploads (release-asset-*, pypilibrary-build-*,
publish-*) churn the Actions artifact-storage quota on every target-touching PR.
Gate the uploads on `!inputs.smoke` so smoke builds still compile/lint/test but
persist nothing; publish runs (smoke:false) upload and consume as before:
- build-nugetlibrary-task: add smoke input; skip the zip + release-asset upload.
- build-pypilibrary-task: add smoke input; skip the wheel/sdist upload.
- build-executable-task: skip the per-runtime publish-* matrix upload (the
release-asset upload was already `!smoke`).
- build-release-task: forward smoke to the nuget and pypi tasks.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
CopilotAI review requested due to automatic review settings June 22, 2026 16:08

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

This PR reduces GitHub Actions artifact-storage quota usage by skipping artifact uploads during PR smoke builds, where downstream jobs that would consume those artifacts are intentionally not run.

Changes:

  • Forward smoke into the NuGet and PyPI reusable build tasks from build-release-task.yml.
  • Add smoke inputs to the NuGet/PyPI reusable workflows and gate their artifact upload (and NuGet zip) steps on !inputs.smoke.
  • Gate the per-runtime executable matrix artifact upload on !inputs.smoke (the aggregation job was already smoke-gated).

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated no comments.

FileDescription
.github/workflows/build-release-task.ymlForwards smoke into NuGet/PyPI build tasks so smoke runs can suppress uploads end-to-end.
.github/workflows/build-pypilibrary-task.ymlAdds smoke input and skips wheel/sdist artifact upload during smoke runs.
.github/workflows/build-nugetlibrary-task.ymlAdds smoke input and skips release-asset zip + upload during smoke runs.
.github/workflows/build-executable-task.ymlSkips per-runtime matrix artifact upload during smoke runs to avoid orphaned artifacts.

@ptr727
ptr727 merged commit 402e862 into developJun 22, 2026
9 checks passed
@ptr727
ptr727 deleted the reduce-smoke-artifact-uploads branch June 22, 2026 16:20
ptr727 added a commit that referenced this pull request Jun 22, 2026
… quota (#180)
Promote accumulated `develop` work to `main` so derived repos can
re-sync from `main` (the stable ref) rather than tracking `develop`.
Docs / CI / config only — no `version.json` bump (no functional change).
## Notable contents
- **Consolidate code style + carry contract** (#178, closes#175): one
root `CODESTYLE.md` (General → .NET → Python, droppable sections);
`PyPiLibrary/CODESTYLE.md` removed; `CODESTYLE.md` +
`.vscode/tasks.json` added to the verbatim-carry list; official-tooling
casing (`.Net*` → `.NET*`); clean-compile rule; brownfield/suppression
scope hierarchy; `dependsOrder: sequence` on the `.NET Format` task.
- **Clarify project-rule home + harden Copilot runbook** (#173): project
conventions/API contracts live in `AGENTS.md`, not
`.github/copilot-instructions.md`; a no-inline-comment review is a clean
pass; poll for the auto-review before self-triggering.
- **Cut Actions artifact-storage quota usage** (#179): PR smoke builds
no longer upload artifacts nothing consumes.
- Plus prior develop work: docs/comment cleanup (#167),
`check-upstream-version-task` structured multi-key state (#169) + CRLF
state file (#172), `publish-docker-readme-task`, and routine codegen
updates.
## Notes
- develop → main is **merge-commit only** (preserves develop's commit
list as a second-parent reference on `main`).
- Merging closes#173 and #175 (their `Closes` keywords reach the
default branch).
- After merge, the downstream re-sync issues (each updated with the
current state) can point at `main`.
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

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

Skip artifact uploads on PR smoke builds to cut quota usage - #179

Merged
ptr727 merged 1 commit into
developfrom
reduce-smoke-artifact-uploads
Jun 22, 2026
Merged

Skip artifact uploads on PR smoke builds to cut quota usage#179
ptr727 merged 1 commit into
developfrom
reduce-smoke-artifact-uploads

Conversation

@ptr727

Copy link
Copy Markdown
Owner

Reduces GitHub Actions artifact-storage quota usage by not uploading artifacts during PR smoke builds, where nothing consumes them.

Problem

test-pull-request.yml runs build-release-task.yml with smoke: true. On smoke, every consumer of build artifacts is skipped - github-release and the executable aggregation job are gated if: !smoke, and publish-pypi runs only on a real publish. But three build tasks still uploaded during smoke, orphaning the artifacts:

TaskArtifactConsumer on smoke
build-nugetlibrary-taskrelease-asset-<branch>-nugetlibrarynone (github-release is !smoke)
build-pypilibrary-taskpypilibrary-build-<branch>none (publish-pypi is publish-only)
build-executable-taskpublish-<branch>-<runtime> (matrix)none (aggregation job is !smoke)

Every target-touching PR therefore churned the artifact quota (they have retention-days: 1 but still count against the live quota for the day). This is the recurring source behind the storage-quota CI failures.

Fix

Gate the uploads on !inputs.smoke so smoke builds still compile/lint/test (full validation) but persist nothing; publish runs (smoke: false) upload and consume exactly as before:

  • build-nugetlibrary-task.yml: add a smoke input; skip the zip + release-asset upload.
  • build-pypilibrary-task.yml: add a smoke input; skip the wheel/sdist upload.
  • build-executable-task.yml: skip the per-runtime publish-* matrix upload (its release-asset-* upload was already !smoke).
  • build-release-task.yml: forward smoke to the nuget and pypi tasks.

build-docker-task.yml creates no artifacts; nothing to change there.

Verification

  • actionlint (Docker) clean; all four workflows parse as YAML; CRLF preserved per .editorconfig.
  • Publish path unaffected: publish-release.yml calls with smoke: false, so release-asset-* / pypilibrary-build-* are uploaded and consumed by github-release / publish-pypi as before.

PR smoke builds (test-pull-request.yml -> build-release-task.yml smoke:true)
uploaded build artifacts that nothing consumes on a PR: the github-release and
executable-aggregation jobs are gated `!smoke`, and publish-pypi runs only on a
real publish. Those orphaned uploads (release-asset-*, pypilibrary-build-*,
publish-*) churn the Actions artifact-storage quota on every target-touching PR.
Gate the uploads on `!inputs.smoke` so smoke builds still compile/lint/test but
persist nothing; publish runs (smoke:false) upload and consume as before:
- build-nugetlibrary-task: add smoke input; skip the zip + release-asset upload.
- build-pypilibrary-task: add smoke input; skip the wheel/sdist upload.
- build-executable-task: skip the per-runtime publish-* matrix upload (the
release-asset upload was already `!smoke`).
- build-release-task: forward smoke to the nuget and pypi tasks.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
CopilotAI review requested due to automatic review settings June 22, 2026 16:08

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

This PR reduces GitHub Actions artifact-storage quota usage by skipping artifact uploads during PR smoke builds, where downstream jobs that would consume those artifacts are intentionally not run.

Changes:

  • Forward smoke into the NuGet and PyPI reusable build tasks from build-release-task.yml.
  • Add smoke inputs to the NuGet/PyPI reusable workflows and gate their artifact upload (and NuGet zip) steps on !inputs.smoke.
  • Gate the per-runtime executable matrix artifact upload on !inputs.smoke (the aggregation job was already smoke-gated).

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated no comments.

FileDescription
.github/workflows/build-release-task.ymlForwards smoke into NuGet/PyPI build tasks so smoke runs can suppress uploads end-to-end.
.github/workflows/build-pypilibrary-task.ymlAdds smoke input and skips wheel/sdist artifact upload during smoke runs.
.github/workflows/build-nugetlibrary-task.ymlAdds smoke input and skips release-asset zip + upload during smoke runs.
.github/workflows/build-executable-task.ymlSkips per-runtime matrix artifact upload during smoke runs to avoid orphaned artifacts.

@ptr727
ptr727 merged commit 402e862 into developJun 22, 2026
9 checks passed
@ptr727
ptr727 deleted the reduce-smoke-artifact-uploads branch June 22, 2026 16:20
ptr727 added a commit that referenced this pull request Jun 22, 2026
… quota (#180)
Promote accumulated `develop` work to `main` so derived repos can
re-sync from `main` (the stable ref) rather than tracking `develop`.
Docs / CI / config only — no `version.json` bump (no functional change).
## Notable contents
- **Consolidate code style + carry contract** (#178, closes#175): one
root `CODESTYLE.md` (General → .NET → Python, droppable sections);
`PyPiLibrary/CODESTYLE.md` removed; `CODESTYLE.md` +
`.vscode/tasks.json` added to the verbatim-carry list; official-tooling
casing (`.Net*` → `.NET*`); clean-compile rule; brownfield/suppression
scope hierarchy; `dependsOrder: sequence` on the `.NET Format` task.
- **Clarify project-rule home + harden Copilot runbook** (#173): project
conventions/API contracts live in `AGENTS.md`, not
`.github/copilot-instructions.md`; a no-inline-comment review is a clean
pass; poll for the auto-review before self-triggering.
- **Cut Actions artifact-storage quota usage** (#179): PR smoke builds
no longer upload artifacts nothing consumes.
- Plus prior develop work: docs/comment cleanup (#167),
`check-upstream-version-task` structured multi-key state (#169) + CRLF
state file (#172), `publish-docker-readme-task`, and routine codegen
updates.
## Notes
- develop → main is **merge-commit only** (preserves develop's commit
list as a second-parent reference on `main`).
- Merging closes#173 and #175 (their `Closes` keywords reach the
default branch).
- After merge, the downstream re-sync issues (each updated with the
current state) can point at `main`.
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

@ptr727