Skip to content

Decouple GitHub-release assembly from per-target builds - #728

Closed
ptr727 wants to merge 5 commits into
developfrom
feature/727-decouple-release-assets
Closed

Decouple GitHub-release assembly from per-target builds#728
ptr727 wants to merge 5 commits into
developfrom
feature/727-decouple-release-assets

Conversation

@ptr727

@ptr727 ptr727 commented Jun 5, 2026

Copy link
Copy Markdown
Owner

Re-converge with the template change in ptr727/ProjectTemplate#108 (shipped in ProjectTemplate#109).

What

github-release collected the release file by referencing build-executable by its artifact-id output. This switches to the template's release-asset-<branch>-* artifact convention: the executable leaf task uploads release-asset-<branch>-executable, and github-release collects assets by pattern (release-asset-<branch>-*, merge-multiple) instead of naming a build job.

Why

Keeps the release orchestration identical to upstream so it stays in sync, and decouples it from the specific build targets. No behavior change — the same executable .7z lands on the GitHub release.

Changes

  • build-executable-task.yml: rename the release artifact to release-asset-<branch>-executable; drop the now-unused artifact-id outputs.
  • build-release-task.yml: github-release collects assets via pattern download.

actionlint (Docker) is clean on the changed files.

Fixes #727

Mirror ProjectTemplate #108/#109: collect release assets by the
release-asset-<branch>-* artifact convention instead of referencing the
build-executable job by artifact-id, so github-release stays target-
agnostic. Rename the executable release artifact and drop its now-unused
artifact-id outputs.

Fixes #727
Copilot AI review requested due to automatic review settings June 5, 2026 02:24

Copilot AI 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

This PR updates the release workflow to decouple GitHub Release asset collection from specific build jobs, aligning PlexCleaner’s workflows with the upstream ProjectTemplate convention. Instead of downloading artifacts via per-job artifact-id outputs, the release job now downloads all artifacts that match the release-asset-<branch>-* naming pattern.

Changes:

  • Switch build-release-task.yml GitHub Release asset download to pattern: release-asset-${{ inputs.branch }}-* with merge-multiple: true.
  • Rename the executable release artifact in build-executable-task.yml to release-asset-${{ inputs.branch }}-executable.
  • Remove now-unused artifact-id workflow outputs from build-executable-task.yml.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 1 comment.

File Description
.github/workflows/build-release-task.yml Updates GitHub Release job to download release assets by pattern (release-asset-<branch>-*) instead of referencing a specific build job’s artifact output.
.github/workflows/build-executable-task.yml Renames the uploaded executable release artifact to the new release-asset-<branch>-executable convention and drops the unused artifact-id outputs.

Comment thread .github/workflows/build-release-task.yml Outdated
PlexCleaner pins fail_on_unmatched_files: true over ./Publish/*, so an
empty ./Publish fails the release step — the prior comment's 'file-less
release still works' claim (copied from the template, which leaves the
flag default-false) was inaccurate here.

Copilot AI 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

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

Full-file carries from ProjectTemplate template-convergence, changing only
owner/repo placeholders:

- Add .markdownlint-cli2.jsonc; carry .gitattributes (*.sh + Dockerfile +
  Docker/README.m4 LF pins), .editorconfig (whole; repo CA suppressions
  reconciled into the carried [*.cs] block), and CODESTYLE.md (whole).
- Narrow .github/copilot-instructions.md to the template's runbook + inline
  commit/PR-title summary; relocate project architecture and behavioral
  contracts into AGENTS.md.
- AGENTS.md: add PR Review Etiquette and PR Title/Commit Conventions verbatim,
  conform Git and Commit Rules, add a Template Adaptations block.
- merge-bot: pull_request -> pull_request_target, PR-number concurrency,
  opened||reopened gate, add disable-auto-merge-on-maintainer-push (no codegen
  or upstream-version jobs).
- Add cleanup-artifacts to publish-release.yml and test-pull-request.yml; add
  the publish dispatch-from-default guard; add the main-only Verify public
  release version step to build-release-task.yml.
- Converge the m4 Docker-README to publish-docker-readme-task.yml via
  transform-run (replaces build-dockerreadme-task.yml); DOCKER_HUB_ACCESS_TOKEN.
- Carry get-version-task.yml and build-datebadge-task.yml verbatim (nbgv float
  on @master; caller-gated badge); align orchestration action pins.

Workflow YAML and Markdown are normalized to their .editorconfig CRLF ending
as part of the carry; verified content-only via git diff --ignore-cr-at-eol.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@ptr727

ptr727 commented Jun 24, 2026

Copy link
Copy Markdown
Owner Author

Layered a ProjectTemplate hub convergence commit on top of the feature/727 decouple work (which is untouched and correct - it remains the absorb source for the release-asset pattern):

  • Carried verbatim: .markdownlint-cli2.jsonc, .gitattributes (adds *.sh + Dockerfile + Docker/README.m4 LF pins), .editorconfig (whole; PlexCleaner's repo-wide CA suppressions reconciled into the carried [*.cs] block), CODESTYLE.md (whole), get-version-task.yml (nbgv floats @master), build-datebadge-task.yml (caller-gated), publish-docker-readme-task.yml.
  • copilot-instructions.md narrowed to the template's runbook + inline commit/PR-title summary; project architecture relocated into AGENTS.md, which also gains PR Review Etiquette + PR Title/Commit Conventions (verbatim), conformed Git and Commit Rules, and a Template Adaptations block.
  • merge-bot: pull_request -> pull_request_target, PR-number concurrency, opened||reopened gate, new disable-auto-merge-on-maintainer-push job. merge-codegen/merge-upstream-version stay absent (documented).
  • publish-release.yml / test-pull-request.yml: terminal cleanup-artifacts jobs; publish setup dispatch-from-default guard. build-release-task.yml: main-only Verify public release version step.
  • Docker README: m4 render now flows through the canonical publish-docker-readme-task.yml transform-run (replaces the bespoke build-dockerreadme-task.yml); DOCKER_HUB_ACCESS_TOKEN throughout.

Validated: actionlint clean, markdownlint 0 errors, Docker/Dockerfile + README.m4 pinned to LF (EOL-only verified). Held for your end-gate review - no auto-merge.

Pick up template changes since the first fan-out:
- CODESTYLE.md carried verbatim (genericized; .NET project-name
  substance recorded via AGENTS Template Adaptations).
- publish-docker-readme-task.yml re-carried with the manifest/
  transform-artifact enrichment; rewire the m4 render onto
  transform-artifact: versions-main so the task downloads the
  tool-versions artifact, retiring the bespoke gh run download.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings June 24, 2026 16:18
Was LF; normalize to CRLF per the YAML policy (EOL-only).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

Copilot AI 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

Copilot reviewed 16 out of 18 changed files in this pull request and generated 2 comments.

Comment on lines +50 to +54
# nbgv is floated on @master: its tag stream lags master, so Dependabot tag-tracking would propose a downgrade.
# Revisit if dotnet/nbgv resumes regular tagged releases.
- name: Run Nerdbank.GitVersioning tool step
id: nbgv
uses: dotnet/nbgv@master
Comment on lines +48 to +52
if [[ "${{ github.event_name }}" == "workflow_dispatch" \
&& "${{ github.ref_name }}" != "${{ github.event.repository.default_branch }}" ]]; then
echo "::error::Dispatch publish-release from the default branch (${{ github.event.repository.default_branch }}); the matrix builds both branches. Re-dispatch on the default branch."
exit 1
fi
@ptr727

ptr727 commented Jun 24, 2026

Copy link
Copy Markdown
Owner Author

Superseding this PR. The decouple-release-assets work it carried is already on develop (via #757 'Adopt template workflow conventions'), and this branch has fallen well behind develop (missing later source cleanup, ARCHITECTURE.md, and the #749/#746 fixes). Rather than a large conflict-resolution rebase that would add nothing new, PlexCleaner's convergence to the current ProjectTemplate will come via a fresh chore/sync-template branch off develop. Closing as superseded.

@ptr727 ptr727 closed this Jun 24, 2026
Sign up for free to 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