AzLocal.UpdateManagement v0.8.80: pipeline-failure rendering improvements (Q1 + Q2 + Q3)#86
Merged
Conversation
…ents (Q1 + Q2 + Q3) Three feature bundles for the AzLocal.UpdateManagement automation pipelines: Q1 - Step.09 fleet-update-status: enrich Failed update-run rows with same-cluster Critical healthCheckResult entries from updateSummaries inside a +/- 2h window around the run end time. New private helper Get-AzLocalUpdateRunHealthEvidence (uses anti-mv-expand-128 raw-array pattern; expands client-side). Opt-out via new -EnrichWithHealthEvidence switch on Get-AzLocalUpdateRunFailures. Q2 - Step.05 (Test-AzLocalClusterHealth) + Step.10 (Get-AzLocalFleetHealthFailures): add Title and TargetResourceID columns to per-cluster and fleet-wide health failure rows. Export-AzLocalFleetHealthStatusReport now renders Title in the markdown header and wraps TargetResourceName in https://portal.azure.com/#@/resource{TargetResourceID} deep-link. Q3 - Step.08 (Export-AzLocalUpdateRunMonitorReport) + Step.09 (Export-AzLocalFleetUpdateStatusReport): surface BOTH the deepest-step description AND errorMessage so on-call engineers see what stage failed AND why. Get-DeepestErrorMessage gains -IncludeDescription switch; Resolve-AzLocalUpdateRunDeepestError emits Description; Format-AzLocalUpdateRun and Get-AzLocalUpdateRuns emit ErrorDescription column. Walker note: Resolve-AzLocalUpdateRunDeepestError and Get-DeepestErrorMessage remain parallel implementations (per design discussion); cross-reference .NOTES blocks added to both so future maintainers keep them in sync. Tests: +20 Pester It blocks across 10 Describe blocks for Q1/Q2/Q3. Full suite: 1196 passed, 0 v0.8.80 failures. (One pre-existing date-dependent cycle-calendar regex flake is unrelated and out of scope.) Bumped: psd1 ModuleVersion 0.8.79 -> 0.8.80, psm1 $script:ModuleVersion, CHANGELOG, README banner + What's New, docs/release-history.md, 22 YAML pipeline templates' GENERATED_AGAINST_MODULE_VERSION pin.
The 'Recommend emits Cycle calendar section' test asserted that the rendered markdown ALWAYS contains the '_(cycle wraps)_' marker. With cycleWeeks=2 the 14-day projection only crosses the cycle boundary when 'today' starts mid-cycle; when today happens to land on day-1 of the cycle (e.g. 2026-06-15 is exactly 64 cycles after the 2024-01-01 anchor) the window ends EXACTLY at the boundary and no wrap row is emitted. Result: PR CI failed on that single test today. Compute today's day-in-cycle from the schedule anchor and only assert when wrap is expected. Pre-existing flake; unrelated to v0.8.80 features but blocking PR #86 CI.
EnricoMi/publish-unit-test-result-action/windows@v2 deprecated 'junit_files' in favor of 'files'. Still works today via the legacy alias but will be removed in a future major. One-line rename.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Bundles three independent improvements to the AzLocal.UpdateManagement pipeline-failure rendering surface into one v0.8.80 release. Cuts from
users/nebird/development; targetsusers/nebird/development(NOT main).Q1 - Step.09 health-evidence enrichment
When a Failed update run is rendered in
fleet-update-status, the row is now enriched with same-cluster CriticalupdateSummaries.healthCheckResultentries that fall inside a +/- 2 hour window around the run end time. This makes the most likely root-cause health check visible at the same site as the failure, without an extra click into per-cluster health.Get-AzLocalUpdateRunHealthEvidence(uses anti-mv-expand-128 raw-array projection, expands client-side).Get-AzLocalUpdateRunFailures:-EnrichWithHealthEvidence(defaults true).HealthCheckEvidenceon the failure row.Q2 - Step.05 + Step.10 health-failure Title + TargetResourceID
Both per-cluster (
Test-AzLocalClusterHealth, Step.05) and fleet-wide (Get-AzLocalFleetHealthFailures, Step.10) health-failure rows now carryTitleandTargetResourceID.Export-AzLocalFleetHealthStatusReportrendersTitlein the markdown header and wrapsTargetResourceNamein ahttps://portal.azure.com/#@/resource{TargetResourceID}deep-link, giving on-call a one-click jump from the report into the misbehaving resource blade.Q3 - Step.08 + Step.09 description + errorMessage
Pipeline failure reports now surface BOTH the deepest-step
description(what stage failed) ANDerrorMessage(why) - previously only the message was rendered.Get-DeepestErrorMessagegains-IncludeDescriptionswitch (back-compat: bare call still returns a string).Resolve-AzLocalUpdateRunDeepestErroremits aDescriptionfield on its result hashtable.Format-AzLocalUpdateRunandGet-AzLocalUpdateRunsemit anErrorDescriptioncolumn.Export-AzLocalUpdateRunMonitorReport(Step.08) andExport-AzLocalFleetUpdateStatusReport(Step.09) render description, trace, and (Q1) evidence side-by-side.Test results
Test-AzLocalApplyUpdatesScheduleCoveragecycle-calendar_(cycle wraps)_regex) is unrelated and out of scope.Version + docs
ModuleVersionbumped 0.8.79 -> 0.8.80 (psd1, psm1).docs/release-history.mdupdated.GENERATED_AGAINST_MODULE_VERSIONpin bumped to'0.8.80'.