Skip artifact uploads on PR smoke builds to cut quota usage - #179
Merged
Conversation
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>
Contributor
There was a problem hiding this comment.
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
smokeinto the NuGet and PyPI reusable build tasks frombuild-release-task.yml. - Add
smokeinputs 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.
| File | Description |
|---|---|
| .github/workflows/build-release-task.yml | Forwards smoke into NuGet/PyPI build tasks so smoke runs can suppress uploads end-to-end. |
| .github/workflows/build-pypilibrary-task.yml | Adds smoke input and skips wheel/sdist artifact upload during smoke runs. |
| .github/workflows/build-nugetlibrary-task.yml | Adds smoke input and skips release-asset zip + upload during smoke runs. |
| .github/workflows/build-executable-task.yml | Skips per-runtime matrix artifact upload during smoke runs to avoid orphaned artifacts. |
This was referenced Jun 22, 2026
Closed
Closed
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`.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Reduces GitHub Actions artifact-storage quota usage by not uploading artifacts during PR smoke builds, where nothing consumes them.
Problem
test-pull-request.ymlrunsbuild-release-task.ymlwithsmoke: true. On smoke, every consumer of build artifacts is skipped -github-releaseand the executable aggregation job are gatedif: !smoke, andpublish-pypiruns only on a real publish. But three build tasks still uploaded during smoke, orphaning the artifacts:build-nugetlibrary-taskrelease-asset-<branch>-nugetlibrary!smoke)build-pypilibrary-taskpypilibrary-build-<branch>build-executable-taskpublish-<branch>-<runtime>(matrix)!smoke)Every target-touching PR therefore churned the artifact quota (they have
retention-days: 1but 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.smokeso 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 asmokeinput; skip the zip + release-asset upload.build-pypilibrary-task.yml: add asmokeinput; skip the wheel/sdist upload.build-executable-task.yml: skip the per-runtimepublish-*matrix upload (itsrelease-asset-*upload was already!smoke).build-release-task.yml: forwardsmoketo the nuget and pypi tasks.build-docker-task.ymlcreates no artifacts; nothing to change there.Verification
actionlint(Docker) clean; all four workflows parse as YAML; CRLF preserved per.editorconfig.publish-release.ymlcalls withsmoke: false, sorelease-asset-*/pypilibrary-build-*are uploaded and consumed bygithub-release/publish-pypias before.