fix(ci): allow bounded full acceptance suite runtime
Passing main took 572 seconds; the stable retry completed 110 of 111 tests before the 600-second cutoff. Allow 900 seconds per full suite and 60 minutes for three suites plus packaging. Individual test deadlines and assertions are unchanged; real child-process regressions confirm hangs and failure exits still fail. Co-Authored-By: Codex GPT-6 <noreply@openai.com> Signed-off-by: James Maes <james@kof22.com>
This commit is contained in:
5 files changed
+66
-5
No files matched your search
@@ -63,7 +63,8 @@ jobs:
|
||||
installed-updates:
|
||||
name: installed-updates
|
||||
runs-on: windows-latest
|
||||
timeout-minutes: 45
|
||||
# Three complete UI suites plus packaging, installation and update probes.
|
||||
timeout-minutes: 60
|
||||
permissions:
|
||||
contents: read
|
||||
steps:
|
||||
|
||||
@@ -13,11 +13,27 @@ Describe 'Installed update smoke boundaries' `
|
||||
$script:SmokeArtifacts = Join-Path (Split-Path -Parent $PSScriptRoot) 'artifacts'
|
||||
$script:SmokeAppId = [regex]::Match((Get-Content -LiteralPath (Join-Path (Split-Path -Parent $PSScriptRoot) 'src/MarkdownViewr.Windows.Core/AppIdentity.cs') -Raw), '(?m)^\s*Id\s*=\s*"([a-z0-9][a-z0-9-]*)"').Groups[1].Value
|
||||
$ast = [Management.Automation.Language.Parser]::ParseFile($script:SmokeHarness, [ref]$null, [ref]$null)
|
||||
foreach($name in @('Assert-SmokeCliVersion', 'Get-SmokeDefaultChoiceSnapshot', 'Get-SmokeFileRegistration', 'Assert-SmokeFileRegistrationRemoved', 'Assert-SmokeInstallationOwner'))
|
||||
foreach($name in @('Assert-SmokeCliVersion', 'Get-SmokeDefaultChoiceSnapshot', 'Get-SmokeFileRegistration', 'Assert-SmokeFileRegistrationRemoved', 'Assert-SmokeInstallationOwner', 'Invoke-SmokeProcess'))
|
||||
{
|
||||
$function = $ast.Find({ param($node) $node -is [Management.Automation.Language.FunctionDefinitionAst] -and $node.Name -eq $name }, $true)
|
||||
. ([scriptblock]::Create($function.Extent.Text))
|
||||
}
|
||||
$script:repositoryRoot = $TestDrive
|
||||
$script:outputRoot = $TestDrive
|
||||
$script:vpk = 'not-a-fixture-tool'
|
||||
$script:smokeProcessNumber = 0
|
||||
}
|
||||
|
||||
It 'terminates a hung child process and fails the smoke gate' `
|
||||
{
|
||||
$shell = (Get-Process -Id $PID).Path
|
||||
{ Invoke-SmokeProcess -File $shell -Arguments @('-NoProfile', '-Command', 'Start-Sleep -Seconds 30') -TimeoutSeconds 1 } | Should -Throw '*Process timed out*'
|
||||
}
|
||||
|
||||
It 'rejects a failing child process and retains its output' `
|
||||
{
|
||||
$shell = (Get-Process -Id $PID).Path
|
||||
{ Invoke-SmokeProcess -File $shell -Arguments @('-NoProfile', '-Command', "Write-Output 'fixture failure'; exit 7") -TimeoutSeconds 10 } | Should -Throw '*Process failed (7)*fixture failure*'
|
||||
}
|
||||
|
||||
It 'requires an actual matching manifest inside the resolved artifact boundary before uninstall' `
|
||||
|
||||
@@ -435,7 +435,9 @@ try
|
||||
$env:K22_UITEST_CHANNEL = 'stable'
|
||||
$env:K22_UITEST_INSTALLED = '0'
|
||||
$env:K22_UITEST_EXE = Join-Path $buildRoot "publish/0.1.0/$mainExe"
|
||||
Invoke-SmokeProcess -File 'dotnet' -Arguments @('test', "$repositoryRoot/tests/$name.UiTests", '--no-build', '--logger', 'console;verbosity=normal', '--logger', 'trx;LogFileName=published-ui.trx', '--results-directory', $outputRoot) -TimeoutSeconds 600
|
||||
# The full 111-test UI suite takes 572 seconds on a passing hosted runner.
|
||||
# Allow bounded host variation without changing any individual test deadline.
|
||||
Invoke-SmokeProcess -File 'dotnet' -Arguments @('test', "$repositoryRoot/tests/$name.UiTests", '--no-build', '--logger', 'console;verbosity=normal', '--logger', 'trx;LogFileName=published-ui.trx', '--results-directory', $outputRoot) -TimeoutSeconds 900
|
||||
foreach($initial in @($versions[0], $versions[2]))
|
||||
{
|
||||
$initialPackageId = $packageId + '-' + $initial.channel
|
||||
@@ -500,7 +502,7 @@ try
|
||||
$updatedRegistration | ConvertTo-Json | Set-Content -LiteralPath (Join-Path $outputRoot "$channel-registration-after.json")
|
||||
$env:K22_UITEST_INSTALLED = '1'
|
||||
$env:K22_UITEST_EXE = $currentExe
|
||||
Invoke-SmokeProcess -File 'dotnet' -Arguments @('test', "$repositoryRoot/tests/$name.UiTests", '--no-build', '--filter', 'FullyQualifiedName!~CheckForUpdates_InALooseBuild', '--logger', 'console;verbosity=normal', '--logger', "trx;LogFileName=installed-$channel-ui.trx", '--results-directory', $outputRoot) -TimeoutSeconds 600
|
||||
Invoke-SmokeProcess -File 'dotnet' -Arguments @('test', "$repositoryRoot/tests/$name.UiTests", '--no-build', '--filter', 'FullyQualifiedName!~CheckForUpdates_InALooseBuild', '--logger', 'console;verbosity=normal', '--logger', "trx;LogFileName=installed-$channel-ui.trx", '--results-directory', $outputRoot) -TimeoutSeconds 900
|
||||
$records.Add(@{ kind = 'installed'; channel = $channel; before = $before; after = $after; restarted = $true; appSha256 = $installedHash })
|
||||
}
|
||||
finally
|
||||
|
||||
@@ -2,6 +2,34 @@
|
||||
|
||||
Updated: 2026-10-12
|
||||
|
||||
## Release blockers after main merge - 2026-10-12
|
||||
|
||||
The owner-reviewed application merged through PR35 at38dd5c1. Main CI38294895221
|
||||
passed; retained published111 and installed stable/dev110 reports have zero
|
||||
failures/skips. OpenSSF project15417 assessment is saved at70%, not passing.
|
||||
The exact Syft image is now explicitly owner-approved and allowlisted.
|
||||
|
||||
Neither production release is published. Signedv1.0.0 andv1.0.0-beta.1 tags remain
|
||||
preserved. Dev38299469062 passed acceptance and Azure OIDC login, then failed the
|
||||
official signing action dependency install because --add-source conflicts with
|
||||
NuGet package source mapping. Standards PR44 stages the exact verified dependency
|
||||
without changing caller NuGet policy;40 signing tests and the real package bootstrap
|
||||
pass locally. Production CI signing and final artifact verification remain pending.
|
||||
|
||||
Stable38299469141 attempt2 completed110 of111 published tests without a reported
|
||||
test failure before its600-second process limit. The successful main published
|
||||
suite took572 seconds. The bounded suite budget is now900 seconds; individual
|
||||
test deadlines, assertions, cases and failure handling remain unchanged. The job
|
||||
budget allows all three suites plus packaging/update probes. Two real subprocess
|
||||
regressions verify that hangs and nonzero exits still fail the gate. Fresh hosted
|
||||
acceptance is required; this timing change is not proof of a successful release.
|
||||
|
||||
The owner's latest instruction is EXE/portable ZIP first, MSI next release (#36).
|
||||
Do not cancel runs, alter published assets, replace existing release tags, skip
|
||||
acceptance or claim public downloads. Next: genuine review and green checks for
|
||||
the two fixes, merge the shared builder, update the app's immutable builder pin,
|
||||
then publish new signed release candidates and verify the downloaded artifacts.
|
||||
|
||||
## Current release status - 2026-10-12
|
||||
|
||||
Standards 1.1.0 is published immutably at
|
||||
|
||||
+15
-1
@@ -1,6 +1,20 @@
|
||||
# Development Tasks
|
||||
|
||||
## Current release checklist
|
||||
## Current release checklist - 2026-10-12
|
||||
|
||||
- [x] Merge genuinely owner-reviewed app through PR35 at38dd5c1; all main gates pass.
|
||||
- [x] Preserve signed1.0.0/stable and1.0.0-beta.1/dev tags; no release is published.
|
||||
- [x] Apply only the exact Syft image addition explicitly approved by the owner.
|
||||
- [x] Prove production Azure OIDC login; preserve existing account/profile/trust.
|
||||
- [x] Reproduce signing dependency conflict; standards PR44 real package bootstrap and40 signing tests pass locally.
|
||||
- [x] Measure stable retry110/111 without reported test failures before600-second limit; prepare bounded900-second suite budget with unchanged assertions/deadlines.
|
||||
- [ ] Obtain genuine reviews, pass exact-head hosted checks and merge the release fixes.
|
||||
- [ ] Update the app caller to the reviewed fixed builder's immutable SHA.
|
||||
- [ ] Publish stable/dev EXE and ZIP candidates; verify exact distributed signatures, timestamps, hashes, SBOMs and attestations (#33).
|
||||
- [ ] Update user download links only after actual verified publication.
|
||||
- [ ] Deliver signed and acceptance-tested MSI installers in the next release (#36), following the owner's latest decision.
|
||||
|
||||
## Prior release checklist
|
||||
|
||||
- [x] Correct the disabled-editor tooltip exception; accepted application code321816c.
|
||||
- [x] Final signing caller b1dc874 / CI38276579007 passes all hosted checks, including published111 and stable/dev110 acceptance each, zero failures/skips.
|
||||
|
||||
Reference in new issue
Block a user