Skip to content

feat(ci): use Azure Artifact Signing for Windows releases#15201

Merged
Hona merged 14 commits intoanomalyco:devfrom
Hona:feat/windows-trusted-signing
Mar 28, 2026
Merged

feat(ci): use Azure Artifact Signing for Windows releases#15201
Hona merged 14 commits intoanomalyco:devfrom
Hona:feat/windows-trusted-signing

Conversation

@Hona
Copy link
Copy Markdown
Member

@Hona Hona commented Feb 26, 2026

Moves Windows release signing over to Azure Artifact Signing and removes the leftover SignPath bits. The CLI release job now uses the official Azure action, while Tauri and Electron sign the Windows artifacts they actually ship, including the bundled opencode-cli sidecar. It also narrows the Windows artifact flow so signing only touches Windows outputs, fixes the beta cross-repo upload path, and keeps signing on GitHub Actions only.

@Hona Hona force-pushed the feat/windows-trusted-signing branch from 9d63de3 to 582f69e Compare February 26, 2026 11:21
@Hona Hona changed the title fix(ci): sign Windows CLI and desktop builds feat(ci): sign Windows CLI and desktop builds Feb 26, 2026
Bring the Windows Trusted Signing release changes forward onto the latest dev branch, including the new Electron desktop pipeline and release workflow updates.
@Hona Hona added the beta label Mar 27, 2026
Include the ARM64 Windows CLI build in Trusted Signing outputs and route Windows Electron packaging through the signed artifact so beta and production desktop releases ship the expected signed sidecar.
@Hona Hona marked this pull request as ready for review March 27, 2026 20:36
@Hona Hona requested a review from adamdotdevin as a code owner March 27, 2026 20:36
Copilot AI review requested due to automatic review settings March 27, 2026 20:36
Move the repeated Azure Trusted Signing setup and verification into a reusable repo action so the CLI signing job and Windows desktop packaging share the same signing configuration.
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

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 Windows release pipeline to sign both the CLI and desktop artifacts using Azure Trusted Signing, and ensures the signed CLI binaries are reused during desktop packaging and publishing.

Changes:

  • Add a reusable PowerShell script to sign Windows binaries via the Azure Trusted Signing sign tool.
  • Integrate a new sign-cli-windows job into the publish workflow and feed signed Windows CLI artifacts into Tauri/Electron packaging.
  • Configure Tauri Windows bundling to invoke the signing script via signCommand, and update desktop prepare scripts to download a configurable CLI artifact.

Reviewed changes

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

Show a summary per file
File Description
script/sign-windows.ps1 New signing helper that signs one or more binaries using Azure Trusted Signing CLI.
packages/desktop/src-tauri/tauri.prod.conf.json Adds Tauri Windows signCommand to invoke the signing script in prod builds.
packages/desktop/src-tauri/tauri.conf.json Adds Tauri Windows signCommand to invoke the signing script in dev config.
packages/desktop/src-tauri/tauri.beta.conf.json Adds Tauri Windows signCommand to invoke the signing script in beta builds.
packages/desktop/scripts/prepare.ts Makes the downloaded CLI artifact name configurable via OPENCODE_CLI_ARTIFACT.
packages/desktop-electron/scripts/prepare.ts Makes the downloaded CLI artifact name configurable via OPENCODE_CLI_ARTIFACT.
.github/workflows/sign-cli.yml Removes the legacy SignPath-only workflow.
.github/workflows/publish.yml Adds Windows CLI signing job, wires signed artifacts into desktop packaging, and adds signature verification steps.
Comments suppressed due to low confidence (1)

.github/workflows/publish.yml:170

  • The repacked Windows CLI zip archives will likely have a different internal directory layout than the original zips produced by packages/opencode/script/build.ts (which runs zip from inside dist/<target>/bin, resulting in opencode.exe at the archive root). Compress-Archive -Path "opencode-windows-...\bin\*" will typically store paths like opencode-windows-x64\bin\opencode.exe inside the zip, which can break consumers expecting opencode(.exe) at the top level. Repack in a way that preserves the previous archive structure (e.g., run the archive command from within each bin directory or otherwise strip the parent path).
      - sign-cli-windows
      - version
    continue-on-error: false
    strategy:
      fail-fast: false
      matrix:
        settings:

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Drop the leftover SignPath policy now that Windows release signing is handled through Azure Trusted Signing, so the branch no longer carries an unused signing path.
Hona added 2 commits March 28, 2026 06:52
Rename the reusable signing action to Azure Artifact Signing and make the Windows signing helper tolerate unmatched paths until the explicit no-files check runs.
Wire Azure Artifact Signing into the Electron packaging flow so the packaged app and installer executables are signed before publish metadata is generated, and fix the reusable signing action to handle file lists correctly.
Use the app token for cross-repo beta release uploads and update the Windows signing helper to use Azure Artifact Signing with stable single-file argument handling.
Move the custom Windows Electron signing hook under signtoolOptions so electron-builder accepts the config and still signs the packaged app and installer during release builds.
Stop checking the raw Cargo output after bundling and only verify the signed Windows sidecar and NSIS artifacts that Tauri actually ships.
Hona added 3 commits March 28, 2026 09:55
Split the CLI workflow outputs so Windows signing only processes Windows binaries, stop non-Windows desktop jobs from waiting on the Windows signing job, and sign Windows desktop sidecars locally during packaging so release builds still ship signed binaries without the extra artifact handoff.
Keep local desktop dev and packaging flows from invoking Azure Artifact Signing while preserving the GitHub Actions signing path for Tauri and Electron release builds.
Replace the thin repo wrapper with Azure's maintained artifact-signing action for the CLI signing job, inline Windows Azure login in packaging jobs, and move the packaging hook script onto the TrustedSigning module path.
Use Node-compatible environment access in the desktop prepare and sidecar signing paths for the workflow changes added in this branch, while leaving unrelated Bun-specific runtime code untouched.
@Hona Hona changed the title feat(ci): sign Windows CLI and desktop builds feat(ci): use Azure Artifact Signing for Windows releases Mar 28, 2026
@Hona Hona merged commit 82fc493 into anomalyco:dev Mar 28, 2026
10 checks passed
Copilot AI pushed a commit to ian-morgan99/opencode that referenced this pull request Mar 28, 2026
e-n-0 pushed a commit to e-n-0/opencode that referenced this pull request Mar 29, 2026
loocor pushed a commit to loocor/opencode that referenced this pull request Mar 30, 2026
afanty2021 pushed a commit to afanty2021/opencode that referenced this pull request Mar 30, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants