Skip to content

feat: add GitHub Release publication flow - #3

Merged
Marc-André Moreau (mamoreau-devolutions) merged 5 commits into
masterfrom
copilot/packaging-workflows
Sep 4, 2026
Merged

feat: add GitHub Release publication flow#3
Marc-André Moreau (mamoreau-devolutions) merged 5 commits into
masterfrom
copilot/packaging-workflows

Conversation

@mamoreau-devolutions

@mamoreau-devolutions Marc-André Moreau (mamoreau-devolutions) commented Sep 4, 2026

Copy link
Copy Markdown
Contributor

Summary

Adds a release-only packaging and publishing path for Devolutions Terminal. Regular CI still builds and tests unsigned artifacts; publication happens only on tag or manual dispatch, and assets go straight to GitHub Releases (no OneDrive).

What this includes

  • Release-only workflow job gated on workflow_dispatch or v* tags
  • Windows x64/ARM64 MSIX packages (Devolutions.Terminal_<version>_x64.msix and _arm64.msix) plus a WiX MSI installer
  • Linux x64/ARM64 and macOS ARM64 package artifacts
  • Windows signing on the Linux release runner with Devolutions psign-tool and Azure Artifact Signing (Trusted Signing)
  • Direct gh release upload of signed Windows packages and Linux/macOS archives

Signing model

The private key never lands on the runner. CI downloads psign-tool from Devolutions/psign and signs per-architecture .msix and .msi files in place:

psign-tool --mode portable sign --dmdf <metadata.json> ...

Required secrets:

  • ARTIFACT_SIGNING_ENDPOINT
  • ARTIFACT_SIGNING_ACCOUNT_NAME
  • ARTIFACT_SIGNING_PROFILE_NAME
  • AZURE_TENANT_ID
  • CODE_SIGNING_CLIENT_ID
  • CODE_SIGNING_CLIENT_SECRET

Optional variable:

  • CODE_SIGNING_TIMESTAMP_SERVER (defaults to http://timestamp.acs.microsoft.com/)

Local PFX signing remains available for development dry-runs only.

Notes

  • Windows MSIX output is per-architecture only. No .msixbundle is built or published.
  • The MSIX Publisher in Package.appxmanifest must match the Artifact Signing certificate subject.
  • PR and branch builds stay unsigned and non-publishing.

Validation

  • Downloaded CI artifacts from a successful PR build and validated the unsigned Windows MSIX packages, Linux SHA-256 manifests, and macOS app zip layout.

Add a WiX MSI installer and sign Windows MSIX/MSI packages on the Linux
release runner with Devolutions psign-tool and Azure Artifact Signing,
without materializing a certificate on the runner.
Keep only per-architecture .msix packages for Windows x64 and ARM64.
Harvest the publish layout into GeneratedProductComponents.wxs before
dotnet build so ProductComponents exists at compile time, and fix
PowerShell TrimStart when computing relative paths.
Write-MsiComponents.ps1 is a PowerShell script, so StrictMode throws when
LASTEXITCODE is unset. Rely on the generated WXS existing instead.
@mamoreau-devolutions
Marc-André Moreau (mamoreau-devolutions) merged commit c4d156f into master Sep 4, 2026
24 checks passed
@mamoreau-devolutions
Marc-André Moreau (mamoreau-devolutions) deleted the copilot/packaging-workflows branch September 4, 2026 21:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant