Unblock CI: 1ES grace period for deprecated Vanilla Windows 2022 SDL image - #421
Open
Lara Bailen Boluda (larabail) wants to merge 1 commit into
Open
Unblock CI: 1ES grace period for deprecated Vanilla Windows 2022 SDL image#421Lara Bailen Boluda (larabail) wants to merge 1 commit into
Lara Bailen Boluda (larabail) wants to merge 1 commit into
Conversation
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.
What broke
Every build in this repo fails in stage
🔒 SDLSources, task1ES PT Pre-Job:No PR caused this. 1ES flipped the check from a warning to a hard error on
2026-08-25, server-side:
This blocks #419 and #420. Neither is at fault. Linux tests are unaffected and
still pass (279 passed / 0 failed) — this is only the Windows SDL/compliance pool.
What I changed
One file:
.ci/vars.yml. Added the grace-period variable that 1ES documents:vars.ymlis pulled in at global pipeline scope by bothvalidationBuild.ymlandpreviewBuild.yml, so one entry covers all three places that reference thedeprecated image —
validationBuild.yml:38,previewBuild.yml:34andtemplates/common-compliance-stages.yml:7. I confirmed the scope by expanding thepipeline through the ADO preview API; the variable lands in the top-level
variables:block next toPS_VERSION.It stops working on 2026-09-30. On that date 1ES delists
VanillaWindows2022-1ESPTentirely and CI breaks again, in a way this flag cannothelp with. The image migration still has to happen. There is a comment in
vars.ymlsaying the same thing next to the variable.Why I did not just swap the image name
avs-management-windows-2022-1es-imageis a pool-local alias, not a generic 1ESimage name. I could not confirm that a 2025 alias exists on our pool, and the
evidence says it does not yet:
"image": "avs-management-windows-2022-1es-image", "imageResource": ".../galleries/CloudTestGallery/images/VanillaWindows2022-1ESPT/versions/339.0.0"across every pipeline in the
avs-ossorg and extracted every image alias thepool actually served. Exactly two exist:
avs-management-ubuntu-22.04-1es-imageandavs-management-windows-2022-1es-image.f3841f54-1cbc-495c-9914-f6d57d1e6859, which returnsERROR: Subscription 'f3841f54-...' not found.msazure/Onereturns 0 hitsfor both
avs-management-1es-hosted-poolandavs-management-windows.https://aka.ms/1espt/vanillawindows2022 — "If you have your own dedicated pool,
follow these instructions to add a new image to the pool, and switch pipelines to
use the new image." The 2025 image has to be added to
avs-management-1es-hosted-poolbefore any pipeline can name it.A wrong alias is not a cheap mistake. The
image:value compiles into an agentdemand —
ImageOverride -equals <alias>— and template expansion does notvalidate it. I checked: expanding with the string
definitely-not-a-real-image-xyzsucceeds. An alias no agent satisfies means jobs sit unscheduled rather than
failing fast. So guessing was not worth the risk.
Follow-up needed: someone with access to subscription
f3841f54-1cbc-495c-9914-f6d57d1e6859adds a Windows 2025 image toavs-management-1es-hosted-pool. Once the alias exists, point the three entriesabove at it and delete this variable.
Supply-chain note
Risk: low, but not zero, and it is worth stating precisely.
This change does not alter build-pool image provenance. It keeps us on
VanillaWindows2022-1ESPT, the same first-party 1ES/CloudTest gallery image we arerunning today. No new image, no new publisher, no new source of build inputs. The
supply-chain surface is unchanged.
The real risk is the one the deprecation exists to close: the Windows Server 2022
base image ships .NET 6, which is end of life and no longer receiving patches (since
2026-06-09), and it generates S360 vulnerability items. This PR knowingly accepts
that exposure for a bounded window so two blocked PRs can land. It does not reduce
it, and it expires on 2026-09-30. The migration is the fix.
CI config only. No module, test, or product code touched.
Refs #419, #420