Skip to content

Update build and test images to Alpine 3.22 #116167

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 14 commits into from
Jun 27, 2025

Conversation

richlander
Copy link
Member

  • Updated build and test images to Alpine 3.22.
  • Commented out the reference to Alpine Edge. We should only be using/running that in main. Will bring that back after the RC snap and when preparing for Alpine 3.23 becomes relevant.
  • A hypothesis was that Alpine Edge would not be too noisy and that we'd be clean on Alpine 3.vNext from the get-go. Let's see!

Related:

@Copilot Copilot AI review requested due to automatic review settings May 31, 2025 01:55
Copy link
Contributor

@Copilot Copilot AI left a comment

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 updates the build and test images to Alpine 3.22 while commenting out the Alpine Edge builds for non‑main branches. Key changes include:

  • Updating image tags from alpine-3.21 to alpine-3.22 in various pipeline YAML files.
  • Commenting out the Alpine Edge build references to restrict their use to the main branch.
  • Ensuring consistency across library, installer, coreclr templates, and common pipeline resource configurations.

Reviewed Changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated no comments.

File Description
eng/pipelines/libraries/helix-queues-setup.yml Updated Alpine image version and commented out Alpine Edge.
eng/pipelines/installer/helix-queues-setup.yml Updated the Alpine image version for the installer pipeline.
eng/pipelines/coreclr/templates/helix-queues-setup.yml Updated image tags for both public and internal pipelines.
eng/pipelines/common/templates/pipeline-with-resources.yml Updated Alpine image version in common pipeline resources.
Comments suppressed due to low confidence (5)

eng/pipelines/libraries/helix-queues-setup.yml:40

  • Confirm that the Alpine Edge build references remain commented out for non‑main branches as intended.
# Alpine edge builds should only be used in main

eng/pipelines/libraries/helix-queues-setup.yml:44

  • Verify that the updated Alpine 3.22 image tag is supported by all dependent build tools and environments.
- (Alpine.322.Amd64.Open)[email protected]/dotnet-buildtools/prereqs:alpine-3.22-helix-amd64

eng/pipelines/installer/helix-queues-setup.yml:36

  • Ensure that the update to Alpine 3.22 in the installer pipeline is validated within the AzureLinux environment.
- (Alpine.322.Amd64.Open)[email protected]/dotnet-buildtools/prereqs:alpine-3.22-helix-amd64

eng/pipelines/coreclr/templates/helix-queues-setup.yml:80

  • Confirm that both public and internal pipeline configurations intentionally use the Alpine 3.22 image tag.
- (Alpine.322.Amd64.Open)[email protected]/dotnet-buildtools/prereqs:alpine-3.22-helix-amd64

eng/pipelines/common/templates/pipeline-with-resources.yml:70

  • Check that the update to Alpine 3.22 in the common pipeline resource template is compatible with the overall pipeline configuration.
image: mcr.microsoft.com/dotnet-buildtools/prereqs:alpine-3.22-amd64

Copy link
Contributor

Tagging subscribers to this area: @dotnet/runtime-infrastructure
See info in area-owners.md if you want to be subscribed.

@richlander
Copy link
Member Author

Looks like this change came out clean. Just need an approval now.

@jkotas
Copy link
Member

jkotas commented May 31, 2025

/azp run runtime-libraries-coreclr outerloop-linux

Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@richlander
Copy link
Member Author

Good call. Running outer loop occurred to me. Will do that next time.

BA is now green.

@richlander
Copy link
Member Author

/azp run runtime-libraries-coreclr outerloop-linux

Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@richlander
Copy link
Member Author

/azp run runtime-extra-platforms

Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@richlander
Copy link
Member Author

/azp run runtime-libraries-coreclr outerloop-linux

Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@richlander
Copy link
Member Author

/azp run runtime-extra-platforms

@richlander
Copy link
Member Author

I removed the conditional for Alpine Edge x64. That should resolve the target queue issue. It doesn't appear to be working. Also, if it was working, it would break in the same way when we snap for RC. If it starts being noisy, we'll just remove Edge in servicing / make it the same as linux-musl-arm64. That's cheap to do.

@richlander
Copy link
Member Author

richlander commented Jun 27, 2025

Inner loop looks clean. I look at all the Linux failures this time.

All Linux failures are due to:

@richlander
Copy link
Member Author

/azp run runtime-libraries-coreclr outerloop-linux

@richlander
Copy link
Member Author

/azp run runtime-extra-platforms

Copy link

Azure Pipelines successfully started running 1 pipeline(s).

1 similar comment
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@richlander
Copy link
Member Author

Looks pretty clean. Almost all of the Linux failures are due to the JIT issue.

There is an outerloop failure that I'm not sure about. It is seen on CentOS Stream 10 and Alpine 3.22. It would be good if someone can double-check that.

Looks like the following.

/root/helix/work/workitem/e /root/helix/work/workitem/e
  Discovering: System.Runtime.Tests (method display = ClassAndMethod, method display options = None)
  Discovered:  System.Runtime.Tests (found 30 of 9451 test cases)
  Starting:    System.Runtime.Tests (parallel test collections = on [2 threads], stop on fail = off)
./RunTests.sh: line 178:    34 Killed                  "$RUNTIME_PATH/dotnet" exec --runtimeconfig System.Runtime.Tests.runtimeconfig.json --depsfile System.Runtime.Tests.deps.json xunit.console.dll System.Runtime.Tests.dll -xml testResults.xml -nologo -nocolor -trait category=OuterLoop -notrait category=AdditionalTimezoneChecks -notrait category=IgnoreForCI -notrait category=failing $RSP_FILE
/root/helix/work/workitem/e

@richlander
Copy link
Member Author

richlander commented Jun 27, 2025

It's useful to do a double-check of our configuration choices and to leave some documentation on what the expectation of this set of changes is/was. Naturally, the following "findings" are what is expected.

The PR made other changes, however, the following observations are where we made the most substantive changes that breaks the most with convention (with the intent to set new convention). These changes are intended to limit CI runs while satisfying the responsibilities that we've taken on for various users groups.

Inner loop

Note: These are the test queues run for PR runs.

For linux-x64 runtime, we see Azure Linux and Ubuntu.

  Starting Azure Pipelines Test Run coreclr linux x64 Checked no_tiered_compilation @ AzureLinux.3.Amd64.Open

For linux-x64 libraries, we see Azure Linux, CentOS Stream, and Ubuntu:

  Starting Azure Pipelines Test Run net10.0-linux-Debug-x64-coreclr_release-Ubuntu.2204.Amd64.Open
  Starting Azure Pipelines Test Run net10.0-linux-Debug-x64-coreclr_release-(AzureLinux.3.0.Amd64.Open)[email protected]/dotnet-buildtools/prereqs:azurelinux-3.0-helix-amd64
  Starting Azure Pipelines Test Run net10.0-linux-Debug-x64-coreclr_release-(Centos.10.Amd64.Open)[email protected]/dotnet-buildtools/prereqs:centos-stream-10-helix-amd64
  Using Queues: Ubuntu.2204.Amd64.Open+(AzureLinux.3.0.Amd64.Open)[email protected]/dotnet-buildtools/prereqs:azurelinux-3.0-helix-amd64+(Centos.10.Amd64.Open)[email protected]/dotnet-buildtools/prereqs:centos-stream-10-helix-amd64

For linux-musl-x64, we see latest stable Alpine:

Using Queues: (Alpine.322.Amd64.Open)[email protected]/dotnet-buildtools/prereqs:alpine-3.22-helix-amd64

extra-platforms

Note: This is the same inner-loop run, for an extra set of platform, run on-demand or scheduled (not run in PR by default).

For linux-x64, we see multiple tier 2 distros and pre-release versions:

  Starting Azure Pipelines Test Run net10.0-linux-Release-x64-Libraries_Release_CoreCLR-(Debian.13.Amd64.Open)[email protected]/dotnet-buildtools/prereqs:debian-13-helix-amd64
  Starting Azure Pipelines Test Run net10.0-linux-Release-x64-Libraries_Release_CoreCLR-(Fedora.42.Amd64.Open)[email protected]/dotnet-buildtools/prereqs:fedora-42-helix-amd64
  Starting Azure Pipelines Test Run net10.0-linux-Release-x64-Libraries_Release_CoreCLR-(openSUSE.15.6.Amd64.Open)[email protected]/dotnet-buildtools/prereqs:opensuse-15.6-helix-amd64
  Starting Azure Pipelines Test Run net10.0-linux-Release-x64-Libraries_Release_CoreCLR-(Ubuntu.2510.Amd64.Open)[email protected]/dotnet-buildtools/prereqs:ubuntu-25.10-helix-amd64
  Using Queues: (Debian.13.Amd64.Open)[email protected]/dotnet-buildtools/prereqs:debian-13-helix-amd64+(Fedora.42.Amd64.Open)[email protected]/dotnet-buildtools/prereqs:fedora-42-helix-amd64+(openSUSE.15.6.Amd64.Open)[email protected]/dotnet-buildtools/prereqs:opensuse-15.6-helix-amd64+(Ubuntu.2510.Amd64.Open)[email protected]/dotnet-buildtools/prereqs:ubuntu-25.10-helix-amd64

For linux-musl-x64, we see Alpine Edge (another pre-release version):

  Sending Job to (Alpine.edge.Amd64.Open)[email protected]/dotnet-buildtools/prereqs:alpine-edge-helix-amd64...

outerloop

Note: This is a much larger set of tests, run on-demand or scheduled (not run in PR by default).

For linux-x64, we see Azure Linux (twice; once as a VM, once in containers), Ubuntu, and CentOS Stream:

  Starting Azure Pipelines Test Run net10.0-linux-Debug-x64-CoreCLR_Debug-AzureLinux.3.Amd64.Open
  Starting Azure Pipelines Test Run net10.0-linux-Debug-x64-CoreCLR_Debug-Ubuntu.2204.Amd64.Open
  Starting Azure Pipelines Test Run net10.0-linux-Debug-x64-CoreCLR_Debug-(AzureLinux.3.0.Amd64.Open)[email protected]/dotnet-buildtools/prereqs:azurelinux-3.0-helix-amd64
  Starting Azure Pipelines Test Run net10.0-linux-Debug-x64-CoreCLR_Debug-(Centos.10.Amd64.Open)[email protected]/dotnet-buildtools/prereqs:centos-stream-10-helix-amd64
  Using Queues: AzureLinux.3.Amd64.Open+Ubuntu.2204.Amd64.Open+(AzureLinux.3.0.Amd64.Open)[email protected]/dotnet-buildtools/prereqs:azurelinux-3.0-helix-amd64+(Centos.10.Amd64.Open)[email protected]/dotnet-buildtools/prereqs:centos-stream-10-helix-amd64

For linux-musl-x64, we see latest stable Alpine:

  Starting Azure Pipelines Test Run net10.0-linux-Debug-x64-CoreCLR_Debug-(Alpine.322.Amd64.Open)[email protected]/dotnet-buildtools/prereqs:alpine-3.22-helix-amd64
  Using Queues: (Alpine.322.Amd64.Open)[email protected]/dotnet-buildtools/prereqs:alpine-3.22-helix-amd64

@jkotas
Copy link
Member

jkotas commented Jun 27, 2025

Inner loop
Note: These are the test queues run for PR runs.
For linux-x64 runtime, we see Azure Linux and Ubuntu.

I think one queue would be enough for runtime inner loop.

The rest looks good to me.

@richlander
Copy link
Member Author

richlander commented Jun 27, 2025

Ok.

Current (for runtime):

    # Linux x64
    - ${{ if eq(parameters.platform, 'linux_x64') }}:
      - ${{ if eq(variables['System.TeamProject'], 'public') }}:
        - AzureLinux.3.Amd64.Open
        - (Ubuntu.2204.Amd64.Open)[email protected]/dotnet-buildtools/prereqs:ubuntu-22.04-helix-amd64
      - ${{ if eq(variables['System.TeamProject'], 'internal') }}:
        - AzureLinux.3.Amd64
        - (Ubuntu.2204.Amd64)[email protected]/dotnet-buildtools/prereqs:ubuntu-22.04-helix-amd64

Proposed:

    # Linux x64
    - ${{ if eq(parameters.platform, 'linux_x64') }}:
      - ${{ if eq(variables['System.TeamProject'], 'public') }}:
        - AzureLinux.3.Amd64.Open
        - ${{ if eq(variables['System.TeamProject'], 'internal') }}:
        - AzureLinux.3.Amd64

Is that what you are expecting?

@jkotas
Copy link
Member

jkotas commented Jun 27, 2025

Is that what you are expecting?

Yes, I think that's good enough for runtime inner loop.

@jkotas
Copy link
Member

jkotas commented Jun 27, 2025

Almost all of the Linux failures are due to the JIT issue.

The JIT issue is fixed now. We should see much cleaner run now.

@richlander
Copy link
Member Author

Great. I was assuming that was the reason you merged in main.

Copy link
Member

@jkotas jkotas left a comment

Choose a reason for hiding this comment

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

Thank you!

@richlander
Copy link
Member Author

/azp run runtime-libraries-coreclr outerloop-linux

@richlander
Copy link
Member Author

/azp run runtime-extra-platforms

Copy link

Azure Pipelines successfully started running 1 pipeline(s).

1 similar comment
Copy link

Azure Pipelines successfully started running 1 pipeline(s).

@richlander
Copy link
Member Author

/ba-g "Unrelated issues"

@richlander
Copy link
Member Author

Looks like we finally this one resolved. Thanks for all the help!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: Done
Development

Successfully merging this pull request may close these issues.

3 participants