Skip to content

Commit 5f46fe0

Browse files
committed
Add enclosing folder for all artifacts, remove requested file and folders from windeployqt output, restructure Windows build and add the .cmd file.
1 parent 0077594 commit 5f46fe0

4 files changed

Lines changed: 87 additions & 23 deletions

File tree

.azure-pipelines/azure-pipelines.yml

Lines changed: 64 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ stages:
8787
imageName: 'windows-2025'
8888
architecture: 'x64'
8989
compiler: 'MSVC'
90-
qt_version: '6.8.3'
90+
qt_version: '6.10.2'
9191
qt_version_major: '6'
9292
qt_modules: 'qtserialport qtmultimedia'
9393
cmake_preset: 'RelWithDebInfo'
@@ -124,11 +124,17 @@ stages:
124124
Write-Host "=== Running windeployqt ==="
125125
$BUILD_DIR = "$(Pipeline.Workspace)/Arduino-Source-Internal/Repository/Public/build/$(cmake_preset)"
126126
$APP_EXE = "$BUILD_DIR/SerialPrograms.exe"
127-
$BUILD_CACHE = "$BUILD_DIR/cache-build"
127+
$BUILD_CACHE = "$BUILD_DIR/cache-build/Binaries64"
128128
$SYMBOLS_CACHE = "$BUILD_DIR/cache-symbols"
129129
New-Item -ItemType Directory -Force -Path $BUILD_CACHE | Out-Null
130130
& "C:/Qt/$(qt_version)/msvc2022_64/bin/windeployqt.exe" --dir "$BUILD_CACHE" --release "$APP_EXE"
131131
New-Item -ItemType Directory -Force -Path $SYMBOLS_CACHE | Out-Null
132+
133+
Write-Host "=== Excluding unnecessary files from deployment ==="
134+
Remove-Item -Path "$BUILD_CACHE/opencv_world4120d.dll" -ErrorAction SilentlyContinue
135+
Remove-Item -Path "$BUILD_CACHE/translations" -Recurse -Force -ErrorAction SilentlyContinue
136+
Remove-Item -Path "$BUILD_CACHE/generic" -Recurse -Force -ErrorAction SilentlyContinue
137+
132138
Write-Host "=== windeployqt complete ==="
133139
displayName: 'Deploy app'
134140
condition: succeeded()
@@ -137,28 +143,65 @@ stages:
137143
echo "=== Copying resources==="
138144
robocopy $(Pipeline.Workspace)/Arduino-Source-Internal/Repository/Public/Packages/Resources $(Pipeline.Workspace)/Arduino-Source-Internal/Repository/Public/build/$(cmake_preset)/cache-build/Resources /s
139145
robocopy $(Pipeline.Workspace)/Arduino-Source-Internal/Repository/Public/Packages/Firmware $(Pipeline.Workspace)/Arduino-Source-Internal/Repository/Public/build/$(cmake_preset)/cache-build/Firmware /s
140-
robocopy $(Pipeline.Workspace)/Arduino-Source-Internal/Repository/Public/build/$(cmake_preset) $(Pipeline.Workspace)/Arduino-Source-Internal/Repository/Public/build/$(cmake_preset)/cache-build/ *.dll
141-
robocopy $(Pipeline.Workspace)/Arduino-Source-Internal/Repository/Public/build/$(cmake_preset) $(Pipeline.Workspace)/Arduino-Source-Internal/Repository/Public/build/$(cmake_preset)/cache-build/ SerialPrograms.exe
146+
robocopy $(Pipeline.Workspace)/Arduino-Source-Internal/Repository/Public/build/$(cmake_preset) $(Pipeline.Workspace)/Arduino-Source-Internal/Repository/Public/build/$(cmake_preset)/cache-build/Binaries64 *.dll
147+
robocopy $(Pipeline.Workspace)/Arduino-Source-Internal/Repository/Public/build/$(cmake_preset) $(Pipeline.Workspace)/Arduino-Source-Internal/Repository/Public/build/$(cmake_preset)/cache-build/Binaries64 SerialPrograms.exe
142148
robocopy $(Pipeline.Workspace)/Arduino-Source-Internal/Repository/Public/build/$(cmake_preset) $(Pipeline.Workspace)/Arduino-Source-Internal/Repository/Public/build/$(cmake_preset)/cache-symbols/ SerialPrograms.pdb
143149
Write-Host "Robocopy exited with exit code:" $LASTEXITCODE
144150
if ($LASTEXITCODE -eq 1) { exit 0 } else { exit 1 }
145151
displayName: 'Copy resources'
146152
condition: succeeded()
147153
154+
- powershell: |
155+
$BUILD_DIR = "$(Pipeline.Workspace)/Arduino-Source-Internal/Repository/Public/build/$(cmake_preset)"
156+
$BUILD_CACHE = "$BUILD_DIR/cache-build"
157+
158+
$cmdContent = @'
159+
cd %~dp0
160+
161+
if not exist Binaries64\ (
162+
echo.
163+
echo Please unzip the folder before you can use it.
164+
echo.
165+
pause
166+
exit
167+
)
168+
169+
if not exist Binaries64\SerialPrograms.exe (
170+
echo.
171+
echo Binaries\SerialPrograms.exe not found. Did your anti-virus delete it?
172+
echo.
173+
pause
174+
exit
175+
)
176+
177+
start "" Binaries64\SerialPrograms.exe
178+
179+
'@
180+
181+
Set-Content -Path "$BUILD_CACHE/SerialPrograms-Windows.cmd" -Value $cmdContent -Encoding UTF8
182+
Write-Host "=== Created SerialPrograms-Windows.cmd launcher ==="
183+
displayName: 'Create launcher script'
184+
condition: succeeded()
185+
148186
- powershell: |
149187
$root = "$(Pipeline.Workspace)/Arduino-Source-Internal/Repository/Public/build/$(cmake_preset)"
188+
$version = "${{ parameters.versionMajor }}.${{ parameters.versionMinor }}.${{ parameters.versionPatch }}"
189+
$folderName = "SerialPrograms-$version-Windows-x64"
150190
$name = "SerialPrograms-Windows-$(compiler)-$(architecture)"
151191
152192
$cacheArtifactsDir = Join-Path $root "cache-artifacts"
153193
$artifactSubdir = Join-Path $cacheArtifactsDir $name
154194
New-Item -ItemType Directory -Force -Path $artifactSubdir | Out-Null
155195
156196
$temp = Join-Path $root "temp-archive"
157-
New-Item -ItemType Directory -Force -Path $temp | Out-Null
158-
Copy-Item "$root/cache-build/*" $temp -Recurse -Force
197+
$tempFolder = Join-Path $temp $folderName
198+
New-Item -ItemType Directory -Force -Path $tempFolder | Out-Null
199+
Copy-Item "$root/cache-build/*" $tempFolder -Recurse -Force
159200
160-
Compress-Archive -Path $temp/* -DestinationPath "$artifactSubdir/$name.zip"
201+
Compress-Archive -Path $tempFolder -DestinationPath "$artifactSubdir/$name.zip"
161202
Remove-Item $temp -Recurse -Force
203+
204+
Write-Host "=== Created archive with enclosing folder: $folderName ==="
162205
displayName: 'Archive Windows build artifact'
163206
condition: succeeded()
164207
@@ -206,7 +249,7 @@ stages:
206249
imageName: 'ubuntu-24.04'
207250
architecture: 'x64'
208251
compiler: 'GCC'
209-
qt_version: '6.10.0'
252+
qt_version: '6.10.2'
210253
qt_version_major: '6'
211254
qt_modules: 'qtserialport qtmultimedia'
212255
cmake_preset: 'RelWithDebInfo'
@@ -312,9 +355,14 @@ stages:
312355
rm appimagetool-x86_64.AppImage
313356
314357
echo "=== Archive Linux AppImage ==="
358+
VERSION="${{ parameters.versionMajor }}.${{ parameters.versionMinor }}.${{ parameters.versionPatch }}"
359+
FOLDER_NAME="SerialPrograms-$VERSION-Ubuntu-x64"
360+
mkdir -p "$FOLDER_NAME"
315361
chmod +x "SerialPrograms-x86_64.AppImage"
316-
tar -zcvf $(Pipeline.Workspace)/Arduino-Source-Internal/Repository/Public/build/$(cmake_preset)/cache-build/SerialPrograms-Ubuntu-$(compiler)-$(architecture).tar.gz SerialPrograms-x86_64.AppImage
317-
echo "=== AppImage build complete ==="
362+
mv "SerialPrograms-x86_64.AppImage" "$FOLDER_NAME/"
363+
tar -zcvf $(Pipeline.Workspace)/Arduino-Source-Internal/Repository/Public/build/$(cmake_preset)/cache-build/SerialPrograms-Ubuntu-$(compiler)-$(architecture).tar.gz "$FOLDER_NAME"
364+
365+
echo "=== AppImage build complete with enclosing folder: $FOLDER_NAME ==="
318366
displayName: 'Deploy AppImage'
319367
condition: succeeded()
320368
@@ -352,11 +400,11 @@ stages:
352400
imageName: macos-26
353401
architecture: arm64
354402
compiler: Clang
355-
qt_version: '6.9.3'
403+
qt_version: '6.10.2'
356404
qt_version_major: '6'
357405
qt_modules: 'qtserialport qtmultimedia'
358406
cmake_preset: RelWithDebInfo
359-
macos_path: '/opt/Qt/6.9.3/macos/lib/cmake:/opt/Qt/6.9.3/macos/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/opt/homebrew:$PATH'
407+
macos_path: '/opt/Qt/6.10.2/macos/lib/cmake:/opt/Qt/6.10.2/macos/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/opt/homebrew:$PATH'
360408
cmake_version_params: '-DVERSION_MAJOR=${{ parameters.versionMajor }} -DVERSION_MINOR=${{ parameters.versionMinor }} -DVERSION_PATCH=${{ parameters.versionPatch }} -DIS_BETA=${{ lower(eq(parameters.buildType, ''PrivateBeta'')) }}'
361409
cmake_additional_param: '-DPACKAGE_BUILD=true -DUNIX_LINK_TESSERACT:BOOL=true -DIS_AZURE_BUILD=TRUE'
362410
condition: or(eq('${{ parameters.targetOS }}', 'MacOS'), eq('${{ parameters.targetOS }}', 'All'))
@@ -370,11 +418,11 @@ stages:
370418
imageName: macos-15
371419
architecture: x64
372420
compiler: Clang
373-
qt_version: '6.9.3'
421+
qt_version: '6.10.2'
374422
qt_version_major: '6'
375423
qt_modules: 'qtserialport qtmultimedia'
376424
cmake_preset: RelWithDebInfo
377-
macos_path: '/usr/local/Qt/6.9.3/macos/lib/cmake:/usr/local/Qt/6.9.3/macos/bin:/usr/local/bin:/usr/local/sbin:/usr/local:$PATH'
425+
macos_path: '/usr/local/Qt/6.10.2/macos/lib/cmake:/usr/local/Qt/6.10.2/macos/bin:/usr/local/bin:/usr/local/sbin:/usr/local:$PATH'
378426
cmake_version_params: '-DVERSION_MAJOR=${{ parameters.versionMajor }} -DVERSION_MINOR=${{ parameters.versionMinor }} -DVERSION_PATCH=${{ parameters.versionPatch }} -DIS_BETA=${{ lower(eq(parameters.buildType, ''PrivateBeta'')) }}'
379427
cmake_additional_param: '-DPACKAGE_BUILD=true -DUNIX_LINK_TESSERACT:BOOL=true -DIS_AZURE_BUILD=TRUE'
380428
condition: or(eq('${{ parameters.targetOS }}', 'MacOS'), eq('${{ parameters.targetOS }}', 'All'))
@@ -394,7 +442,7 @@ stages:
394442
architecture: arm64
395443
compiler: Clang
396444
cmake_preset: RelWithDebInfo
397-
macos_path: '/opt/Qt/6.9.3/macos/lib/cmake:/opt/Qt/6.9.3/macos/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/opt/homebrew:$PATH'
445+
macos_path: '/opt/Qt/6.10.2/macos/lib/cmake:/opt/Qt/6.10.2/macos/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/opt/homebrew:$PATH'
398446
openssl_pkcs_args: '-legacy'
399447
condition: and(succeeded('MacOS_Build_ARM64'), or(eq('${{ parameters.targetOS }}', 'MacOS'), eq('${{ parameters.targetOS }}', 'All')))
400448

@@ -409,7 +457,7 @@ stages:
409457
architecture: x64
410458
compiler: Clang
411459
cmake_preset: RelWithDebInfo
412-
macos_path: '/usr/local/Qt/6.9.3/macos/lib/cmake:/usr/local/Qt/6.9.3/macos/bin:/usr/local/bin:/usr/local/sbin:/usr/local:$PATH'
460+
macos_path: '/usr/local/Qt/6.10.2/macos/lib/cmake:/usr/local/Qt/6.10.2/macos/bin:/usr/local/bin:/usr/local/sbin:/usr/local:$PATH'
413461
openssl_pkcs_args: '-legacy'
414462
condition: and(succeeded('MacOS_Build_x64'), or(eq('${{ parameters.targetOS }}', 'MacOS'), eq('${{ parameters.targetOS }}', 'All')))
415463

.azure-pipelines/templates/checkout.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ steps:
99
sparseCheckoutPatterns: |
1010
/*
1111
!Repository/Public/*
12-
!Repository/Deployment-SerialPrograms-Qt6.10.0-MSVC2022/
12+
!Repository/Deployment-SerialPrograms-Qt6.10.2-MSVC2022/
1313
!Repository/Deployment-SerialPrograms-Qt6.8.3-MSVC2022/
1414
workspaceRepo: true
1515

.azure-pipelines/templates/macos-build.yml

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -156,10 +156,16 @@ stages:
156156
echo "=== Creating tarballs for build and symbols ==="
157157
mkdir -p "$(Pipeline.Workspace)/Arduino-Source-Internal/Repository/Public/build/$(cmake_preset)/cache-build"
158158
cd "$(Pipeline.Workspace)/Arduino-Source-Internal/Repository/Public/build/$(cmake_preset)"
159-
tar -czf "cache-build/macos-build-${{ parameters.architecture }}.tar.gz" SerialPrograms.app
159+
160+
VERSION="${{ parameters.versionMajor }}.${{ parameters.versionMinor }}.${{ parameters.versionPatch }}"
161+
FOLDER_NAME="SerialPrograms-$VERSION-MacOS-${{ parameters.architecture }}"
162+
mkdir -p "$FOLDER_NAME"
163+
cp -R SerialPrograms.app "$FOLDER_NAME/"
164+
165+
tar -czf "cache-build/macos-build-${{ parameters.architecture }}.tar.gz" "$FOLDER_NAME"
160166
tar -czf "cache-symbols/macos-symbols-${{ parameters.architecture }}.tar.gz" cache-symbols/SerialPrograms.dSYM
161167
162-
echo "Deployment complete for $(architecture)"
168+
echo "Deployment complete for $(architecture) with enclosing folder: $FOLDER_NAME"
163169
displayName: 'Deploy app'
164170
condition: succeeded()
165171

.azure-pipelines/templates/macos-notarize.yml

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -167,12 +167,22 @@ stages:
167167
condition: succeeded()
168168
169169
- script: |
170-
echo "=== Creating a tarball ==="
171-
tar -czf "SerialPrograms-MacOS-$(compiler)-$(architecture).tar.gz" -C "$(Pipeline.Workspace)/Arduino-Source-Internal" "SerialPrograms.app"
170+
set -e
171+
VERSION="${{ parameters.versionMajor }}.${{ parameters.versionMinor }}.${{ parameters.versionPatch }}"
172+
FOLDER_NAME="SerialPrograms-$VERSION-MacOS-${{ parameters.architecture }}"
173+
174+
echo "=== Creating tarball with enclosing folder ==="
175+
cd "$(Pipeline.Workspace)"
176+
mkdir -p "$FOLDER_NAME"
177+
cp -R "Arduino-Source-Internal/SerialPrograms.app" "$FOLDER_NAME/"
178+
tar -czf "SerialPrograms-MacOS-$(compiler)-$(architecture).tar.gz" "$FOLDER_NAME"
179+
172180
echo "=== Creating cache directory and moving tarball ==="
173-
CACHE_DIR="$(Pipeline.Workspace)/Arduino-Source-Internal/cache-notarized"
181+
CACHE_DIR="Arduino-Source-Internal/cache-notarized"
174182
mkdir -p "$CACHE_DIR"
175-
mv "$(Pipeline.Workspace)/Arduino-Source-Internal/SerialPrograms-MacOS-$(compiler)-$(architecture).tar.gz" "$CACHE_DIR/"
183+
mv "SerialPrograms-MacOS-$(compiler)-$(architecture).tar.gz" "$CACHE_DIR/"
184+
185+
echo "=== Tarball created with enclosing folder: $FOLDER_NAME ==="
176186
displayName: 'Create a tarball'
177187
condition: succeeded()
178188

0 commit comments

Comments
 (0)