refactor(burn-in): remove -SkipArtifact; build.ps1 always produces dist/

This commit is contained in:
Simone
2026-05-12 22:00:43 +02:00
parent 36cdd1fc25
commit a6acf1eef7
4 changed files with 6 additions and 36 deletions
-11
View File
@@ -105,11 +105,6 @@ param(
# Requires Set-TemplateSharedFolders.ps1 to have been run on the template. # Requires Set-TemplateSharedFolders.ps1 to have been run on the template.
[switch] $UseSharedCache, [switch] $UseSharedCache,
# Skip artifact packaging and collection (Phase 5 packaging + Phase 6).
# Use for burn-in / smoke builds that intentionally produce no output.
# In production (absent) the build must produce artifacts or the job fails.
[switch] $SkipArtifact,
# Credential Manager target for Gitea PAT used by -UseGitClone (private repos). # Credential Manager target for Gitea PAT used by -UseGitClone (private repos).
# Store with: New-StoredCredential -Target 'GiteaPAT' -UserName '<user>' -Password '<pat>' -Persist LocalMachine # Store with: New-StoredCredential -Target 'GiteaPAT' -UserName '<user>' -Password '<pat>' -Persist LocalMachine
# Ignored when -UseGitClone is not set. # Ignored when -UseGitClone is not set.
@@ -499,17 +494,12 @@ try {
if ($GuestArtifactSource -ne '') { $remoteBuildParams['GuestArtifactSource'] = $GuestArtifactSource } if ($GuestArtifactSource -ne '') { $remoteBuildParams['GuestArtifactSource'] = $GuestArtifactSource }
if ($ExtraGuestEnv.Count -gt 0) { $remoteBuildParams['ExtraGuestEnv'] = $ExtraGuestEnv } if ($ExtraGuestEnv.Count -gt 0) { $remoteBuildParams['ExtraGuestEnv'] = $ExtraGuestEnv }
if ($UseSharedCache) { $remoteBuildParams['UseSharedCache'] = $true } if ($UseSharedCache) { $remoteBuildParams['UseSharedCache'] = $true }
if ($SkipArtifact) { $remoteBuildParams['SkipArtifact'] = $true }
& "$scriptDir\Invoke-RemoteBuild.ps1" @remoteBuildParams & "$scriptDir\Invoke-RemoteBuild.ps1" @remoteBuildParams
Write-JobEvent -Phase 'phase5.build' -Status 'success' Write-JobEvent -Phase 'phase5.build' -Status 'success'
$phaseTimings.Add([PSCustomObject]@{ Phase = 'Phase 5 - Remote build'; Sec = [int]((Get-Date) - $phaseStart).TotalSeconds }) $phaseTimings.Add([PSCustomObject]@{ Phase = 'Phase 5 - Remote build'; Sec = [int]((Get-Date) - $phaseStart).TotalSeconds })
$phaseStart = Get-Date $phaseStart = Get-Date
# ── Phase 6: Collect artifacts ──────────────────────────────────────── # ── Phase 6: Collect artifacts ────────────────────────────────────────
if ($SkipArtifact) {
Write-Host "`n[Phase 6/6] Artifact collection skipped (-SkipArtifact)."
Write-JobEvent -Phase 'phase6.artifacts' -Status 'skipped'
} else {
Write-Host "`n[Phase 6/6] Collecting artifacts..." Write-Host "`n[Phase 6/6] Collecting artifacts..."
Write-JobEvent -Phase 'phase6.artifacts' -Status 'start' Write-JobEvent -Phase 'phase6.artifacts' -Status 'start'
if ($GuestOS -eq 'Linux') { if ($GuestOS -eq 'Linux') {
@@ -531,7 +521,6 @@ try {
-IncludeLogs -IncludeLogs
} }
Write-JobEvent -Phase 'phase6.artifacts' -Status 'success' -Data @{ dir = $jobArtifactDir } Write-JobEvent -Phase 'phase6.artifacts' -Status 'success' -Data @{ dir = $jobArtifactDir }
}
$elapsed = (Get-Date) - $startTime $elapsed = (Get-Date) - $startTime
Write-JobEvent -Phase 'job' -Status 'success' -Data @{ elapsedSec = [int]$elapsed.TotalSeconds } Write-JobEvent -Phase 'job' -Status 'success' -Data @{ elapsedSec = [int]$elapsed.TotalSeconds }
$phaseTimings.Add([PSCustomObject]@{ Phase = 'Phase 6 - Artifacts'; Sec = [int]((Get-Date) - $phaseStart).TotalSeconds }) $phaseTimings.Add([PSCustomObject]@{ Phase = 'Phase 6 - Artifacts'; Sec = [int]((Get-Date) - $phaseStart).TotalSeconds })
+4 -14
View File
@@ -126,12 +126,6 @@ param(
# and VMware Tools HGFS driver present in the guest. # and VMware Tools HGFS driver present in the guest.
[switch] $UseSharedCache, [switch] $UseSharedCache,
# When set, skip artifact packaging and do NOT write artifacts.zip in the guest.
# Use for burn-in / smoke builds that intentionally produce no output.
# In production (default: absent) the build MUST produce GuestArtifactSource or the
# job fails — a silently-empty build is treated as an error.
[switch] $SkipArtifact,
# Guest OS type — Linux uses SSH instead of WinRM. # Guest OS type — Linux uses SSH instead of WinRM.
[ValidateSet('Windows', 'Linux')] [ValidateSet('Windows', 'Linux')]
[string] $GuestOS = 'Windows', [string] $GuestOS = 'Windows',
@@ -433,7 +427,7 @@ try {
# ── Custom build command (e.g. python, msbuild, cmake…) ────────── # ── Custom build command (e.g. python, msbuild, cmake…) ──────────
Write-Host "[Invoke-RemoteBuild] Running build command: $BuildCommand" Write-Host "[Invoke-RemoteBuild] Running build command: $BuildCommand"
$buildExit = Invoke-Command -Session $session -ScriptBlock { $buildExit = Invoke-Command -Session $session -ScriptBlock {
param($workDir, $cmd, $artifactZip, $artifactSrc, $useCache, $extraEnv, $skipArt) param($workDir, $cmd, $artifactZip, $artifactSrc, $useCache, $extraEnv)
# Unbuffered Python output — lines appear in real-time instead of being held in buffer # Unbuffered Python output — lines appear in real-time instead of being held in buffer
$env:PYTHONUNBUFFERED = '1' $env:PYTHONUNBUFFERED = '1'
if ($useCache) { if ($useCache) {
@@ -448,14 +442,14 @@ try {
& cmd /c "$cmd 2>&1" | ForEach-Object { Write-Host $_ } & cmd /c "$cmd 2>&1" | ForEach-Object { Write-Host $_ }
$exit = $LASTEXITCODE $exit = $LASTEXITCODE
if ($exit -eq 0 -and -not $skipArt) { if ($exit -eq 0) {
$archiveDir = Split-Path $artifactZip -Parent $archiveDir = Split-Path $artifactZip -Parent
if (-not (Test-Path $archiveDir)) { if (-not (Test-Path $archiveDir)) {
New-Item -ItemType Directory -Path $archiveDir -Force | Out-Null New-Item -ItemType Directory -Path $archiveDir -Force | Out-Null
} }
$srcPath = Join-Path $workDir $artifactSrc $srcPath = Join-Path $workDir $artifactSrc
if (-not (Test-Path $srcPath)) { if (-not (Test-Path $srcPath)) {
throw "Artifact source directory not found: $srcPath. Build succeeded (exit 0) but produced no output. Check GuestArtifactSource or use -SkipArtifact for builds that intentionally produce no files." throw "Artifact source directory not found: $srcPath. Build succeeded (exit 0) but produced no output. Check GuestArtifactSource."
} }
else { else {
$7zip = 'C:\Program Files\7-Zip\7z.exe' $7zip = 'C:\Program Files\7-Zip\7z.exe'
@@ -471,7 +465,7 @@ try {
} }
return $exit return $exit
} -ArgumentList $GuestWorkDir, $BuildCommand, $GuestArtifactZip, $GuestArtifactSource, $UseSharedCache.IsPresent, $ExtraGuestEnv, $SkipArtifact.IsPresent } -ArgumentList $GuestWorkDir, $BuildCommand, $GuestArtifactZip, $GuestArtifactSource, $UseSharedCache.IsPresent, $ExtraGuestEnv
if ($buildExit -ne 0) { if ($buildExit -ne 0) {
throw "Build command failed (exit $buildExit)" throw "Build command failed (exit $buildExit)"
@@ -534,12 +528,8 @@ try {
} }
} }
if ($SkipArtifact) {
Write-Host '[Invoke-RemoteBuild] Build succeeded. Artifact packaging skipped (-SkipArtifact).'
} else {
Write-Host "[Invoke-RemoteBuild] Build succeeded. Artifact at $GuestArtifactZip" Write-Host "[Invoke-RemoteBuild] Build succeeded. Artifact at $GuestArtifactZip"
} }
}
finally { finally {
Remove-PSSession $session -ErrorAction SilentlyContinue Remove-PSSession $session -ErrorAction SilentlyContinue
} }
-2
View File
@@ -49,7 +49,6 @@ param(
[int] $Rounds = 3, [int] $Rounds = 3,
[int] $Parallelism = 4, [int] $Parallelism = 4,
[string] $BuildCommand = 'powershell -NoProfile -NonInteractive -ExecutionPolicy Bypass -File build.ps1', [string] $BuildCommand = 'powershell -NoProfile -NonInteractive -ExecutionPolicy Bypass -File build.ps1',
[switch] $NoSkipArtifact,
[int] $RoundTimeoutMinutes = 60 [int] $RoundTimeoutMinutes = 60
) )
@@ -74,7 +73,6 @@ $burnInParams = @{
Rounds = $Rounds Rounds = $Rounds
RoundTimeoutMinutes = $RoundTimeoutMinutes RoundTimeoutMinutes = $RoundTimeoutMinutes
} }
if (-not $NoSkipArtifact) { $burnInParams['SkipArtifact'] = $true }
& "$scriptDir\Test-CapacityBurnIn.ps1" @burnInParams & "$scriptDir\Test-CapacityBurnIn.ps1" @burnInParams
-7
View File
@@ -124,10 +124,6 @@ param(
[string] $BuildCommand = '', [string] $BuildCommand = '',
# Skip artifact packaging and collection in every child job.
# Set this for burn-in and smoke runs that use delay-only build commands.
[switch] $SkipArtifact,
[ValidateRange(1, 10)] [ValidateRange(1, 10)]
[int] $Parallelism = 4, [int] $Parallelism = 4,
@@ -215,9 +211,6 @@ for ($r = 1; $r -le $Rounds; $r++) {
if ($BuildCommand -ne '') { if ($BuildCommand -ne '') {
$argList.Add('-BuildCommand'); $argList.Add($BuildCommand) $argList.Add('-BuildCommand'); $argList.Add($BuildCommand)
} }
if ($SkipArtifact) {
$argList.Add('-SkipArtifact')
}
$argArray = $argList.ToArray() $argArray = $argList.ToArray()