You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Simplifies the manual release workflow for this repo's release cadence and makes the artifact action cleaner as a reusable template.
What changed
Collapsed deploy.yml from three jobs into one sequential Release job.
Kept CI packaging parallel, but moved artifact upload out of the composite action and into build.yml.
Changed create-release-artifacts so it only creates release files; callers decide whether to upload them as workflow artifacts or publish them to a GitHub release.
Made WiX setup idempotent with dotnet tool update --global wix --version 4.0.6, so the release job can package both architectures in one job.
Removed the release workflow's cross-job artifact upload/download round trip.
Why
The release workflow is manually triggered and rare, so a sequential flow is easier to read and maintain than a parallel build/package/deploy graph. dotnet publish already builds the app for each architecture, and the release job now runs tests first, then packages x64 and arm64, then creates the release from local publish/*.zip and publish/*.msi files.
CI still validates packaging for each architecture through the existing matrix, and CI remains responsible for uploading those package outputs as workflow artifacts.
Validation
actionlint
git diff --check
dotnet restore
dotnet build -c Release --no-restore
dotnet test -c Release --no-build --no-restore --logger trx --results-directory TestResults
Local sequential x64 and arm64 packaging using the updated WiX setup flow
Three strong reasons to close the change and leave the matrix-based workflow as-is:
The existing workflow uses GitHub Actions the intended way.
Matrix builds are job-level in GitHub Actions, so the original package job with matrix.arch is the cleaner and more idiomatic structure. The simplified version replaces a native matrix with duplicated steps.
It preserves parallel packaging and clearer failures.
With the matrix, x64 and arm64 package jobs can run independently and show separate results. If one architecture fails, it is immediately obvious which one failed. The simplified version runs them serially inside one job.
It keeps permissions narrower and safer.
In the original workflow, only the deploy job needs contents: write; build and package can stay read-only. The simplified single-job version gives write permissions to the whole release job, including checkout, build, and packaging, which is a worse security posture.
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
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.
Summary
Simplifies the manual release workflow for this repo's release cadence and makes the artifact action cleaner as a reusable template.
What changed
deploy.ymlfrom three jobs into one sequentialReleasejob.build.yml.create-release-artifactsso it only creates release files; callers decide whether to upload them as workflow artifacts or publish them to a GitHub release.dotnet tool update --global wix --version 4.0.6, so the release job can package both architectures in one job.Why
The release workflow is manually triggered and rare, so a sequential flow is easier to read and maintain than a parallel build/package/deploy graph.
dotnet publishalready builds the app for each architecture, and the release job now runs tests first, then packages x64 and arm64, then creates the release from localpublish/*.zipandpublish/*.msifiles.CI still validates packaging for each architecture through the existing matrix, and CI remains responsible for uploading those package outputs as workflow artifacts.
Validation
actionlintgit diff --checkdotnet restoredotnet build -c Release --no-restoredotnet test -c Release --no-build --no-restore --logger trx --results-directory TestResults