e0b45fc71d
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.
77 lines
2.9 KiB
PowerShell
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
|