Files
local-ci-cd-system/scripts/Start-BurnInTest.ps1
T
Simone e0b45fc71d fix(burn-in): create placeholder artifact when build command produces no output dir
Invoke-RemoteBuild.ps1: when BuildCommand succeeds (exit 0) but GuestArtifactSource
(default: dist) does not exist, instead of silently skipping packaging, now creates a
placeholder 'build-ok.txt' in the artifact output dir and zips it. This ensures
Get-BuildArtifacts.ps1 always finds artifacts.zip regardless of whether the build
produced real output files. Correct for burn-in, smoke, and delay-only build commands.

Start-BurnInTest.ps1: revert default BuildCommand to 'ping 127.0.0.1 -n 31 > nul'
(~30s delay, no artifact output) now that the pipeline handles missing dist gracefully.
The previous 'if not exist dist mkdir dist' workaround is no longer needed.
2026-05-12 21:23:40 +02:00

77 lines
2.9 KiB
PowerShell

#Requires -Version 5.1
<#
.SYNOPSIS
Wrapper di lancio per Test-CapacityBurnIn.ps1 con i parametri del lab locale.
.DESCRIPTION
Esegue il burn-in a 4 job / 3 round contro il repo burnin-dummy su Gitea.
Tutti i parametri fissi del lab sono qui hardcoded; i parametri variabili
(Rounds, Parallelism, BuildCommand) possono essere sovrascritti da CLI.
Prerequisiti:
- Repo burnin-dummy creato su Gitea (anche vuoto con branch main)
- Credenziali guest nel Credential Manager target 'BuildVMGuest'
- Gitea PAT nel Credential Manager target 'GiteaPAT'
New-StoredCredential -Target 'GiteaPAT' -UserName 'ci' -Password '<pat>' -Persist LocalMachine
- Template WinBuild2025 con snapshot BaseClean in stato powered-off
- VMware Tools attivo nel guest (per auto-detect IP)
Esempi di utilizzo:
# Run completo (3 round, 4 job paralleli)
.\Start-BurnInTest.ps1
# Smoke veloce (1 round, 2 job)
.\Start-BurnInTest.ps1 -Rounds 1 -Parallelism 2
# Verifica parallelismo reale (build da 2 minuti, 1 round)
.\Start-BurnInTest.ps1 -Rounds 1 -BuildCommand 'Start-Sleep 120'
.PARAMETER Rounds
Numero di round sequenziali. Default: 3.
.PARAMETER Parallelism
Job concorrenti per round. Default: 4.
.PARAMETER BuildCommand
Comando da eseguire nel guest come passo build (eseguito via cmd /c nel guest).
Default: 'ping 127.0.0.1 -n 31 > nul' (attesa ~30s, nessun output reale).
Quando il build command non produce la directory dist, Invoke-RemoteBuild crea
automaticamente un artifact placeholder (build-ok.txt in zip) per permettere
all'intero pipeline di completarsi.
Usare 'ping 127.0.0.1 -n 601 > nul' per mantenere 4 VM attive ~600s
e osservare la concorrenza prolungata.
.PARAMETER RoundTimeoutMinutes
Minuti massimi di attesa per ogni round prima di interrompere i job rimasti.
Default: 60.
#>
param(
[int] $Rounds = 3,
[int] $Parallelism = 4,
[string] $BuildCommand = 'ping 127.0.0.1 -n 31 > nul',
[int] $RoundTimeoutMinutes = 60
)
Set-StrictMode -Version Latest
$ErrorActionPreference = 'Stop'
$scriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path
& "$scriptDir\Test-CapacityBurnIn.ps1" `
-RepoUrl 'http://10.10.20.11:3100/ci/burnin-dummy.git' `
-Branch 'main' `
-TemplatePath 'F:\CI\Templates\WinBuild2025\WinBuild2025.vmx' `
-SnapshotName 'BaseClean' `
-CloneBaseDir 'F:\CI\BuildVMs' `
-ArtifactBaseDir 'F:\CI\Artifacts' `
-GuestCredentialTarget 'BuildVMGuest' `
-GiteaCredentialTarget 'GiteaPAT' `
-VmrunPath 'C:\Program Files (x86)\VMware\VMware Workstation\vmrun.exe' `
-GuestOS 'Auto' `
-BuildCommand $BuildCommand `
-Parallelism $Parallelism `
-Rounds $Rounds `
-RoundTimeoutMinutes $RoundTimeoutMinutes
exit $LASTEXITCODE