Skip to content

Commit 7ce9048

Browse files
authored
AzLocal.UpdateManagement v0.8.74 - consistent 'Up to Date' classification, No-Clusters-Ready breakdown, deep-tree Progress column, step-summary hyperlink tidy-up (#80)
* apply-updates.yml: move schedule-path author guidance OUTSIDE schedule-triggers marker (GH+ADO) The schedule-triggers AZLOCAL-CUSTOMIZE marker wrapped ~30 lines of author guidance (incl. the New-AzLocalApplyUpdatesScheduleConfig -OutputPath example and the default-path note). Update-AzLocalPipelineExample preserves the marker BODY from the customer's file, so author corrections inside the marker (e.g. the v0.8.71 .github -> config path fix) never reach an already-deployed consumer. Moved all guidance above the BEGIN marker; marker body now holds only the trigger directive (GH placeholder comment / ADO 'trigger: none'). Queued for next version bump. * pipelines: zero-pad single-digit Step.N display names to two digits (Step.0 -> Step.00 ... Step.9 -> Step.09) Queued for 0.8.72 (no version bump). The GitHub Actions sidebar and ADO pipelines list sort workflows alphabetically by their display name, so Step.10 lexically sorted between Step.1 and Step.2. Zero-padding the single-digit step numbers makes Step.10 sort last as intended. Scope (display/title text only, fully reversible): - GitHub Actions workflow `name:` fields (10 files; Step.10 unchanged) - Azure DevOps `name:` / stage `displayName:` Step.N labels - Header-comment titles (`# Step.N - ...`) on both platforms - One ADO "HOW TO RUN" prose line tracking its renamed display name Left unchanged: artifact names (azlocal-step.N-* functional identifiers) and cross-reference prose (e.g. "Step.9 / Step.10 wiring"). * AzLocal.UpdateManagement v0.8.72 - pipeline-template polish (patch) Patch release. No module code, API, or export-count change (60 exports). Bundles the two pipeline-template improvements committed on this branch since v0.8.71: Fixed - apply-updates.yml (GH + ADO): moved the schedule-path author guidance (incl. the New-AzLocalApplyUpdatesScheduleConfig -OutputPath example and the default-path note) OUTSIDE the schedule-triggers AZLOCAL-CUSTOMIZE marker. Update-AzLocalPipelineExample preserves the marker body from the customer's file, so guidance corrections inside the marker never reached already-deployed consumers. Guidance now lives above the BEGIN marker. Changed - Zero-padded single-digit Step.N pipeline display names to two digits (Step.0 -> Step.00 ... Step.9 -> Step.09) so Step.10 sorts last in the GitHub Actions sidebar / Azure DevOps pipelines list. Display/title text only; artifact names and cross-reference prose unchanged. - Bumped GENERATED_AGAINST_MODULE_VERSION pins 0.8.71 -> 0.8.72 across all bundled pipeline YAMLs. Version bump applied to psd1/psm1/CHANGELOG/README/Tests/docs. * tests: record v0.8.72 wall-clock timing row (1145 tests, 96.82s wall, 0 failed) * AzLocal.UpdateManagement v0.8.73 - cycle calendar: fold cluster counts inline into Eligible rings column - Get-AzLocalApplyUpdatesScheduleCycleCalendar: when -ClusterRingCounts is supplied, relabel the "Eligible rings" header to "Eligible rings (cluster count)" and append each ring's count inline (e.g. `Prod` (9), `Canary` (3)); removed the separate "Clusters in ring(s)" column. Per-ring projection table (-IncludePerRingSummary) keeps its standalone "Cluster count" column. - Export-AzLocalApplyUpdatesScheduleAudit: build a ring -> tagged-cluster-count map from the cluster CSV and forward it to the cycle-calendar cmdlet (the Step.3 render path never passed it before, so inline counts were silently absent from production output). - Tests: updated header/cell assertions for the inline format; added a TOC regression guard that the README lists exactly one top-level "What's New" entry (current release only). - README TOC: removed stale "What's New in v0.8.7" / "v0.8.4" entries; prior versions live under Release History. - Version bump 0.8.72 -> 0.8.73 across psd1/psm1/CHANGELOG/README/tests/docs and all bundled pipeline YAML GENERATED_AGAINST_MODULE_VERSION pins. * v0.8.74: consistent Up-to-Date classification + No-Clusters-Ready breakdown Step.5/Step.7/Step.9 now classify a fully-patched cluster as "Up to Date" via the shared Get-AzLocalClusterReadinessStatus helper instead of implying failure. Step.7's "No Clusters Ready" summary (Add-AzLocalNoReadyClustersStepSummary) now accepts -UpToDateCount/-NotReadyCount and renders an Up-to-Date vs Not-Ready breakdown table, logs a notice (not a warning) when every cluster is already up to date, and points to the per-cluster Status/Blocking Reasons detail. Both apply-updates templates (GitHub Actions + Azure DevOps) wire the two counts through from the readiness gate. Docs/manifest/changelog/release-history updated; all bundled pipeline templates bump GENERATED_AGAINST_MODULE_VERSION to 0.8.74. Full Pester suite: 1124 passed, 0 failed, 1 skipped. * v0.8.74: deep-tree Progress column + step-summary hyperlink Tip across Step.7/8/10 emitters Fixes the Progress column in the Step.7 in-flight monitor and the standalone HTML "Recent Update Run History" report - both had been reporting the coarse top-level wrapper count (typically 1/2 steps) for the entire multi-hour run because Azure Local only exposes two top-level wrapper steps (Prepare update + Start update) and Start update stays InProgress end-to-end. Both paths now traverse the full nested step tree via a new private helper (Get-AzLocalUpdateRunStepStats) and report leaf-step completion as M/N steps (P%), optionally suffixed with ", K failed", matching how CurrentStep already walks the tree via Get-DeepestActiveStep. Also drops the dead target="_blank" / rel="noopener" portal-link attributes from every step-summary anchor in Step.7 (Export-AzLocalUpdateRunMonitorReport), Step.8 (Export-AzLocalFleetUpdateStatusReport) and Step.10 (Export-AzLocalFleetHealthStatusReport). The GitHub GFM step-summary sanitiser (and the ADO equivalent) strips target entirely and forces rel="nofollow", so the markdown source has been dead weight. All three emitters now render plain <a href="...">name</a> and surface an operator tip above each affected table: "Hold Ctrl (or Cmd on macOS) when clicking - or middle-click - Cluster or Update links to open them in a new tab. (GitHub markdown strips target=\"_blank\".)". The standalone HTML report (New-AzLocalFleetStatusHtmlReport) is unaffected - it ships as a raw .html artifact, not a step-summary, so its target="_blank" already works. CHANGELOG, README, release-history, and module manifest ReleaseNotes (kept under the 10,000-char PSGallery limit; older v0.8.7 entry trimmed to a single line to make room) updated to describe both fixes. No public API or export-count change (still 60). Full Pester suite green: 1133 passed, 0 failed, 1 skipped (pre-existing).
1 parent fe25948 commit 7ce9048

40 files changed

Lines changed: 1076 additions & 180 deletions

AzLocal.UpdateManagement/Automation-Pipeline-Examples/azure-devops/apply-updates-schedule-audit.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ parameters:
8787
default: false
8888

8989
variables:
90-
GENERATED_AGAINST_MODULE_VERSION: '0.8.73'
90+
GENERATED_AGAINST_MODULE_VERSION: '0.8.74'
9191
REQUIRED_MODULE_VERSION: '${{ parameters.moduleVersion }}'
9292
reportsPath: '$(Build.ArtifactStagingDirectory)/reports'
9393
# v0.8.7 sideload advisor defaults. Override at the pipeline / variable-group

AzLocal.UpdateManagement/Automation-Pipeline-Examples/azure-devops/apply-updates.yml

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ variables:
120120
# log if the YAML appears stale - prompting you to refresh via
121121
# Copy-AzLocalPipelineExample -Update. See Automation-Pipeline-Examples/README.md section 5.
122122
- name: GENERATED_AGAINST_MODULE_VERSION
123-
value: '0.8.73'
123+
value: '0.8.74'
124124
# Resolution order for the module version pin (leave all unset to install the latest,
125125
# which is the default "fix-forward" behaviour): queue-time parameter > pipeline variable
126126
# 'REQUIRED_MODULE_VERSION' overridden at queue time > empty (latest).
@@ -511,6 +511,11 @@ stages:
511511

512512
variables:
513513
totalCount: $[ stageDependencies.CheckReadiness.ReadinessCheck.outputs['readiness.TotalCount'] ]
514+
# v0.8.74: Up-to-Date vs Not-Ready breakdown so the summary can
515+
# explain WHY there is nothing to apply (already-patched clusters are
516+
# a healthy steady state, not a failure).
517+
upToDateCount: $[ stageDependencies.CheckReadiness.ReadinessCheck.outputs['readiness.UpToDateCount'] ]
518+
notReadyCount: $[ stageDependencies.CheckReadiness.ReadinessCheck.outputs['readiness.NotReadyCount'] ]
514519
# report the resolved ring (not the raw parameter input) so
515520
# scheduled runs surface the actual ring the resolver picked.
516521
resolvedUpdateRing: $[ stageDependencies.CheckReadiness.ReadinessCheck.outputs['resolveRing.RESOLVED_UPDATE_RING'] ]
@@ -542,4 +547,4 @@ stages:
542547
pwsh: true
543548
script: |
544549
Import-Module AzLocal.UpdateManagement -Force
545-
Add-AzLocalNoReadyClustersStepSummary -UpdateRing $env:RESOLVED_UPDATE_RING -TotalCount "$(totalCount)"
550+
Add-AzLocalNoReadyClustersStepSummary -UpdateRing $env:RESOLVED_UPDATE_RING -TotalCount "$(totalCount)" -UpToDateCount "$(upToDateCount)" -NotReadyCount "$(notReadyCount)"

AzLocal.UpdateManagement/Automation-Pipeline-Examples/azure-devops/assess-update-readiness.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ variables:
7070
# the version actually installed and to the latest on PSGallery, and emits a warning
7171
# log if the YAML appears stale - prompting you to refresh via
7272
# Copy-AzLocalPipelineExample -Update. See Automation-Pipeline-Examples/README.md section 5.
73-
GENERATED_AGAINST_MODULE_VERSION: '0.8.73'
73+
GENERATED_AGAINST_MODULE_VERSION: '0.8.74'
7474
# Resolution order for the module version pin (leave all unset to install the latest,
7575
# which is the default "fix-forward" behaviour): queue-time parameter > pipeline variable
7676
# 'REQUIRED_MODULE_VERSION' overridden at queue time > empty (latest).

AzLocal.UpdateManagement/Automation-Pipeline-Examples/azure-devops/authentication-test.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ variables:
6060
# log if the YAML appears stale - prompting you to refresh via
6161
# Copy-AzLocalPipelineExample -Update. See Automation-Pipeline-Examples/README.md section 5.
6262
- name: GENERATED_AGAINST_MODULE_VERSION
63-
value: '0.8.73'
63+
value: '0.8.74'
6464
# Resolution order for the module version pin (leave all unset to install the latest,
6565
# which is the default "fix-forward" behaviour): queue-time parameter > pipeline variable
6666
# 'REQUIRED_MODULE_VERSION' overridden at queue time > empty (latest).

AzLocal.UpdateManagement/Automation-Pipeline-Examples/azure-devops/fleet-connectivity-status.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ variables:
110110
# the version actually installed and to the latest on PSGallery, and emits a warning
111111
# log if the YAML appears stale - prompting you to refresh via
112112
# Copy-AzLocalPipelineExample -Update. See Automation-Pipeline-Examples/README.md section 5.
113-
GENERATED_AGAINST_MODULE_VERSION: '0.8.73'
113+
GENERATED_AGAINST_MODULE_VERSION: '0.8.74'
114114
# Resolution order for the module version pin (leave all unset to install the latest,
115115
# which is the default "fix-forward" behaviour): queue-time parameter > pipeline variable
116116
# 'REQUIRED_MODULE_VERSION' overridden at queue time > empty (latest).

AzLocal.UpdateManagement/Automation-Pipeline-Examples/azure-devops/fleet-health-status.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ variables:
105105
# the version actually installed and to the latest on PSGallery, and emits a warning
106106
# log if the YAML appears stale - prompting you to refresh via
107107
# Copy-AzLocalPipelineExample -Update. See Automation-Pipeline-Examples/README.md section 5.
108-
GENERATED_AGAINST_MODULE_VERSION: '0.8.73'
108+
GENERATED_AGAINST_MODULE_VERSION: '0.8.74'
109109
# Resolution order for the module version pin (leave all unset to install the latest,
110110
# which is the default "fix-forward" behaviour): queue-time parameter > pipeline variable
111111
# 'REQUIRED_MODULE_VERSION' overridden at queue time > empty (latest).

AzLocal.UpdateManagement/Automation-Pipeline-Examples/azure-devops/fleet-update-status.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ variables:
9393
# the version actually installed and to the latest on PSGallery, and emits a warning
9494
# log if the YAML appears stale - prompting you to refresh via
9595
# Copy-AzLocalPipelineExample -Update. See Automation-Pipeline-Examples/README.md section 5.
96-
GENERATED_AGAINST_MODULE_VERSION: '0.8.73'
96+
GENERATED_AGAINST_MODULE_VERSION: '0.8.74'
9797
# Resolution order for the module version pin (leave all unset to install the latest,
9898
# which is the default "fix-forward" behaviour): queue-time parameter > pipeline variable
9999
# 'REQUIRED_MODULE_VERSION' overridden at queue time > empty (latest).

AzLocal.UpdateManagement/Automation-Pipeline-Examples/azure-devops/inventory-clusters.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ variables:
4343
# log if the YAML appears stale - prompting you to refresh via
4444
# Copy-AzLocalPipelineExample -Update. See Automation-Pipeline-Examples/README.md section 5.
4545
- name: GENERATED_AGAINST_MODULE_VERSION
46-
value: '0.8.73'
46+
value: '0.8.74'
4747
# Resolution order for the module version pin (leave all unset to install the latest,
4848
# which is the default "fix-forward" behaviour): queue-time parameter > pipeline variable
4949
# 'REQUIRED_MODULE_VERSION' overridden at queue time > empty (latest).

AzLocal.UpdateManagement/Automation-Pipeline-Examples/azure-devops/manage-updatering-tags.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ variables:
4646
# log if the YAML appears stale - prompting you to refresh via
4747
# Copy-AzLocalPipelineExample -Update. See Automation-Pipeline-Examples/README.md section 5.
4848
- name: GENERATED_AGAINST_MODULE_VERSION
49-
value: '0.8.73'
49+
value: '0.8.74'
5050
# Resolution order for the module version pin (leave all unset to install the latest,
5151
# which is the default "fix-forward" behaviour): queue-time parameter > pipeline variable
5252
# 'REQUIRED_MODULE_VERSION' overridden at queue time > empty (latest).

AzLocal.UpdateManagement/Automation-Pipeline-Examples/azure-devops/monitor-updates.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ parameters:
8484
default: ''
8585

8686
variables:
87-
GENERATED_AGAINST_MODULE_VERSION: '0.8.73'
87+
GENERATED_AGAINST_MODULE_VERSION: '0.8.74'
8888
REQUIRED_MODULE_VERSION: '${{ parameters.moduleVersion }}'
8989
reportsPath: '$(Build.ArtifactStagingDirectory)/reports'
9090

0 commit comments

Comments
 (0)