ci: overhaul artifact naming, organization, and x86_64->x64 migration#1763
ci: overhaul artifact naming, organization, and x86_64->x64 migration#1763Benoît Cortier (CBenoit) wants to merge 3 commits intomasterfrom
Conversation
- 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>
There was a problem hiding this comment.
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_64→x64and simplify artifact discovery by using fixed filenames in predictable folders. - Bundle Windows PDBs into per-product
*.symbols.ziparchives and remove bare.exeuploads in the GitHub release. - Add release-time packaging steps for versioned ZIPs (Gateway Linux binary ZIPs, Jetsocat ZIPs) and preserve/upload Debian
.changesfiles.
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:
$TargetFileNameis used to build$TargetPathbut 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
jetsocatbreaks the laterjetsocat-lipojob in this workflow, which still searches forjetsocat_*undermacos/and produces a versionedjetsocat_macOS_<version>_universalbinary. 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
$TargetFileNameis referenced when building$TargetPathbut 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.
There was a problem hiding this comment.
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
$TargetFileNameis 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$TargetPathfor 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:
$TargetFileNameis used to build$TargetPathbut is undefined in the workflow, so this step will fail. Define$TargetFileNameor 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.
<product>/<os>/<arch>/folders; version+arch qualifiers are added only at the final upload step