Skip to content

[202405][code sync] Restore BuildVS CI - #3069

Open
mssonicbld wants to merge 19 commits into
Azure:202405from
mssonicbld:copilot/fix-202405-buildvs-python39
Open

mssonicbld wants to merge 19 commits into
Azure:202405from
mssonicbld:copilot/fix-202405-buildvs-python39

Conversation

@mssonicbld

@mssonicbld mssonicbld commented Sep 9, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • retain the public-to-msft 202405 sync from [code sync] Merge public 202405 into msft 202405 #3063
  • retain the release-local quilt patch that replaces Python 3.10-only match/case dispatch with equivalent if/elif logic for Bullseye/Python 3.9
  • complete the missing libyang1 YANG-management compatibility fixes required by the pinned utilities revision
  • preserve original grouping metadata for CLI generation and correct stale BGP chassis-detection mocks without weakening expected output
  • restore artifact staging independently of disabled Docker/PTF publication so downstream tests can download the built images
  • pin the management-container runtime used by the seven required KVM jobs to a validated immutable image compatible with the release test framework
  • request the approved registry-qualified cEOS 4.29.3M-1 name for the six cEOS jobs, preserving the SONiC-neighbor job and all image-availability guards; actual KVM parameter forwarding is currently blocked in Elastictest, as detailed below

This PR supersedes #3063. It must be merged with a merge commit (no squash or rebase) to preserve the exact public-source ancestry already recorded by commit 6dfec61.

Initial root cause

Build 1213980 fails while building sonic_utilities-1.2-py3-none-any.whl under Python 3.9:

File "/sonic/src/sonic-utilities/generic_config_updater/patch_sorter.py", line 1615
    match op:
          ^
SyntaxError: invalid syntax

The incompatible statement was introduced by 38991e8574f3, included in the 202405 submodule tip 45eb547d0f3b. Both PR 3063's base and head already use that same gitlink, so the code-sync merge did not introduce the defect; its clean VS build exposed it.

Follow-up root causes and changes

Build 1215396 successfully applied the Python 3.9 patch, then failed in the full utilities suite: 32 failed, 3205 passed, 3 skipped. The failure was in wheel unit tests, before the VS image/KVM stages.

Area Cause Repair
Config management load_module_str_name() was missing from the release YANG library Adapt the helper from upstream commit 609bbb8fd7f1d286955191813acb678d0e7f1b91, associated with sonic-net/sonic-buildimage#24414
Generic config updater Dependency lookup assumed leaf nodes and mishandled containers, list entries and / Adapt the libyang1 traversal and test-isolation fixes from upstream commit 098d4cde7894dc333fecf51f2b900d99af8ed38e, sonic-net/sonic-buildimage#26563; retain value matching and remove duplicate paths
YANG grouping and CLI generation Uses compilation and CLI grouping metadata have different requirements Backport grouping compilation fixes; add a release-local original-schema helper and utilities patch so CLI grouping labels, ordering and refinements remain intact
BGP summary tests Tests mocked get_platform_info(), but is_chassis() now reads CONFIG_DB directly Patch both chassis-detection bindings; retain the expectation of 20 external peers, not 23

The YANG changes are adapted backports, not verbatim cherry-picks. The original-schema CLI adapter and BGP mock adjustments are release-local integration fixes. The existing Python 3.9 patch, utilities gitlink 45eb547d0f3b129d9f59ff01f3bf5809b6c8f489, loadData(..., quiet=False) interface and code-sync merge ancestry remain unchanged.

Local validation

Initial syntax repair:

  • Confirmed the unmodified pinned source fails to compile with Python 3.9 at match op.
  • Confirmed the quilt patch applies through the same src/<name>.patch/series mechanism used by slave.mk.
  • Confirmed the patched file compiles with Python 3.9.
  • Ran TestBulkLeafListMoveGenerator and TestLowLevelMoveGenerator: 32 passed.

Follow-up repair, using Bullseye, Python 3.9.2, pytest 6.0.2, libyang 1.0.73 and real swsscommon bindings:

Coverage Result
Affected utilities baseline, before follow-up repairs 32 failed, 452 passed, 2 existing skips
Same affected utilities after repairs 484 passed, 2 existing skips
Full utilities suite 3237 passed, 3 existing skips
YANG-management suite 66 passed
Independent dependency/leafref isolation 2 passed
Builds of both changed wheels Passed
Installed-wheel integration 13 passed
Installed-package Python 3.9 compilation Passed

All 32 failure identities from build 1215396 passed locally. Existing CLI golden dictionaries and BGP peer-count expectations are unchanged; repeated CLI parsing also checks that schema mutations do not leak.

The local validation container is not byte-identical to the CI slave, and full SONiC image/KVM validation is delegated to the PR pipeline.

Artifact publication follow-up

Build 1216384, on 3970e73cfb6d9c67a874d21a371ca3b3b1b770d1, passed all five image jobs, including BuildVS. Downstream Elastictest jobs then failed while downloading images.

The VS artifact upload log reports Processed 0 files. Upstream commit de4ea070236d0d985607e93116f130f2fc185ccf disabled Docker/PTF publication with an early exit 0 in the shared post-build script, inadvertently bypassing the artifact-copy commands too.

Commit b96bb96a6d4782cffdde58404c9e4624db1fc965 moves staging into its own always() step and fails on copy errors. Docker/PTF publication stays disabled; artifact names, directory layout and success/failure upload conditions are preserved.

Focused pipeline-script checks reproduced the empty output before the change (4 failed) and passed afterward (4 passed). These exercise file staging with small fixtures for single-ASIC VS, multi-ASIC VS, a hardware image and nested packages, plus failure propagation when target is missing; they do not substitute for the real image and KVM pipeline.

Build 1216662, on commit b96bb96a6d4782cffdde58404c9e4624db1fc965, passed all five image jobs. VS publication processed 1531 files, and the actual /target/sonic-vs.img.gz is downloadable (HTTP 200, 1,872,063,233 bytes, valid gzip header), confirming the empty-artifact defect is fixed.

Management-controller compatibility follow-up

The next failure was ADD_TOPOLOGY_FAILED, before VM creation or test execution. The release sonic-mgmt checkout 89377ddcf81abc72fa981ea08d5c29f645265edc was paired with the floating management image's Python 3.12.3 / Ansible 2.20.9 runtime:

  • The legacy conn_graph_facts module's #!/usr/bin/env python shebang was treated as a single executable name; the local module failed to launch with exit 127.
  • The legacy SSH plugin could not import imp, and the YAML callback plugin failed to load.
  • The same signatures were confirmed on multi-ASIC, dual-ToR, T0 and T1-LAG workers. This was a controller/runtime compatibility failure, not a DUT-image regression.

Commit 11bde3d3405b8a3817b4515782d9776387003383 uses the existing SETUP_CONTAINER_PARAMS / setup-container.sh -i interface to select the official 20250530 management image by immutable digest:

sonicdev-microsoft.azurecr.io:443/docker-sonic-mgmt@sha256:d9ee5be397d022d72140b8ab8e7f64161bc766ebac1b4eee8165c115ad82bb26

The selected runtime is Python 3.8.10 / Ansible core 2.13.13. Isolated A/B probes against the unchanged release checkout reproduced 6 failures with the exact failing image and 6 passes with the selected image: four real Ansible module launches and the two original plugin-loading checks. YAML parsing also confirmed that all seven required KVM jobs receive the same pin and that all other pipeline settings are unchanged.

These probes preserve the actual CI callback configuration. Separately forcing ANSIBLE_STDOUT_CALLBACK=yaml still exposes a legacy full-result rendering issue; that experimental override is neither enabled nor suppressed by this change. Local module/plugin probes do not replace the complete topology and test pipeline.

DUT images, sonic-mgmt refs, PTF tags, test selections, worker counts, callback settings and shared Elastictest infrastructure remain unchanged. No tests have been disabled or expected outputs weakened. Build 1216924, on commit 11bde3d3405b8a3817b4515782d9776387003383, confirmed the selected runtime and successful minigraph-module execution and DUT VM kickstart. The previous interpreter/plugin failure signatures are absent from the inspected preparation logs.

cEOS provisioning follow-up

The cEOS-based jobs then reached the release role's explicit missing-image guard: bare ceosimage:4.29.3M-1 and ceosimage:4.29.3M were not found, the local cEOS64-lab-4.29.3M.tar archive was absent, and the example download URLs were unusable.

The approved exact-version registry source is soniccr1.azurecr.io/ceosimage:4.29.3M-1. Its manifest/configuration metadata was verified, and worker provisioning uses registry-qualified references. Commit 96167e04fefbe2286934ee68b8bd88d33e6282b5 requests that override through the existing ADD_TOPO_PARAMS / ceos_image interface for the six cEOS jobs only.

This remains a guarded configuration candidate pending end-to-end forwarding and image-availability evidence: the available logs do not establish whether each failed worker held the fully qualified cache entry. The old role does not automatically pull an absent registry image, and this change does not bypass that limitation or any image-availability guard. No archive URL, credential, neighbor-type change or cEOS-version change is introduced.

Pipeline parsing confirms the exact six cEOS bindings, the unchanged SONiC-neighbor job, the retained management-runtime pin and unchanged test selections/worker counts. Actual worker image lookup and complete test execution still must pass in CI.

Build 1217169, on latest commit 96167e04fefbe2286934ee68b8bd88d33e6282b5 (test merge cb71e21ba390e83445ae6d6ccceeee4799534b6f), completed failed on 2026-09-11 at 05:53 UTC:

Gate Final result
All five image builds Succeeded
t0-sonic KVM job, including test execution Succeeded; framework final result: 67 passed, 9 skipped, 0 failures, 0 errors
Six cEOS KVM jobs: DPU, multi-ASIC, T1-LAG, T0-2VLANs, T0 and dual-ToR Failed during preparation, before test execution

The original t0-sonic execution records retain one first-attempt warm-reboot failure in the test framework's log-extraction step (extract_log.py, comparing NoneType and datetime.datetime); the PTF portion had returned rc=0 / OK. The existing automatic retry passed. The final successful job is therefore not a claim that every first attempt passed, and this PR did not add retries or skips.

All six failed jobs' preparation logs confirm the same terminating guard: Failed, no working ceos image download URL is found. They establish an external execution-path blocker: add_topo_params is saved correctly in the test plan, but Elastictest's KVM path does not forward it into the actual add-topo command. The inspected first and retry commands omit the requested ceos_image override and fall back to the unusable example archive URLs. Consequently, this run did not perform the qualified-image cache lookup; it does not disprove that cache's availability.

Further buildimage-only retries cannot resolve that missing server-side forwarding. The remaining work requires a separately reviewed scheduler correction or approved worker provisioning. Full CI is not green, and no test or image-availability guard has been bypassed.

mssonicbld and others added 15 commits August 9, 2025 13:12
<!--
 Please make sure you've read and understood our contributing guidelines:
 https://github.com/Azure/SONiC/blob/gh-pages/CONTRIBUTING.md

 failure_prs.log skip_prs.log Make sure all your commits include a signature generated with `git commit -s` **

 If this is a bug fix, make sure your description includes "fixes #xxxx", or
 "closes #xxxx" or "resolves #xxxx"

 Please provide the following information:
-->

#### Why I did it

The build fails if kdump is enabled on the build host, even though the relevant build step is performed in a dockerized chroot.

```
+ sudo LANG=C chroot ./fsroot-cisco-8000 kdump-config symlinks 5.10.0-23-2-amd64
Cannot change symbolic links when kdump is loaded ... failed!
```

Fixes #5097, Fixes #17023

##### Work item tracking
- Microsoft ADO **(number only)**:

#### How I did it

kdump installation checks if kdump is already running and aborts if so. This is good in most cases, but it's not relevant when installing into a chroot inside a docker container. This adds a basic patch to disable this check during build.

Note that the kdump status of the build host is imported into the docker build container via the sysfs file system:

```
$ ls -id /sys/kernel/kexec_crash_loaded && cat /sys/kernel/kexec_crash_loaded
7824 /sys/kernel/kexec_crash_loaded
0

$ docker run --rm debian bash -c "ls -id /sys/kernel/kexec_crash_loaded && cat /sys/kernel/kexec_crash_loaded"
7824 /sys/kernel/kexec_crash_loaded
0
```

The inodes and file content are identical inside and outside of the container.

#### How to verify it

<!--
If PR needs to be backported, then the PR must be tested against the base branch and the earliest backport release branch and provide tested image version on these two branches. For example, if the PR is requested for master, 202211 and 202012, then the requester needs to provide test results on master and 202012.
-->

1. Enable kdump on the build host
2. Confirm baseline build fails with the "Cannot change symbolic links when kdump is loaded" error
3. Apply this change and build succeeds

#### Which release branch to backport (provide reason below if selected)

<!--
- Note we only backport fixes to a release branch, *not* features!
- Please also provide a reason for the backporting below.
- e.g.
- [x] 202006
-->

- [x] 202405
- [x] 202411
- [x] 202505

#### Tested branch (Please provide the tested image version)

<!--
- Please provide tested image version
- e.g.
- [x] 20201231.100
-->

master (2975205)

#### Description for the changelog
<!--
Write a short (one line) summary that describes the changes in this
pull request for inclusion in the changelog:
-->

[build] fix build failure on kdump-enabled hosts

<!--
 Ensure to add label/tag for the feature raised. example - PR#2174 under sonic-utilities repo. where, Generic Config and Update feature has been labelled as GCU.
-->

#### Link to config_db schema for YANG module changes
<!--
Provide a link to config_db schema for the table for which YANG model
is defined
Link should point to correct section on https://github.com/Azure/sonic-buildimage/blob/master/src/sonic-yang-models/doc/Configuration.md
-->

#### A picture of a cute animal (not mandatory but encouraged)
<!--
 Please make sure you've read and understood our contributing guidelines:
 https://github.com/Azure/SONiC/blob/gh-pages/CONTRIBUTING.md

 failure_prs.log skip_prs.log Make sure all your commits include a signature generated with `git commit -s` **

 If this is a bug fix, make sure your description includes "fixes #xxxx", or
 "closes #xxxx" or "resolves #xxxx"

 Please provide the following information:
-->

#### Why I did it

The `sonic-utilities-data_1.0-1_all.deb` target depends on sources from the `src/sonic-utilities` submodule. However, the cache dependency file does not list this submodule as a dependency. So, when the build cache is used, updates to the `src/sonic-utilities` submodule pointer do not trigger the necessary rebuild of `sonic-utilities-data_1.0-1_all.deb`, leading to a stale build output.

##### Work item tracking
- Microsoft ADO **(number only)**:

#### How I did it

Updated `rules/sonic-utilities-data.dep` to include the proper `SMDEP` rules.

#### How to verify it

1. Perform a build with the dpkg cache enabled
2. Confirm the new output file `target/debs/bookworm/sonic-utilities-data_1.0-1_all.deb.smdep` is created, containing the submodule dependencies (smdeps)
3. Archive the `target/debs/bookworm/sonic-utilities-data_1.0-1_all.deb` output outside the build workspace
4. Clean the build workspace
5. Update the `src/sonic-utilities` submodule pointer to a new commit that contains different source code
6. Perform another build with the dpkg cache enabled
7. Extract the previous and current `sonic-utilities-data_1.0-1_all.deb` outputs. Confirm that the contents of the debian packages are distinct and contain the expected source based on the respective `src/sonic-utilities` submodule pointers

<!--
If PR needs to be backported, then the PR must be tested against the base branch and the earliest backport release branch and provide tested image version on these two branches. For example, if the PR is requested for master, 202211 and 202012, then the requester needs to provide test results on master and 202012.
-->

#### Which release branch to backport (provide reason below if selected)

<!--
- Note we only backport fixes to a release branch, *not* features!
- Please also provide a reason for the backporting below.
- e.g.
- [x] 202006
-->

- [x] 202405
- [x] 202411
- [x] 202505

This is a build bug which silently results in incorrect build outputs when the dpkg cache is used. As such, it should be double committed.

#### Tested branch (Please provide the tested image version)

<!--
- Please provide tested image version
- e.g.
- [x] 20201231.100
-->

- [x] 202405 (6fad19a)

#### Description for the changelog
<!--
Write a short (one line) summary that describes the changes in this
pull request for inclusion in the changelog:
-->

Fix submodule build dependency for sonic-utilities-data

<!--
 Ensure to add label/tag for the feature raised. example - PR#2174 under sonic-utilities repo. where, Generic Config and Update feature has been labelled as GCU.
-->

#### Link to config_db schema for YANG module changes
<!--
Provide a link to config_db schema for the table for which YANG model
is defined
Link should point to correct section on https://github.com/Azure/sonic-buildimage/blob/master/src/sonic-yang-models/doc/Configuration.md
-->

#### A picture of a cute animal (not mandatory but encouraged)
Why I did it
Migrate agent pool and update j2 accordingly.
* [ci] Migrate agent pool from sonicbld-1es to sonicso1ES-amd64

signed-off-by: jianquanye@microsoft.com
Why I did it
Fix too many open file error when building image
…tically (#24571)

#### Why I did it
src/sonic-dash-api
```
* 3f67090 - (HEAD -> 202405, origin/202405) Automated agent pool migration for branch 202405 (Azure#49) (35 minutes ago) [yijingyan2]
```
#### How I did it
#### How to verify it
#### Description for the changelog
…omatically (#24670)

#### Why I did it
src/sonic-swss-common
```
* 36f40a1 - (HEAD -> 202405, origin/202405) Automated agent pool migration for branch 202405 (Azure#1107) (21 hours ago) [yijingyan2]
```
#### How I did it
#### How to verify it
#### Description for the changelog
…tomatically (#25238)

#### Why I did it
src/sonic-linux-kernel
```
* feaf559 - (HEAD -> 202405, origin/202405) [202405] PCIe AER printk ratelimiting backport (Azure#529) (29 hours ago) [kenneth-arista]
* 0c948bf - Automated agent pool migration for branch 202405 (Azure#518) (8 days ago) [yijingyan2]
```
#### How I did it
#### How to verify it
#### Description for the changelog
Signed-off-by: yijingyan2 <yijingyan@microsoft.com>
Signed-off-by: Yijing Yan <yijingyan@microsoft.com>
…D automatically (#25721)

#### Why I did it
src/sonic-platform-daemons
```
* 5d2cfce - (HEAD -> 202405, origin/202405) [ci][202405] refine pipeline to download necessary artifacts (Azure#764) (11 hours ago) [yijingyan2]
```
#### How I did it
#### How to verify it
#### Description for the changelog
Support for release 202405 has ended. This PR disables pipeline CICD triggers for the 202405 branch.

Signed-off-by: Xin Wang <xiwang5@microsoft.com>
[202405] Upgrade SONiC package Versions
<!--
 Please make sure you've read and understood our contributing guidelines:
 https://github.com/Azure/SONiC/blob/gh-pages/CONTRIBUTING.md

 CODE_OF_CONDUCT.md LICENSE README.md SECURITY.md SUPPORT.md azure-pipelines failure_prs.log scripts skip_prs.log Make sure all your commits include a signature generated with `git commit -s` **

 If this is a bug fix, make sure your description includes "fixes #xxxx", or
 "closes #xxxx" or "resolves #xxxx"

 Please provide the following information:
-->

#### Why I did it
Disable ptf docker build in 202411 branch.
##### Work item tracking
- Microsoft ADO **(number only)**:

#### How I did it

#### How to verify it

<!--
If PR needs to be backported, then the PR must be tested against the base branch and the earliest backport release branch and provide tested image version on these two branches. For example, if the PR is requested for master, 202211 and 202012, then the requester needs to provide test results on master and 202012.
-->

#### Which release branch to backport (provide reason below if selected)

<!--
- Note we only backport fixes to a release branch, *not* features!
- Please also provide a reason for the backporting below.
- e.g.
- [x] 202006
-->

- [ ] 202305
- [ ] 202311
- [ ] 202405
- [ ] 202411
- [ ] 202505
- [ ] 202511

#### Tested branch (Please provide the tested image version)

<!--
- Please provide tested image version
- e.g.
- [x] 20201231.100
-->

- [ ] <!-- image version 1 -->
- [ ] <!-- image version 2 -->

#### Description for the changelog
<!--
Write a short (one line) summary that describes the changes in this
pull request for inclusion in the changelog:
-->

<!--
 Ensure to add label/tag for the feature raised. example - PR#2174 under sonic-utilities repo. where, Generic Config and Update feature has been labelled as GCU.
-->

#### Link to config_db schema for YANG module changes
<!--
Provide a link to config_db schema for the table for which YANG model
is defined
Link should point to correct section on https://github.com/Azure/sonic-buildimage/blob/master/src/sonic-yang-models/doc/Configuration.md
-->

Signed-off-by: Sonic Build Admin <sonicbld@microsoft.com>

#### A picture of a cute animal (not mandatory but encouraged)
<!--
 Please make sure you've read and understood our contributing guidelines:
 https://github.com/Azure/SONiC/blob/gh-pages/CONTRIBUTING.md

 CODE_OF_CONDUCT.md LICENSE README.md SECURITY.md SUPPORT.md azure-pipelines failure_prs.log scripts skip_prs.log Make sure all your commits include a signature generated with `git commit -s` **

 If this is a bug fix, make sure your description includes "fixes #xxxx", or
 "closes #xxxx" or "resolves #xxxx"

 Please provide the following information:
-->

#### Why I did it

The bullseye-backports section of the repo has been removed from the main repo.

##### Work item tracking
- Microsoft ADO **(number only)**:

#### How I did it

#### How to verify it

Verified by attempting to build slave container:

```
Azure#13 0.522 Get:1 http://archive.debian.org/debian bullseye InRelease [116 kB]
Azure#13 0.538 Get:2 http://archive.debian.org/debian bullseye-updates InRelease [44.0 kB]
Azure#13 0.538 Get:3 http://archive.debian.org/debian bullseye-backports InRelease [48.9 kB]
Azure#13 0.568 Get:4 http://debian-archive.trafficmanager.net/debian-security bullseye-security InRelease [27.2 kB]
Azure#13 0.737 Get:5 http://archive.debian.org/debian bullseye/contrib Sources [43.2 kB]
Azure#13 0.915 Get:6 http://archive.debian.org/debian bullseye/main Sources [8500 kB]
Azure#13 1.037 Get:7 http://debian-archive.trafficmanager.net/debian-security bullseye-security/contrib Sources [1128 B]
Azure#13 1.065 Get:8 http://debian-archive.trafficmanager.net/debian-security bullseye-security/main Sources [250 kB]
Azure#13 1.133 Get:9 http://debian-archive.trafficmanager.net/debian-security bullseye-security/non-free Sources [1352 B]
Azure#13 1.134 Get:10 http://debian-archive.trafficmanager.net/debian-security bullseye-security/main amd64 Packages [389 kB]
Azure#13 1.157 Get:11 http://debian-archive.trafficmanager.net/debian-security bullseye-security/contrib amd64 Packages [2880 B]
Azure#13 1.157 Get:12 http://debian-archive.trafficmanager.net/debian-security bullseye-security/non-free amd64 Packages [1184 B]
Azure#13 1.280 Get:13 http://archive.debian.org/debian bullseye/non-free Sources [81.0 kB]
Azure#13 1.605 Get:14 http://archive.debian.org/debian bullseye/contrib amd64 Packages [50.4 kB]
Azure#13 1.609 Get:15 http://archive.debian.org/debian bullseye/main amd64 Packages [8066 kB]
Azure#13 1.662 Get:16 http://archive.debian.org/debian bullseye/non-free amd64 Packages [96.4 kB]
Azure#13 1.662 Get:17 http://archive.debian.org/debian bullseye-updates/main Sources [7908 B]
Azure#13 1.663 Get:18 http://archive.debian.org/debian bullseye-updates/main amd64 Packages [18.8 kB]
Azure#13 1.663 Get:19 http://archive.debian.org/debian bullseye-backports/non-free amd64 Packages [14.4 kB]
Azure#13 1.663 Get:20 http://archive.debian.org/debian bullseye-backports/main amd64 Packages [403 kB]
Azure#13 1.665 Get:21 http://archive.debian.org/debian bullseye-backports/contrib amd64 Packages [6164 B]
Azure#13 2.755 Fetched 18.2 MB in 2s (8066 kB/s)
Azure#13 2.755 Reading package lists...
Azure#13 3.212 Reading package lists...
Azure#13 3.626 Building dependency tree...
Azure#13 3.709 Reading state information...
```

<!--
If PR needs to be backported, then the PR must be tested against the base branch and the earliest backport release branch and provide tested image version on these two branches. For example, if the PR is requested for master, 202211 and 202012, then the requester needs to provide test results on master and 202012.
-->

#### Which release branch to backport (provide reason below if selected)

<!--
- Note we only backport fixes to a release branch, *not* features!
- Please also provide a reason for the backporting below.
- e.g.
- [x] 202006
-->

- [ ] 202205
- [ ] 202211
- [ ] 202305
- [ ] 202311
- [ ] 202405
- [ ] 202411
- [ ] 202505

#### Tested branch (Please provide the tested image version)

<!--
- Please provide tested image version
- e.g.
- [x] 20201231.100
-->

- [ ] <!-- image version 1 -->
- [ ] <!-- image version 2 -->

#### Description for the changelog
<!--
Write a short (one line) summary that describes the changes in this
pull request for inclusion in the changelog:
-->

<!--
 Ensure to add label/tag for the feature raised. example - PR#2174 under sonic-utilities repo. where, Generic Config and Update feature has been labelled as GCU.
-->

#### Link to config_db schema for YANG module changes
<!--
Provide a link to config_db schema for the table for which YANG model
is defined
Link should point to correct section on https://github.com/Azure/sonic-buildimage/blob/master/src/sonic-yang-models/doc/Configuration.md
-->

Signed-off-by: Sonic Build Admin <sonicbld@microsoft.com>

#### A picture of a cute animal (not mandatory but encouraged)
Merge notified public source cfc766e
into msft 202405 at 6d264fb.
Preserve both histories rather than cherry-picking the tip.

Use the upstream March 2026 snapshots with their matching package
locks. Remove obsolete NodeSource 14 mirror entries alongside the
upstream Dockerfile changes that remove that package source.

Keep the msft sonic-platform-daemons gitlink when resolving its
conflict. All four configured msft submodule pins, their fork URLs,
the Cisco 202405.1.3.22 pin and downstream rsyslog install remain
unchanged. Retain the incoming public CI changes, including disabled
automatic triggers and PTF builds, without adding CI exceptions.

Validation: 18 APT source-generation cases and 15 version-lock
generation cases passed using existing repository scripts. The
configured amd64 snapshots contain the pinned Bookworm redis-server
and Bullseye redis-tools/rsyslog versions. No full image build.

Work item: https://dev.azure.com/msazure/One/_workitems/edit/39539503
Source PR: sonic-net/sonic-buildimage#27744

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Lun Yue <lunyue@microsoft.com>
Apply a release-local quilt patch that replaces Python 3.10 structural pattern matching in the pinned sonic-utilities revision with equivalent Python 3.9-compatible dispatch. This prevents the Bullseye BuildVS wheel test from failing during module import.

Signed-off-by: Elastictest AI Worker <sonicbld@microsoft.com>
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
There may be pipelines that require an authorized user to comment /azp run to run.

@mssonicbld

Copy link
Copy Markdown
Collaborator Author

/azp run

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 1 pipeline(s).

The Bullseye utilities suite exposes missing YANG APIs and stale BGP
chassis mocks after the existing Python 3.9 syntax patch.

Adapt the module-string helper from public sonic-buildimage commit
609bbb8 and dependency traversal,
uses compilation and test isolation from
098d4cd for the libyang1 release.

Preserve original grouping metadata for CLI generation and update both
chassis-detection bindings without weakening the expected output.
Keep the utilities gitlink and code-sync merge ancestry unchanged.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Lun Yue <lunyue@microsoft.com>
@mssonicbld

Copy link
Copy Markdown
Collaborator Author

/azp run

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 1 pipeline(s).

@lunyue-ms Lun Yue (lunyue-ms) changed the title [202405][code sync] Fix BuildVS Python 3.9 incompatibility [202405][code sync] Fix BuildVS utilities compatibility Sep 10, 2026
Commit de4ea07 disabled PTF
publication with an early exit in a shared post-build step. It also
bypassed artifact staging: build 1216384 passed all image jobs but
published empty artifacts, preventing Elastictest image downloads.

Move staging to a separate always-run step and fail on copy errors.
Keep PTF publication disabled and preserve artifact names and the
success/failure upload conditions.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Lun Yue <lunyue@microsoft.com>
@mssonicbld

Copy link
Copy Markdown
Collaborator Author

/azp run

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 1 pipeline(s).

@lunyue-ms Lun Yue (lunyue-ms) changed the title [202405][code sync] Fix BuildVS utilities compatibility [202405][code sync] Restore BuildVS CI Sep 10, 2026
The floating management image moved to Python 3.12 and Ansible 2.20.
The unchanged 202405 modules and plugins fail before topology creation:
the env/python shebang is quoted as one executable, imp is missing,
and the legacy YAML plugin fails to load.

Use the official 20250530 image by immutable digest through the existing
setup-container override for all seven required KVM jobs. Its Python
3.8.10 and Ansible 2.13.13 runtime passes the exact module-launch and
plugin regression probes against the release checkout.

Keep DUT images, sonic-mgmt refs, test selections and callback settings
unchanged. This does not change shared Elastictest infrastructure.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Lun Yue <lunyue@microsoft.com>
@mssonicbld

Copy link
Copy Markdown
Collaborator Author

/azp run

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 1 pipeline(s).

The legacy role checks bare ceosimage:4.29.3M-1 and falls back to
placeholder archive URLs. Select the approved registry-qualified
reference used by VMSS provisioning for the same cEOS version.

Apply the existing ceos_image extra-var to the six cEOS jobs only.
Keep the SONiC-neighbor job, runtime pin, image-download guards and
all test selections unchanged. No credentials or archive URLs are added.

Worker cache availability is not established by the available logs.
The real CI lookup must verify this guarded configuration candidate.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Lun Yue <lunyue@microsoft.com>
@mssonicbld

Copy link
Copy Markdown
Collaborator Author

/azp run

@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 1 pipeline(s).

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.

5 participants