Skip to content

feat(acl): convert ACL VHDs to COSI and publish to PMC - #8848

Open
Adams Anaglo (adamsanaglo) wants to merge 54 commits into
mainfrom
aa/cosi-pmc-reconcile
Open

Adams Anaglo (adamsanaglo) wants to merge 54 commits into
mainfrom
aa/cosi-pmc-reconcile

Conversation

@adamsanaglo

@adamsanaglo Adams Anaglo (adamsanaglo) commented Jul 7, 2026

Copy link
Copy Markdown

What this PR does / why we need it:
Builds on the ACL VHD->COSI conversion work to upload the COSI directly to PMC via its AFD upload endpoint under PMC's service connection.

  • Add cosi-upload, a Go tool that uploads via the Azure Blob SDK's chunked block-blob upload to avoid the single Put Blob size limit on large COSI images.
  • Add upload-cosi-to-pmc.sh and packer.mk targets.
  • convert-vhd-to-cosi.sh stages the COSI for upload; cosi-publishing-info.json uses the AFD download URL and adds sha1.
  • Normalize the COSI package version to strict SemVer for Nebraska: convert-vhd-to-cosi.sh strips per-component leading zeros (e.g. 202608.06.0202608.6.0) and appends -fips for FIPS builds (driven by ENABLE_FIPS, never duplicated), writing the result to cosi-publishing-info.json.image_version. IMAGE_VERSION, SIG versions, and blob names are untouched. Covered by ShellSpec tests.
  • Distinguish the ARM64 COSI conversion jobs in the release pipeline.
  • Wire the release pipeline's "Upload COSI to PMC" step and drop the old azcopy copy-to-immutable step.
  • Add azblob and azidentity dependencies.

Which issue(s) this PR fixes:

Fixes #

bfjelds (bfjelds) and others added 23 commits June 29, 2026 20:38
Add a post-build pipeline step that converts AzureContainerLinux (ACL) VHD
images to COSI format using ImageCustomizer's convert command (v1.2.0-2).

Changes:
- New script: convert-vhd-to-cosi.sh downloads ACL VHD from blob storage,
  runs ImageCustomizer convert (VHD -> COSI), and uploads the COSI file
- New make target: convert-vhd-to-cosi in packer.mk
- Pipeline vars: set IMG_CUSTOMIZER_CONTAINER and IMG_CUSTOMIZER_VERSION
  on ACL build jobs in both PR and release pipelines
- Builder template: add Convert ACL VHD to COSI step after SIG->classic
  conversion, conditioned on OS_SKU=AzureContainerLinux
- Immutable copy: updated to also copy/remove .cosi files for ACL builds

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Move the ACL COSI 'az storage blob copy start' from the VHD immutable
copy task into a dedicated task with its own condition gating on
OS_SKU=AzureContainerLinux, rather than using a bash if-block inside
the VHD copy step.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Move 'Convert ACL VHD to COSI' task to after 'Copy to Immutable Storage
Container' so the VHD is safely in immutable storage before conversion.
Revert echo to original 'Successfully copied to immutable container'.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Move 'Copy to Immutable Storage Container' (VHD) after
'Copy COSI to Immutable Storage Container'. New order:
1. Convert ACL VHD to COSI
2. Copy COSI to Immutable Storage Container
3. Copy to Immutable Storage Container (VHD)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Use less specific version tag to pick up patch releases automatically.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
SIG_SOURCE_GALLERY_UNIQUE_NAME, SIG_SOURCE_IMAGE_NAME, and
SIG_SOURCE_IMAGE_VERSION are set but never consumed by any script
or template in the repo.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
FIPS jobs were missing IMG_CUSTOMIZER_CONTAINER and IMG_CUSTOMIZER_VERSION,
which are required for the COSI conversion step.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Create generate-cosi-publishing-info.sh that writes cosi-publishing-info.json
with the immutable storage URL and image metadata, paralleling
generate-vhd-publishing-info.sh for VHDs.

Pipeline steps added after 'Copy COSI to Immutable Storage Container':
- Generate COSI Publishing Info (bash, no az-login needed)
- Publish COSI Publishing Info (artifact: cosi-publishing-info-{artifactName})

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Generate cosi-publishing-info.json (with sha256, size, cosi_url, and
image metadata) directly in convert-vhd-to-cosi.sh while the COSI
artifact is still on disk. Remove the standalone script and make target.

Pipeline order: Convert + generate info -> Publish artifact -> Copy to immutable.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
OS_NAME was referenced in cosi-publishing-info.json but never set.
ACL COSI artifacts are always Linux, so hardcode it.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The container entrypoint is already 'imagecustomizer', so the first
argument should be the subcommand 'convert' directly.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Add an opt-in fallback to convert-vhd-to-cosi.sh so that when the MCR
ImageCustomizer image for the requested version is unavailable, the
script can pull from a configurable fallback registry
(IMG_CUSTOMIZER_CONTAINER_FALLBACK, e.g. ghcr.io/microsoft/imagecustomizer).
The fallback is gated by a script param defaulting to off, normalizes
major.minor versions to major.minor.0 for GHCR's full semver tags, and
is enabled for the ACL COSI conversion step. Bump IMG_CUSTOMIZER_VERSION
from 1.4 to 1.5 for ACL jobs.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Include the tag directly in IMG_CUSTOMIZER_CONTAINER
(mcr.microsoft.com/azurelinux/imagecustomizer:1.5) and
IMG_CUSTOMIZER_CONTAINER_FALLBACK
(ghcr.io/microsoft/imagecustomizer:1.5.0) for the ACL COSI conversion.
Drop the separate IMG_CUSTOMIZER_VERSION variable and the major.minor
to major.minor.0 normalization from convert-vhd-to-cosi.sh, since both
registries now carry fully-qualified tags.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…nnection

- convert-vhd-to-cosi.sh: convert+stage only; emit AFD cosi_url + sha1 for aks-rp cosi register
- upload-cosi-to-pmc.sh (new) + make target: upload staged COSI under PMC's SC (no az-login dep)
- pipeline: Upload COSI to PMC task under COSI_PMC_SERVICE_CONNECTION; drop obsolete COSI immutable-copy step
- fix azExitCode masking + set -u guards
…copy

azcopy cannot infer the service type for a custom *.azurefd.net host and
won't send the AAD token to a non-default trusted suffix. Mint a
storage-scoped token and PUT the staged .cosi directly to PMC's AFD
upload endpoint (AFD passthrough-forwards the Bearer token to the blob
origin), matching the proven Nebraska POC. Stream with curl -T to avoid
loading a multi-GB COSI into memory.
A single Blob REST PUT is capped at 5000 MiB, so the real converted COSI
(>5 GiB) failed with HTTP 413 RequestBodyTooLarge. Replace the curl PUT
with a small cmd/cosi-upload Go tool that uses the Azure Blob SDK's
UploadFile (16 MiB blocks, concurrency 8), which chunks via Put Block +
Put Block List and is not subject to the single-PUT limit. Auth is
unchanged (Microsoft Entra via the AzureCLI@2 login); AFD forwards the
bearer token to the blob origin. azblob/azidentity are pinned to the
versions already used by the e2e module.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR extends the Azure Container Linux (ACL) VHD → COSI flow by adding a dedicated upload path to PMC via an Azure Front Door (AFD) upload endpoint, wiring the new conversion + upload steps into the VHD builder release pipeline, and introducing a small Go-based uploader that uses Azure Blob SDK block uploads to avoid single-request size limits.

Changes:

  • Add an ImageCustomizer-based VHD→COSI conversion script that stages the artifact and emits cosi-publishing-info.json (including sha1).
  • Add a Go CLI (cmd/cosi-upload) plus a wrapper script to upload large COSI artifacts via chunked block-blob upload using Azure CLI (Entra ID) auth.
  • Wire new “Convert ACL VHD to COSI” and “Upload COSI to PMC” steps into the builder release template and set ImageCustomizer image variables in pipeline definitions.

Reviewed changes

Copilot reviewed 8 out of 10 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
vhdbuilder/packer/imagecustomizer/scripts/convert-vhd-to-cosi.sh Downloads the staged ACL VHD, converts it to COSI via ImageCustomizer, stages the COSI, and generates cosi-publishing-info.json with hashes.
vhdbuilder/packer/imagecustomizer/scripts/upload-cosi-to-pmc.sh Validates expected environment + artifacts and invokes the Go uploader to push to the PMC AFD upload endpoint.
cmd/cosi-upload/main.go Implements block/chunked upload using azblob with Azure CLI credential for pipeline auth.
packer.mk Adds convert-vhd-to-cosi, build-cosi-upload, and upload-cosi-to-pmc targets used by pipeline steps.
.pipelines/templates/.builder-release-template.yaml Adds pipeline tasks to convert ACL VHD to COSI and upload COSI to PMC, and publishes cosi-publishing-info.json.
.pipelines/.vsts-vhd-builder.yaml Sets ImageCustomizer container image variables (primary + GHCR fallback) for relevant stages.
.pipelines/.vsts-vhd-builder-release.yaml Sets ImageCustomizer container image variables (primary + GHCR fallback) for relevant stages.
go.mod Adds Azure Blob SDK + Azure Identity dependencies required by the new uploader tool.
go.sum Updates module checksums for newly introduced Go dependencies.

Comment thread packer.mk Outdated
Comment thread .pipelines/templates/.builder-release-template.yaml
Copilot AI review requested due to automatic review settings July 7, 2026 16:58
Copilot AI review requested due to automatic review settings September 8, 2026 16:17
Co-authored-by: adamsanaglo <56308410+adamsanaglo@users.noreply.github.com>

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

The new arm64 conversion job bootstraps tooling by executing unpinned remote install scripts/binaries without integrity verification, which is a supply-chain security risk.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Review details

Suppressed comments (1)

.pipelines/templates/.builder-cosi-convert-template.yaml:93

  • The arm64 convert bootstrap downloads and executes a remote Azure CLI installer script as root (curl + sudo bash). That creates an avoidable supply-chain risk and makes the job behavior dependent on a mutable external script. Prefer installing Azure CLI via explicit, reviewed package-repo steps (or preinstalling az on the pool image), rather than executing a downloaded script.
                  tmp="$(mktemp -d)"
                  curl -fsSL https://aka.ms/InstallAzureCLIDeb -o "$tmp/install-azure-cli.sh"
                  sudo bash "$tmp/install-azure-cli.sh"
                  rm -rf "$tmp"
  • Files reviewed: 23/24 changed files
  • Comments generated: 1
  • Review effort level: Lite

Comment thread .pipelines/templates/.builder-cosi-convert-template.yaml

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

The new pipeline/make targets have confirmed build-time failures on clean agents (missing output dir for bin/cosi-upload and missing Go install path for apt-based arm64 convert jobs).

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Review details

Suppressed comments (1)

packer.mk:112

  • build-cosi-upload writes to bin/cosi-upload but the repo root does not include a bin/ directory and the target doesn’t create it, so go build -o bin/cosi-upload ... will fail on a clean checkout (and then upload-cosi-to-pmc.sh won’t find the uploader). Create the output directory before building.
build-cosi-upload:
	@echo "Building cosi-upload binary"
	@GOEXPERIMENT=ms_nocgo_opensslcrypto CGO_ENABLED=0 go build -o bin/cosi-upload ./cmd/cosi-upload
  • Files reviewed: 23/24 changed files
  • Comments generated: 1
  • Review effort level: Lite

Comment thread .pipelines/templates/.builder-cosi-convert-template.yaml Outdated
Co-authored-by: adamsanaglo <56308410+adamsanaglo@users.noreply.github.com>

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

It modifies the release/publishing pipeline and introduces new artifact upload mechanics and bootstrap steps, which warrants careful human validation in the real build environment.

Review details

Suppressed comments (2)

Previously missed (2) — in code that hasn't changed since the last review.

vhdbuilder/packer/imagecustomizer/scripts/convert-vhd-to-cosi.sh:60

  • Same as upload-cosi-to-pmc.sh: failing required env vars currently uses a plain echo, while later failures use ##vso[task.logissue type=error].... Emitting logissue here makes diagnosis consistent when a pipeline variable is missing or renamed.
    vhdbuilder/packer/imagecustomizer/scripts/upload-cosi-to-pmc.sh:21
  • The missing-required-env-var branch prints a plain message, but other failures in this script use Azure DevOps logissue formatting. Using ##vso[task.logissue type=error]... here makes the error show up consistently in the pipeline UI and logs.
  • Files reviewed: 23/24 changed files
  • Comments generated: 1
  • Review effort level: Lite

Comment thread .pipelines/templates/.builder-cosi-convert-template.yaml
Co-authored-by: adamsanaglo <56308410+adamsanaglo@users.noreply.github.com>

Copilot AI commented Sep 8, 2026

Copy link
Copy Markdown
Contributor

🟡 Changes recommended

The new pipeline/make targets have confirmed build-time failures on clean agents (missing output dir for bin/cosi-upload and missing Go install path for apt-based arm64...

Created the bin output directory before building cosi-upload in commit eb5d9d18f. The clean-agent target now has the required destination path.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

The new conversion/upload scripts and arm64 pipeline path introduce CI-breaking shell linting/toolchain risks that should be resolved before approval.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Review details

Suppressed comments (2)

vhdbuilder/packer/imagecustomizer/scripts/upload-cosi-to-pmc.sh:14

  • make validate-shell runs a POSIX ShellCheck pass (shellcheck --shell=sh) on most *.sh files, and this env-var check uses bash-only array syntax and indirect expansion (${!v}), which will fail CI. Rewrite the validation in POSIX-compatible syntax (or add this script to BASH_ONLY_LIST in .pipelines/scripts/verify_shell.sh).
required_env_vars=(
    "CAPTURED_SIG_VERSION"
    "AFD_UPLOAD_ENDPOINT"
    "COSI_CONTAINER"
)

vhdbuilder/packer/imagecustomizer/scripts/convert-vhd-to-cosi.sh:51

  • This script uses multiple bash-only constructs (arrays, local, here-strings <<<, ${var,,}, shopt, etc.). CI’s make validate-shell runs a POSIX ShellCheck pass (shellcheck --shell=sh) on *.sh files not listed in BASH_ONLY_LIST (.pipelines/scripts/verify_shell.sh), so this will fail unless it’s explicitly marked bash-only there or rewritten to be POSIX-compliant.
required_env_vars=(
    "DESTINATION_STORAGE_CONTAINER"
    "CAPTURED_SIG_VERSION"
    "IMG_CUSTOMIZER_CONTAINER"
    "AFD_DOWNLOAD_HOSTNAME"
  • Files reviewed: 23/24 changed files
  • Comments generated: 1
  • Review effort level: Lite

Comment thread .pipelines/templates/.builder-cosi-convert-template.yaml Outdated
Copilot AI and others added 2 commits September 8, 2026 18:26
Co-authored-by: adamsanaglo <56308410+adamsanaglo@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

The updated CSE-command goldens appear to skip init-aks-cloud.sh entirely (missing INIT_AKS_CLOUD_FILEPATH/env wiring), which is a high-risk provisioning regression, and the pipeline changes are substantial.

Review details

Suppressed comments (1)

Previously missed (1) — in code that hasn't changed since the last review.

.pipelines/templates/.builder-release-template.yaml:27

  • tar --exclude='./.git' only matches the .git directory entry itself, but it does not exclude .git/*, so the source bundle can still capture the entire Git history and bloat the artifact. Exclude the .git subtree explicitly to keep the bundle small and avoid leaking repo metadata into the arm64 conversion job artifact.
  • Files reviewed: 23/24 changed files
  • Comments generated: 13
  • Review effort level: Lite

Comment thread aks-node-controller/parser/testdata/AKSUbuntu2204+China/generatedCSECommand Outdated
Comment thread aks-node-controller/parser/testdata/AKSUbuntu2204+CustomCloud/generatedCSECommand Outdated
Comment thread aks-node-controller/parser/testdata/AKSUbuntu2204+LocalDNS/generatedCSECommand Outdated
Comment thread aks-node-controller/parser/testdata/AKSUbuntu2204+SSHStatusOn/generatedCSECommand Outdated
Comment thread aks-node-controller/parser/testdata/Compatibility+EmptyConfig/generatedCSECommand Outdated

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

It introduces a new publishing tool and modifies release pipeline flows (including a new arm64 conversion job), which warrants manual validation of CI behavior and rollout impact.

Review details

Suppressed comments (1)

Previously missed (1) — in code that hasn't changed since the last review.

.pipelines/templates/.builder-cosi-convert-template.yaml:126

  • The AzCopy bootstrap checksum verification uses sha256sum --check --status, which suppresses all output even on failure. If the pinned URL changes or the download is corrupted, the step will exit non-zero without any clue why, making troubleshooting difficult. Consider printing the mismatch and emitting a VSO error message when verification fails.
  • Files reviewed: 14/15 changed files
  • Comments generated: 0 new
  • Review effort level: Lite

azcopyvnext.azureedge.net no longer resolves after the Edgio azureedge.net CDN retirement, breaking the arm64 convert bootstrap. Repoint the azcopy download to GitHub releases; same v10.22.1 and same pinned SHA256 (tarballs are byte-identical, checksum verification unchanged).
@github-actions

Copy link
Copy Markdown
Contributor

Changes cached containers or packages on windows VHDs

Please get a Windows SIG member to approve.

The following dif file shows any additions or deletions from what will be cached on windows VHDs organised by VHD type.

  • Additions are new things cached.
  • Deletions are things no longer cached.
diff --git a/vhd_files/2022-containerd-gen2.txt b/vhd_files/2022-containerd-gen2.txt
index 4e05767..20066f0 100644
--- a/vhd_files/2022-containerd-gen2.txt
+++ b/vhd_files/2022-containerd-gen2.txt
@@ -18,6 +17,0 @@ c:\akse-cache\csi-proxy\: https://packages.aks.azure.com/csi-proxy/v1.1.2-hotfix
-c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.28.102-akslts/windowszip/v1.28.102-akslts-1int.zip
-c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.28.103-akslts/windowszip/v1.28.103-akslts-1int.zip
-c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.29.100-akslts/windowszip/v1.29.100-akslts-1int.zip
-c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.29.101-akslts/windowszip/v1.29.101-akslts-1int.zip
-c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.30.100-akslts/windowszip/v1.30.100-akslts-1int.zip
-c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.30.101-akslts/windowszip/v1.30.101-akslts-1int.zip
@@ -25 +18,0 @@ c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.31.13/windo
-c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.31.14/windowszip/v1.31.14-1int.zip
@@ -27,2 +19,0 @@ c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.32.11/windo
-c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.32.12/windowszip/v1.32.12-1int.zip
-c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.33.11/windowszip/v1.33.11-1int.zip
@@ -30,2 +21,4 @@ c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.33.13/windo
-c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.34.7/windowszip/v1.34.7-1int.zip
-c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.34.9/windowszip/v1.34.9-1int.zip
+c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.34.11/windowszip/v1.34.11-1int.zip
+c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.35.8/windowszip/v1.35.8-1int.zip
+c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.36.4/windowszip/v1.36.4-1int.zip
+c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.37.0/windowszip/v1.37.0-1int.zip
@@ -127 +119,0 @@ mcr.microsoft.com/oss/v2/kubernetes-csi/secrets-store/driver:v1.6.0-7
-mcr.microsoft.com/oss/v2/kubernetes/azure-cloud-node-manager:v1.33.16-windows-hpc-1
@@ -129 +121 @@ mcr.microsoft.com/oss/v2/kubernetes/azure-cloud-node-manager:v1.33.17-windows-hp
-mcr.microsoft.com/oss/v2/kubernetes/azure-cloud-node-manager:v1.34.12-windows-hpc-1
+mcr.microsoft.com/oss/v2/kubernetes/azure-cloud-node-manager:v1.33.18-windows-hpc-1
@@ -131 +123 @@ mcr.microsoft.com/oss/v2/kubernetes/azure-cloud-node-manager:v1.34.13-windows-hp
-mcr.microsoft.com/oss/v2/kubernetes/azure-cloud-node-manager:v1.35.7-windows-hpc-1
+mcr.microsoft.com/oss/v2/kubernetes/azure-cloud-node-manager:v1.34.14-windows-hpc-1
@@ -133 +125 @@ mcr.microsoft.com/oss/v2/kubernetes/azure-cloud-node-manager:v1.35.8-windows-hpc
-mcr.microsoft.com/oss/v2/kubernetes/azure-cloud-node-manager:v1.36.4-windows-hpc-1
+mcr.microsoft.com/oss/v2/kubernetes/azure-cloud-node-manager:v1.35.9-windows-hpc-1
@@ -134,0 +127 @@ mcr.microsoft.com/oss/v2/kubernetes/azure-cloud-node-manager:v1.36.5-windows-hpc
+mcr.microsoft.com/oss/v2/kubernetes/azure-cloud-node-manager:v1.36.6-windows-hpc-1
@@ -138 +130,0 @@ mcr.microsoft.com/windows/nanoserver:ltsc2022
-mcr.microsoft.com/windows/servercore:10.0.20348.5386
@@ -139,0 +132 @@ mcr.microsoft.com/windows/servercore:10.0.20348.5499
+mcr.microsoft.com/windows/servercore:10.0.20348.5622
@@ -145 +138 @@ Windows 2022-containerd-gen2 base image sku: 2022-datacenter-core-smalldisk-g2
-Windows 2022-containerd-gen2 base version: 20348.5499.260809
+Windows 2022-containerd-gen2 base version: 20348.5622.260906
diff --git a/vhd_files/2022-containerd.txt b/vhd_files/2022-containerd.txt
index a8c76d7..d47f9d3 100644
--- a/vhd_files/2022-containerd.txt
+++ b/vhd_files/2022-containerd.txt
@@ -18,6 +17,0 @@ c:\akse-cache\csi-proxy\: https://packages.aks.azure.com/csi-proxy/v1.1.2-hotfix
-c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.28.102-akslts/windowszip/v1.28.102-akslts-1int.zip
-c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.28.103-akslts/windowszip/v1.28.103-akslts-1int.zip
-c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.29.100-akslts/windowszip/v1.29.100-akslts-1int.zip
-c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.29.101-akslts/windowszip/v1.29.101-akslts-1int.zip
-c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.30.100-akslts/windowszip/v1.30.100-akslts-1int.zip
-c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.30.101-akslts/windowszip/v1.30.101-akslts-1int.zip
@@ -25 +18,0 @@ c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.31.13/windo
-c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.31.14/windowszip/v1.31.14-1int.zip
@@ -27,2 +19,0 @@ c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.32.11/windo
-c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.32.12/windowszip/v1.32.12-1int.zip
-c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.33.11/windowszip/v1.33.11-1int.zip
@@ -30,2 +21,4 @@ c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.33.13/windo
-c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.34.7/windowszip/v1.34.7-1int.zip
-c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.34.9/windowszip/v1.34.9-1int.zip
+c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.34.11/windowszip/v1.34.11-1int.zip
+c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.35.8/windowszip/v1.35.8-1int.zip
+c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.36.4/windowszip/v1.36.4-1int.zip
+c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.37.0/windowszip/v1.37.0-1int.zip
@@ -127 +119,0 @@ mcr.microsoft.com/oss/v2/kubernetes-csi/secrets-store/driver:v1.6.0-7
-mcr.microsoft.com/oss/v2/kubernetes/azure-cloud-node-manager:v1.33.16-windows-hpc-1
@@ -129 +121 @@ mcr.microsoft.com/oss/v2/kubernetes/azure-cloud-node-manager:v1.33.17-windows-hp
-mcr.microsoft.com/oss/v2/kubernetes/azure-cloud-node-manager:v1.34.12-windows-hpc-1
+mcr.microsoft.com/oss/v2/kubernetes/azure-cloud-node-manager:v1.33.18-windows-hpc-1
@@ -131 +123 @@ mcr.microsoft.com/oss/v2/kubernetes/azure-cloud-node-manager:v1.34.13-windows-hp
-mcr.microsoft.com/oss/v2/kubernetes/azure-cloud-node-manager:v1.35.7-windows-hpc-1
+mcr.microsoft.com/oss/v2/kubernetes/azure-cloud-node-manager:v1.34.14-windows-hpc-1
@@ -133 +125 @@ mcr.microsoft.com/oss/v2/kubernetes/azure-cloud-node-manager:v1.35.8-windows-hpc
-mcr.microsoft.com/oss/v2/kubernetes/azure-cloud-node-manager:v1.36.4-windows-hpc-1
+mcr.microsoft.com/oss/v2/kubernetes/azure-cloud-node-manager:v1.35.9-windows-hpc-1
@@ -134,0 +127 @@ mcr.microsoft.com/oss/v2/kubernetes/azure-cloud-node-manager:v1.36.5-windows-hpc
+mcr.microsoft.com/oss/v2/kubernetes/azure-cloud-node-manager:v1.36.6-windows-hpc-1
@@ -138 +130,0 @@ mcr.microsoft.com/windows/nanoserver:ltsc2022
-mcr.microsoft.com/windows/servercore:10.0.20348.5386
@@ -139,0 +132 @@ mcr.microsoft.com/windows/servercore:10.0.20348.5499
+mcr.microsoft.com/windows/servercore:10.0.20348.5622
@@ -145 +138 @@ Windows 2022-containerd base image sku: 2022-Datacenter-Core-smalldisk
-Windows 2022-containerd base version: 20348.5499.260809
+Windows 2022-containerd base version: 20348.5622.260906
diff --git a/vhd_files/2025-gen2-tl.txt b/vhd_files/2025-gen2-tl.txt
index e49ede0..13735dd 100644
--- a/vhd_files/2025-gen2-tl.txt
+++ b/vhd_files/2025-gen2-tl.txt
@@ -15,7 +15 @@ c:\akse-cache\csi-proxy\: https://packages.aks.azure.com/csi-proxy/v1.1.2-hotfix
-c:\akse-cache\wcn\: mcr.microsoft.com/wcn/package:1.7.1-cpu-arch
-c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.28.102-akslts/windowszip/v1.28.102-akslts-1int.zip
-c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.28.103-akslts/windowszip/v1.28.103-akslts-1int.zip
-c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.29.100-akslts/windowszip/v1.29.100-akslts-1int.zip
-c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.29.101-akslts/windowszip/v1.29.101-akslts-1int.zip
-c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.30.100-akslts/windowszip/v1.30.100-akslts-1int.zip
-c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.30.101-akslts/windowszip/v1.30.101-akslts-1int.zip
+c:\akse-cache\wcn\: mcr.microsoft.com/wcn/package:1.8.0-cpu-arch
@@ -23 +16,0 @@ c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.31.13/windo
-c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.31.14/windowszip/v1.31.14-1int.zip
@@ -25,2 +17,0 @@ c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.32.11/windo
-c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.32.12/windowszip/v1.32.12-1int.zip
-c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.33.11/windowszip/v1.33.11-1int.zip
@@ -28,2 +19,4 @@ c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.33.13/windo
-c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.34.7/windowszip/v1.34.7-1int.zip
-c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.34.9/windowszip/v1.34.9-1int.zip
+c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.34.11/windowszip/v1.34.11-1int.zip
+c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.35.8/windowszip/v1.35.8-1int.zip
+c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.36.4/windowszip/v1.36.4-1int.zip
+c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.37.0/windowszip/v1.37.0-1int.zip
@@ -58 +50,0 @@ mcr.microsoft.com/oss/v2/kubernetes-csi/secrets-store/driver:v1.6.0-7
-mcr.microsoft.com/oss/v2/kubernetes/azure-cloud-node-manager:v1.33.16-windows-hpc-1
@@ -60 +52 @@ mcr.microsoft.com/oss/v2/kubernetes/azure-cloud-node-manager:v1.33.17-windows-hp
-mcr.microsoft.com/oss/v2/kubernetes/azure-cloud-node-manager:v1.34.12-windows-hpc-1
+mcr.microsoft.com/oss/v2/kubernetes/azure-cloud-node-manager:v1.33.18-windows-hpc-1
@@ -62 +54 @@ mcr.microsoft.com/oss/v2/kubernetes/azure-cloud-node-manager:v1.34.13-windows-hp
-mcr.microsoft.com/oss/v2/kubernetes/azure-cloud-node-manager:v1.35.7-windows-hpc-1
+mcr.microsoft.com/oss/v2/kubernetes/azure-cloud-node-manager:v1.34.14-windows-hpc-1
@@ -64 +56 @@ mcr.microsoft.com/oss/v2/kubernetes/azure-cloud-node-manager:v1.35.8-windows-hpc
-mcr.microsoft.com/oss/v2/kubernetes/azure-cloud-node-manager:v1.36.4-windows-hpc-1
+mcr.microsoft.com/oss/v2/kubernetes/azure-cloud-node-manager:v1.35.9-windows-hpc-1
@@ -65,0 +58 @@ mcr.microsoft.com/oss/v2/kubernetes/azure-cloud-node-manager:v1.36.5-windows-hpc
+mcr.microsoft.com/oss/v2/kubernetes/azure-cloud-node-manager:v1.36.6-windows-hpc-1
@@ -70 +62,0 @@ mcr.microsoft.com/windows/nanoserver:ltsc2025
-mcr.microsoft.com/windows/servercore:10.0.20348.5386
@@ -72 +64 @@ mcr.microsoft.com/windows/servercore:10.0.20348.5499
-mcr.microsoft.com/windows/servercore:10.0.26100.33158
+mcr.microsoft.com/windows/servercore:10.0.20348.5622
@@ -73,0 +66 @@ mcr.microsoft.com/windows/servercore:10.0.26100.33296
+mcr.microsoft.com/windows/servercore:10.0.26100.33438
@@ -80 +73 @@ Windows 2025-gen2-tl base image sku: 2025-datacenter-core-smalldisk-g2
-Windows 2025-gen2-tl base version: 26100.33296.260809
+Windows 2025-gen2-tl base version: 26100.33438.260905
diff --git a/vhd_files/2025-gen2.txt b/vhd_files/2025-gen2.txt
index eec1d89..6fd7e0f 100644
--- a/vhd_files/2025-gen2.txt
+++ b/vhd_files/2025-gen2.txt
@@ -15,7 +15 @@ c:\akse-cache\csi-proxy\: https://packages.aks.azure.com/csi-proxy/v1.1.2-hotfix
-c:\akse-cache\wcn\: mcr.microsoft.com/wcn/package:1.7.1-cpu-arch
-c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.28.102-akslts/windowszip/v1.28.102-akslts-1int.zip
-c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.28.103-akslts/windowszip/v1.28.103-akslts-1int.zip
-c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.29.100-akslts/windowszip/v1.29.100-akslts-1int.zip
-c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.29.101-akslts/windowszip/v1.29.101-akslts-1int.zip
-c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.30.100-akslts/windowszip/v1.30.100-akslts-1int.zip
-c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.30.101-akslts/windowszip/v1.30.101-akslts-1int.zip
+c:\akse-cache\wcn\: mcr.microsoft.com/wcn/package:1.8.0-cpu-arch
@@ -23 +16,0 @@ c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.31.13/windo
-c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.31.14/windowszip/v1.31.14-1int.zip
@@ -25,2 +17,0 @@ c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.32.11/windo
-c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.32.12/windowszip/v1.32.12-1int.zip
-c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.33.11/windowszip/v1.33.11-1int.zip
@@ -28,2 +19,4 @@ c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.33.13/windo
-c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.34.7/windowszip/v1.34.7-1int.zip
-c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.34.9/windowszip/v1.34.9-1int.zip
+c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.34.11/windowszip/v1.34.11-1int.zip
+c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.35.8/windowszip/v1.35.8-1int.zip
+c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.36.4/windowszip/v1.36.4-1int.zip
+c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.37.0/windowszip/v1.37.0-1int.zip
@@ -58 +50,0 @@ mcr.microsoft.com/oss/v2/kubernetes-csi/secrets-store/driver:v1.6.0-7
-mcr.microsoft.com/oss/v2/kubernetes/azure-cloud-node-manager:v1.33.16-windows-hpc-1
@@ -60 +52 @@ mcr.microsoft.com/oss/v2/kubernetes/azure-cloud-node-manager:v1.33.17-windows-hp
-mcr.microsoft.com/oss/v2/kubernetes/azure-cloud-node-manager:v1.34.12-windows-hpc-1
+mcr.microsoft.com/oss/v2/kubernetes/azure-cloud-node-manager:v1.33.18-windows-hpc-1
@@ -62 +54 @@ mcr.microsoft.com/oss/v2/kubernetes/azure-cloud-node-manager:v1.34.13-windows-hp
-mcr.microsoft.com/oss/v2/kubernetes/azure-cloud-node-manager:v1.35.7-windows-hpc-1
+mcr.microsoft.com/oss/v2/kubernetes/azure-cloud-node-manager:v1.34.14-windows-hpc-1
@@ -64 +56 @@ mcr.microsoft.com/oss/v2/kubernetes/azure-cloud-node-manager:v1.35.8-windows-hpc
-mcr.microsoft.com/oss/v2/kubernetes/azure-cloud-node-manager:v1.36.4-windows-hpc-1
+mcr.microsoft.com/oss/v2/kubernetes/azure-cloud-node-manager:v1.35.9-windows-hpc-1
@@ -65,0 +58 @@ mcr.microsoft.com/oss/v2/kubernetes/azure-cloud-node-manager:v1.36.5-windows-hpc
+mcr.microsoft.com/oss/v2/kubernetes/azure-cloud-node-manager:v1.36.6-windows-hpc-1
@@ -70 +62,0 @@ mcr.microsoft.com/windows/nanoserver:ltsc2025
-mcr.microsoft.com/windows/servercore:10.0.20348.5386
@@ -72 +64 @@ mcr.microsoft.com/windows/servercore:10.0.20348.5499
-mcr.microsoft.com/windows/servercore:10.0.26100.33158
+mcr.microsoft.com/windows/servercore:10.0.20348.5622
@@ -73,0 +66 @@ mcr.microsoft.com/windows/servercore:10.0.26100.33296
+mcr.microsoft.com/windows/servercore:10.0.26100.33438
@@ -80 +73 @@ Windows 2025-gen2 base image sku: 2025-datacenter-core-smalldisk-g2
-Windows 2025-gen2 base version: 26100.33296.260809
+Windows 2025-gen2 base version: 26100.33438.260905
diff --git a/vhd_files/2025.txt b/vhd_files/2025.txt
index 5997647..09e5f1c 100644
--- a/vhd_files/2025.txt
+++ b/vhd_files/2025.txt
@@ -15,7 +15 @@ c:\akse-cache\csi-proxy\: https://packages.aks.azure.com/csi-proxy/v1.1.2-hotfix
-c:\akse-cache\wcn\: mcr.microsoft.com/wcn/package:1.7.1-cpu-arch
-c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.28.102-akslts/windowszip/v1.28.102-akslts-1int.zip
-c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.28.103-akslts/windowszip/v1.28.103-akslts-1int.zip
-c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.29.100-akslts/windowszip/v1.29.100-akslts-1int.zip
-c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.29.101-akslts/windowszip/v1.29.101-akslts-1int.zip
-c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.30.100-akslts/windowszip/v1.30.100-akslts-1int.zip
-c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.30.101-akslts/windowszip/v1.30.101-akslts-1int.zip
+c:\akse-cache\wcn\: mcr.microsoft.com/wcn/package:1.8.0-cpu-arch
@@ -23 +16,0 @@ c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.31.13/windo
-c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.31.14/windowszip/v1.31.14-1int.zip
@@ -25,2 +17,0 @@ c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.32.11/windo
-c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.32.12/windowszip/v1.32.12-1int.zip
-c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.33.11/windowszip/v1.33.11-1int.zip
@@ -28,2 +19,4 @@ c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.33.13/windo
-c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.34.7/windowszip/v1.34.7-1int.zip
-c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.34.9/windowszip/v1.34.9-1int.zip
+c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.34.11/windowszip/v1.34.11-1int.zip
+c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.35.8/windowszip/v1.35.8-1int.zip
+c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.36.4/windowszip/v1.36.4-1int.zip
+c:\akse-cache\win-k8s\: https://packages.aks.azure.com/kubernetes/v1.37.0/windowszip/v1.37.0-1int.zip
@@ -58 +50,0 @@ mcr.microsoft.com/oss/v2/kubernetes-csi/secrets-store/driver:v1.6.0-7
-mcr.microsoft.com/oss/v2/kubernetes/azure-cloud-node-manager:v1.33.16-windows-hpc-1
@@ -60 +52 @@ mcr.microsoft.com/oss/v2/kubernetes/azure-cloud-node-manager:v1.33.17-windows-hp
-mcr.microsoft.com/oss/v2/kubernetes/azure-cloud-node-manager:v1.34.12-windows-hpc-1
+mcr.microsoft.com/oss/v2/kubernetes/azure-cloud-node-manager:v1.33.18-windows-hpc-1
@@ -62 +54 @@ mcr.microsoft.com/oss/v2/kubernetes/azure-cloud-node-manager:v1.34.13-windows-hp
-mcr.microsoft.com/oss/v2/kubernetes/azure-cloud-node-manager:v1.35.7-windows-hpc-1
+mcr.microsoft.com/oss/v2/kubernetes/azure-cloud-node-manager:v1.34.14-windows-hpc-1
@@ -64 +56 @@ mcr.microsoft.com/oss/v2/kubernetes/azure-cloud-node-manager:v1.35.8-windows-hpc
-mcr.microsoft.com/oss/v2/kubernetes/azure-cloud-node-manager:v1.36.4-windows-hpc-1
+mcr.microsoft.com/oss/v2/kubernetes/azure-cloud-node-manager:v1.35.9-windows-hpc-1
@@ -65,0 +58 @@ mcr.microsoft.com/oss/v2/kubernetes/azure-cloud-node-manager:v1.36.5-windows-hpc
+mcr.microsoft.com/oss/v2/kubernetes/azure-cloud-node-manager:v1.36.6-windows-hpc-1
@@ -70 +62,0 @@ mcr.microsoft.com/windows/nanoserver:ltsc2025
-mcr.microsoft.com/windows/servercore:10.0.20348.5386
@@ -72 +64 @@ mcr.microsoft.com/windows/servercore:10.0.20348.5499
-mcr.microsoft.com/windows/servercore:10.0.26100.33158
+mcr.microsoft.com/windows/servercore:10.0.20348.5622
@@ -73,0 +66 @@ mcr.microsoft.com/windows/servercore:10.0.26100.33296
+mcr.microsoft.com/windows/servercore:10.0.26100.33438
@@ -80 +73 @@ Windows 2025 base image sku: 2025-datacenter-core-smalldisk
-Windows 2025 base version: 26100.33296.260809
+Windows 2025 base version: 26100.33438.260905

@github-actions

Copy link
Copy Markdown
Contributor

Code Coverage

Package Line Rate Health
github.com/Azure/agentbaker/aks-node-controller 72%
github.com/Azure/agentbaker/aks-node-controller/common 100%
github.com/Azure/agentbaker/aks-node-controller/helpers 71%
github.com/Azure/agentbaker/aks-node-controller/parser 89%
github.com/Azure/agentbaker/aks-node-controller/pkg/gpu 100%
github.com/Azure/agentbaker/aks-node-controller/pkg/nodeconfigutils 66%
github.com/Azure/agentbaker/aks-node-controller/utils 0%
github.com/Azure/agentbaker/apiserver 25%
github.com/Azure/agentbaker/cmd/cosi-upload 0%
github.com/Azure/agentbaker/cmd 0%
github.com/Azure/agentbaker/cmd/starter 0%
github.com/Azure/agentbaker/fuzz/api 0%
github.com/Azure/agentbaker/hotfix/render-nodecustomdata 0%
github.com/Azure/agentbaker/pkg/agent 76%
github.com/Azure/agentbaker/pkg/agent/datamodel 76%
github.com/Azure/agentbaker/pkg/agent/toggles 0%
github.com/Azure/agentbaker/pkg/vhdbuilder/datamodel 88%
Summary 73% (6311 / 8613)

@github-actions

Copy link
Copy Markdown
Contributor

Code Coverage

Package Line Rate Health
staging_cse_windows Package 1 58%
debug 0%
provisioningscripts 2%
parts_windows Package 1 76%
test 0%
windows 21%
Summary 36% (1434 / 6706)

@github-actions

Copy link
Copy Markdown
Contributor

Code Coverage

Package Line Rate Health
shellspec spec 20%
Summary 20% (2833 / 13991)

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Unresolved pipeline gating, asynchronous blob-copy cleanup, environment selection, and image-version handoff issues block approval.

Get a fresh assessment by requesting another Copilot review.

Review details

Suppressed comments (4)

.pipelines/.vsts-vhd-builder-release.yaml:927

  • This job is not gated on GENERATE_PUBLISHING_INFO. When publishing is disabled, the parent skips COSI conversion, but this child still bootstraps Docker/Azure CLI and downloads the source bundle; any bootstrap failure can fail an otherwise valid non-publishing release and it needlessly consumes the native pool. Add the publishing flag to the job condition so the job is skipped as a whole.
        condition: and(succeeded(), eq('${{ parameters.buildaclarm64tlgen2 }}', true))

.pipelines/.vsts-vhd-builder-release.yaml:956

  • This FIPS native conversion job has the same unconditional job-level execution: with GENERATE_PUBLISHING_INFO disabled, it still runs the bootstrap and artifact-download steps even though every COSI step is later skipped. That can fail or waste a release that does not request publishing; include the publishing flag in this job condition as well.
        condition: and(succeeded(), eq('${{ parameters.buildaclarm64fipstlgen2 }}', true))

.pipelines/templates/.builder-cosi-convert-template.yaml:186

  • The parent build selects CLASSIC_BLOB_STAGING only for ENVIRONMENT=tme and otherwise uploads the VHD to CLASSIC_BLOB, but this native job always sets DESTINATION_STORAGE_CONTAINER to the staging URL. In a non-TME run the convert step will therefore download from an empty or wrong location and fail; mirror the environment-dependent selection used by the parent template.
      echo "##vso[task.setvariable variable=DESTINATION_STORAGE_CONTAINER]${CLASSIC_BLOB_STAGING}"
      echo "DESTINATION_STORAGE_CONTAINER is set to ${CLASSIC_BLOB_STAGING}"

.pipelines/templates/.builder-release-template.yaml:193

  • 🟡 Medium Risk — This handoff exports only CAPTURED_SIG_VERSION to the native-arm64 job, but convert-vhd-to-cosi.sh derives cosi-publishing-info.json.image_version from IMAGE_VERSION and falls back to the conversion date when that variable is absent. The native job therefore cannot preserve a build-scoped/overridden image version (and can publish a different package version if conversion crosses a date boundary). Export IMAGE_VERSION alongside the captured SIG version and bind that output in the native job, or fail instead of silently defaulting.
      echo "##vso[task.setvariable variable=CAPTURED_SIG_VERSION;isOutput=true]${CAPTURED_SIG_VERSION}"
  • Files reviewed: 14/15 changed files
  • Comments generated: 1
  • Review effort level: Lite

Comment on lines +234 to +237
az storage blob copy start --account-name "$STORAGE_ACCOUNT_NAME" --destination-blob "${CAPTURED_SIG_VERSION}.vhd" --destination-container "$VHD_CONTAINER_NAME" --source-uri "${DESTINATION_STORAGE_CONTAINER}/${CAPTURED_SIG_VERSION}.vhd" --auth-mode login || exit 1
echo "Successfully copied to immutable container"
# Remove old VHD from staging container after copy to immutable container is complete
azcopy remove "${DESTINATION_STORAGE_CONTAINER}/${CAPTURED_SIG_VERSION}.vhd" --recursive=true
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants