@@ -157,24 +157,35 @@ stages:
157157 & "C:/Qt/$(qt_version)/msvc2022_64/bin/windeployqt.exe" --dir "$BUILD_CACHE" --release "$APP_EXE"
158158 New-Item -ItemType Directory -Force -Path $SYMBOLS_CACHE | Out-Null
159159
160- Write-Host "=== Excluding unnecessary files from deployment ==="
161- Remove-Item -Path "$BUILD_CACHE/opencv_world4120d.dll" -ErrorAction SilentlyContinue
162- Remove-Item -Path "$BUILD_CACHE/translations" -Recurse -Force -ErrorAction SilentlyContinue
163- Remove-Item -Path "$BUILD_CACHE/generic" -Recurse -Force -ErrorAction SilentlyContinue
164-
165160 Write-Host "=== windeployqt complete ==="
166161 displayName: 'Deploy app'
167162 condition: succeeded()
168163
169164 - powershell : |
170165 echo "=== Copying resources==="
171- robocopy $(Pipeline.Workspace)/Arduino-Source-Internal/Repository/Public/Packages/Resources $(Pipeline.Workspace)/Arduino-Source-Internal/Repository/Public/build/$(cmake_preset)/cache-build/Resources /s
172- robocopy $(Pipeline.Workspace)/Arduino-Source-Internal/Repository/Public/Packages/Firmware $(Pipeline.Workspace)/Arduino-Source-Internal/Repository/Public/build/$(cmake_preset)/cache-build/Firmware /s
173- 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
174- 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
175- 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
176- Write-Host "Robocopy exited with exit code:" $LASTEXITCODE
177- if ($LASTEXITCODE -eq 1) { exit 0 } else { exit 1 }
166+ $PACKAGES_DIR = "$(Pipeline.Workspace)/Arduino-Source-Internal/Repository/Public/Packages"
167+ $BUILD_DIR = "$(Pipeline.Workspace)/Arduino-Source-Internal/Repository/Public/build/$(cmake_preset)"
168+ $BINARIES_DIR = "$BUILD_DIR/cache-build/Binaries64"
169+
170+ function Invoke-Robocopy {
171+ robocopy @args
172+ if ($LASTEXITCODE -ge 8) {
173+ throw "Robocopy failed with exit code: $LASTEXITCODE"
174+ }
175+ }
176+
177+ Invoke-Robocopy $PACKAGES_DIR/Resources $BUILD_DIR/cache-build/Resources /s
178+ Invoke-Robocopy $PACKAGES_DIR/Firmware $BUILD_DIR/cache-build/Firmware /s
179+ Invoke-Robocopy $BUILD_DIR $BINARIES_DIR *.dll
180+ Invoke-Robocopy $BUILD_DIR $BINARIES_DIR SerialPrograms.exe
181+ Invoke-Robocopy $BUILD_DIR $BUILD_DIR/cache-symbols/ SerialPrograms.pdb
182+
183+ Write-Host "=== Excluding unnecessary files from deployment ==="
184+ Remove-Item -Path "$BINARIES_DIR/opencv_world4120d.dll" -ErrorAction SilentlyContinue
185+ Remove-Item -Path "$BINARIES_DIR/translations" -Recurse -Force -ErrorAction SilentlyContinue
186+ Remove-Item -Path "$BINARIES_DIR/generic" -Recurse -Force -ErrorAction SilentlyContinue
187+
188+ exit 0
178189 displayName: 'Copy resources'
179190 condition: succeeded()
180191
@@ -213,30 +224,34 @@ stages:
213224 - powershell : |
214225 $root = "$(Pipeline.Workspace)/Arduino-Source-Internal/Repository/Public/build/$(cmake_preset)"
215226 $version = "${{ parameters.versionMajor }}.${{ parameters.versionMinor }}.${{ parameters.versionPatch }}"
216- $folderName = "SerialPrograms-$version-Windows-x64 "
227+ $folderName = "SerialPrograms-$version-Windows-$(architecture) "
217228 $name = "SerialPrograms-Windows-$(compiler)-$(architecture)"
218229 $buildType = "${{ parameters.buildType }}"
219230
220- $cacheArtifactsDir = Join-Path $root "cache-artifacts"
221- $artifactSubdir = Join-Path $cacheArtifactsDir $name
231+ $artifactSubdir = Join-Path $root "cache-artifacts/$name "
232+ $zipPath = Join-Path $artifactSubdir " $name.zip"
222233 New-Item -ItemType Directory -Force -Path $artifactSubdir | Out-Null
223234
224- $temp = Join-Path $root "temp-archive"
225- $tempFolder = Join-Path $temp $folderName
235+ $tempFolder = Join-Path $root $folderName
226236 New-Item -ItemType Directory -Force -Path $tempFolder | Out-Null
227237 Copy-Item "$root/cache-build/*" $tempFolder -Recurse -Force
228238
229- if ($buildType -eq "PrivateBeta") {
230- Write-Host "=== Encrypting build artifact with password ==="
231- $zipPath = "$artifactSubdir/$name.zip"
232- & "C:/Program Files/7-Zip/7z.exe" a -tzip -mx=9 "-p$env:ARTIFACT_PASSWORD" -mem=AES256 $zipPath "$tempFolder/*"
233- } else {
234- $zipPath = "$artifactSubdir/$name.zip"
235- & "C:/Program Files/7-Zip/7z.exe" a -tzip -mx=9 $zipPath "$tempFolder/*"
239+ Push-Location $root
240+ try {
241+ if ($buildType -eq "PrivateBeta") {
242+ Write-Host "=== Encrypting build artifact with password ==="
243+ & "C:/Program Files/7-Zip/7z.exe" a -tzip -mx=9 "-p$env:ARTIFACT_PASSWORD" -mem=AES256 $zipPath $folderName
244+ } else {
245+ & "C:/Program Files/7-Zip/7z.exe" a -tzip -mx=9 $zipPath $folderName
246+ }
247+ if ($LASTEXITCODE -ne 0) {
248+ throw "7-Zip failed with exit code: $LASTEXITCODE"
249+ }
250+ } finally {
251+ Pop-Location
236252 }
237253
238- Remove-Item $temp -Recurse -Force
239-
254+ Remove-Item $tempFolder -Recurse -Force
240255 Write-Host "=== Created archive with enclosing folder: $folderName ==="
241256 displayName: 'Archive Windows build artifact'
242257 condition: succeeded()
@@ -409,7 +424,7 @@ stages:
409424 echo "=== Encrypting build artifact with password ==="
410425 7z a -tzip -mx=9 "-p$ARTIFACT_PASSWORD" -mem=AES256 "$(Pipeline.Workspace)/Arduino-Source-Internal/Repository/Public/build/$(cmake_preset)/cache-build/SerialPrograms-Ubuntu-$(compiler)-$(architecture).zip" "$FOLDER_NAME"
411426 else
412- tar -I "gzip -9" -cvf $(Pipeline.Workspace)/Arduino-Source-Internal/Repository/Public/build/$(cmake_preset)/cache-build/SerialPrograms-Ubuntu-$(compiler)-$(architecture).tar.gz "$FOLDER_NAME"
427+ 7z a -tzip -mx=9 " $(Pipeline.Workspace)/Arduino-Source-Internal/Repository/Public/build/$(cmake_preset)/cache-build/SerialPrograms-Ubuntu-$(compiler)-$(architecture).zip" "$FOLDER_NAME"
413428 fi
414429
415430 echo "=== AppImage build complete with enclosing folder: $FOLDER_NAME ==="
@@ -432,24 +447,11 @@ stages:
432447 path : ' $(Pipeline.Workspace)/Arduino-Source-Internal/Repository/Public/build/$(cmake_preset)/cache-symbols'
433448 condition : succeeded()
434449
435- - script : |
436- BUILD_TYPE="${{ parameters.buildType }}"
437- if [ "$BUILD_TYPE" = "PrivateBeta" ]; then
438- EXT="zip"
439- else
440- EXT="tar.gz"
441- fi
442-
443- ARTIFACT_PATH_UBUNTU="$(Pipeline.Workspace)/Arduino-Source-Internal/Repository/Public/build/$(cmake_preset)/cache-build/SerialPrograms-Ubuntu-$(compiler)-$(architecture).$EXT"
444- echo "##vso[task.setvariable variable=ARTIFACT_PATH_UBUNTU]$ARTIFACT_PATH_UBUNTU"
445- displayName: 'Set artifact path'
446- condition: succeeded()
447-
448450 - task : PublishBuildArtifacts@1
449451 displayName : ' Publish SerialPrograms'
450452 condition : succeeded()
451453 inputs :
452- PathtoPublish : ' $(ARTIFACT_PATH_UBUNTU) '
454+ PathtoPublish : ' $(Pipeline.Workspace)/Arduino-Source-Internal/Repository/Public/build/$(cmake_preset)/cache-build/SerialPrograms-Ubuntu-$(compiler)-$(architecture).zip '
453455 ArtifactName : ' SerialPrograms-Linux-$(compiler)-$(architecture)'
454456
455457# ##########################################
0 commit comments