Skip to content

SD - Windows app code signing (vibe-kanban)#4

Merged
mickmister merged 16 commits intodevfrom
vk/2d05-sd-windows-app-c
Mar 23, 2026
Merged

SD - Windows app code signing (vibe-kanban)#4
mickmister merged 16 commits intodevfrom
vk/2d05-sd-windows-app-c

Conversation

@mickmister
Copy link
Member

Implement windows app code signing in the desktop app workflow/action in the ./songdrive-releases repo

Imports a PFX certificate into the Windows certificate store and sets
WINDOWS_CERTIFICATE_THUMBPRINT so Tauri's signtool integration signs
the installer. Secrets WINDOWS_CERTIFICATE and WINDOWS_CERTIFICATE_PASSWORD
are passed through from build_desktop_common.yml.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@mickmister mickmister changed the base branch from main to dev February 20, 2026 08:24
@mickmister mickmister force-pushed the vk/2d05-sd-windows-app-c branch from 93ff60c to a4c41be Compare February 20, 2026 08:24
Vibe Kanban and others added 15 commits February 20, 2026 08:26
Replaces the PFX certificate approach with Azure Trusted Signing via
trusted-signing-cli. Installs the CLI on Windows, passes Azure credentials
as env vars to the Tauri build step, and wires up 6 new secrets:
AZURE_CLIENT_ID, AZURE_CLIENT_SECRET, AZURE_TENANT_ID,
AZURE_SIGNING_ENDPOINT, AZURE_SIGNING_ACCOUNT_NAME,
AZURE_SIGNING_CERT_PROFILE_NAME.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…file inputs

The signCommand in tauri.base.conf.json already has the endpoint, account,
and profile hardcoded. Only AZURE_CLIENT_ID, AZURE_CLIENT_SECRET, and
AZURE_TENANT_ID need to be passed via CI secrets.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Replaces hardcoded values in tauri.base.conf.json with %ENV_VAR% placeholders,
passed through CI as AZURE_SIGNING_ENDPOINT, AZURE_SIGNING_ACCOUNT_NAME,
and AZURE_SIGNING_CERT_PROFILE_NAME secrets.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Sets Azure signing env vars via >> GITHUB_ENV in a dedicated step,
consistent with how Apple signing vars are handled for macOS.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…tibility

windows-latest removed the Windows SDK version that trusted-signing-cli
falls back to for signtool.exe. windows-11-arm has it available out of
the box and is also faster.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
… wildcard

Updates tauri_e2e.yml runner and conditionals, and simplifies
build_desktop_common.yml platform checks to use windows-* wildcard
only, removing the now-redundant windows-latest check.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…est_manifest

- Hardcode endpoint/account/profile in tauri.base.conf.json instead of
  using %ENV_VAR% placeholders which may not expand in Tauri's signCommand
- Remove azure_signing_endpoint/account_name/cert_profile_name inputs/secrets
- Set SIGNTOOL_PATH to known Windows SDK path so trusted-signing-cli can
  locate signtool.exe on windows-latest runners
- Switch runner back to windows-latest
- Disable publish_latest_manifest job for now

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…t.json

- sign_app=true now passes publish_version so extract/stage/manifest steps run
- Added publish_to_r2 input to gate S3 upload and Discord notification
- publish_to_r2 is only true when publish=true or repository_dispatch
- publish_latest_manifest job restored to its original condition (publish only)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Allows triggering a Windows build in isolation without affecting the Mac
app or publishing to R2/latest.json. When sign_app=true, passes a dummy
publish_version so the full extract/stage/manifest pipeline runs.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
When publish=true: uploads to R2, enables tauri updater, and updates
latest.json with Windows-only platform entries. Mac auto-update is
unaffected since this workflow never touches the Mac build.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Fetches the current latest.json from R2 before building, then merges
the new Windows platform entries on top. Mac auto-update entries are
kept intact so Mac users are unaffected.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Replace the separate build_desktop_windows.yml with a platforms input
(all/macos/windows) on build_desktop_all.yml. Uses a dynamic matrix
computed at runtime so only the selected platform(s) are built.

publish_latest_manifest now always fetches and merges the existing
latest.json from R2, preserving entries for platforms not built in
the current run.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@mickmister mickmister merged commit d40d1d8 into dev Mar 23, 2026
1 check failed
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.

1 participant