Skip to content

ci: overhaul artifact naming, organization, and x86_64->x64 migration#1763

Open
Benoît Cortier (CBenoit) wants to merge 3 commits intomasterfrom
ci/overhaul-artifacts-naming
Open

ci: overhaul artifact naming, organization, and x86_64->x64 migration#1763
Benoît Cortier (CBenoit) wants to merge 3 commits intomasterfrom
ci/overhaul-artifacts-naming

Conversation

@CBenoit
Copy link
Copy Markdown
Member

@CBenoit Benoît Cortier (CBenoit) commented Apr 21, 2026

  • Internal artifacts use simple basenames inside <product>/<os>/<arch>/ folders; version+arch qualifiers are added only at the final upload step
  • x86_64 replaced with x64 everywhere except Rust target triples, LLVM artifact names
  • All PDB files bundled into .symbols.zip per product/arch; no bare .pdb in any release
  • Pre-release OneDrive upload now includes Agent Linux DEB/RPM/changes and Jetsocat ZIPs for all platforms
  • Linux gateway binary wrapped in a versioned ZIP for the GitHub release

- Internal artifacts use simple basenames inside <product>/<os>/<arch>/
  folders; version+arch qualifiers are added only at the final upload step
- x86_64 replaced with x64 everywhere except Rust target triples, LLVM
  artifact names, and values that map our x64 label to Rust/Debian/RPM
  conventions; removes all $PublicArch conversion boilerplate
- All PDB files bundled into .symbols.zip per product/arch; no bare .pdb
  in any release
- Pre-release OneDrive upload now includes Agent Linux DEB/RPM/changes
  and Jetsocat ZIPs for all platforms
- Linux gateway binary wrapped in a versioned ZIP for the GitHub release
- .changes files (deb-changes(5)) preserved and uploaded; needed for
  dput/dupload to submit packages to a Debian archive
- fpm output renaming to simple basenames is done in the ci.yml Package
  step call site, not inside tlk.ps1

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
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 refactors CI/release artifact layout and naming to use stable basenames under <product>/<os>/<arch>/ folders, while migrating the “public” architecture label from x86_64 to x64 across workflows (keeping Rust target triples as x86_64).

Changes:

  • Migrate workflow matrices/paths from x86_64x64 and simplify artifact discovery by using fixed filenames in predictable folders.
  • Bundle Windows PDBs into per-product *.symbols.zip archives and remove bare .exe uploads in the GitHub release.
  • Add release-time packaging steps for versioned ZIPs (Gateway Linux binary ZIPs, Jetsocat ZIPs) and preserve/upload Debian .changes files.

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 4 comments.

File Description
ci/tlk.ps1 Updates default arch and architecture mappings/validation to prefer x64.
.github/workflows/ci.yml Updates build matrices and artifact basenames/paths; adds fpm output renaming and OneDrive pre-release packaging.
.github/workflows/package.yml Adjusts signing/symbol zipping to match new stable basenames and x64 folder structure.
.github/workflows/release.yml Switches to folder-based artifact addressing, adds ZIP packaging, and tightens release artifact filtering/renaming.
Comments suppressed due to low confidence (3)

.github/workflows/release.yml:192

  • Same issue as the amd64 block: $TargetFileName is used to build $TargetPath but is not set in this step anymore, which will break the arm64 Docker context preparation.
          $SourcePath = Join-Path devolutions-gateway linux arm64 devolutions-gateway
          $TargetPath = Join-Path $PkgDir $TargetFileName
          Write-Host "SourcePath = $SourcePath"
          Write-Host "TargetPath = $TargetPath"
          Copy-Item -Path $SourcePath -Destination $TargetPath
          chmod +x $TargetPath

.github/workflows/ci.yml:342

  • Changing the jetsocat output name to a bare jetsocat breaks the later jetsocat-lipo job in this workflow, which still searches for jetsocat_* under macos/ and produces a versioned jetsocat_macOS_<version>_universal binary. Update the lipo job to look for the new filenames (and adjust its output name), or keep the versioned/arch-qualified naming at least for the macOS inputs consumed by lipo.
          $StagingPath = Join-Path $Env:RUNNER_TEMP "staging"
          $TargetOutputPath = Join-Path $StagingPath ${{ matrix.os }} ${{ matrix.arch }}
          $ExecutableFileName = 'jetsocat'

          if ($Env:RUNNER_OS -eq "Windows") {
            $ExecutableFileName = "$($ExecutableFileName).exe"
            $Env:CARGO_NO_DEFAULT_FEATURES = "true"

.github/workflows/release.yml:150

  • $TargetFileName is referenced when building $TargetPath but is no longer defined in this step, so the job will fail at runtime. Reintroduce $TargetFileName (e.g., devolutions-gateway) or inline the literal when constructing $TargetPath.
          $SourcePath = Join-Path devolutions-gateway linux x64 devolutions-gateway
          $TargetPath = Join-Path $PkgDir $TargetFileName
          Write-Host "SourcePath = $SourcePath"
          Write-Host "TargetPath = $TargetPath"
          Copy-Item -Path $SourcePath -Destination $TargetPath

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

Comment thread .github/workflows/release.yml
Comment thread .github/workflows/release.yml Outdated
Comment thread .github/workflows/ci.yml
Comment thread .github/workflows/ci.yml Outdated
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

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

Comments suppressed due to low confidence (2)

.github/workflows/release.yml:151

  • $TargetFileName is referenced when computing $TargetPath, but it is no longer defined anywhere in this workflow. This will cause the container job's artifact preparation steps to fail at runtime. Define $TargetFileName (likely 'devolutions-gateway') before use, or inline the filename when building $TargetPath for both amd64 and arm64 contexts.
          $SourcePath = Join-Path devolutions-gateway linux x64 devolutions-gateway
          $TargetPath = Join-Path $PkgDir $TargetFileName
          Write-Host "SourcePath = $SourcePath"
          Write-Host "TargetPath = $TargetPath"
          Copy-Item -Path $SourcePath -Destination $TargetPath
          chmod +x $TargetPath

.github/workflows/release.yml:192

  • Same issue as the amd64 context: $TargetFileName is used to build $TargetPath but is undefined in the workflow, so this step will fail. Define $TargetFileName or replace it with the intended literal filename.
          $SourcePath = Join-Path devolutions-gateway linux arm64 devolutions-gateway
          $TargetPath = Join-Path $PkgDir $TargetFileName
          Write-Host "SourcePath = $SourcePath"
          Write-Host "TargetPath = $TargetPath"
          Copy-Item -Path $SourcePath -Destination $TargetPath
          chmod +x $TargetPath

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

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.

2 participants