From e379f5e9e0b504ec3bf9b8c1c73504a8c654e6b4 Mon Sep 17 00:00:00 2001 From: Saurabh Singh <1623701+saurabh500@users.noreply.github.com> Date: Mon, 3 Aug 2026 16:30:47 -0700 Subject: [PATCH 1/2] CHORE: migrate Linux build container images from ACR to GHCR Point the Linux build, ODBC build, and wheel-installation-test stages at the public GHCR images published by github.com/microsoft/mssql-rs instead of the tdslibrs.azurecr.io mirrors. - tdslibrs.azurecr.io/import/python-build/manylinux_2_28_:latest -> ghcr.io/microsoft/mssql-rs/python-build/manylinux_2_28__rust:latest - tdslibrs.azurecr.io/import/python-build/musllinux_1_2_:latest -> ghcr.io/microsoft/mssql-rs/python-build/musllinux_1_2__rust:latest The GHCR packages are public, so the AzureCLI 'az acr login --name tdslibrs' steps (and their dependency on the 'Magnitude Test-mssql-rs-mssql-python' service connection) are no longer needed and are removed. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 5a6965bb-277d-4969-b0d1-7d38eae70a5d --- .../stages/build-linux-single-stage.yml | 16 ++++------------ .../stages/build-odbc-linux-stage.yml | 16 ++++------------ .../stages/wheel-installation-test-stage.yml | 14 +++----------- 3 files changed, 11 insertions(+), 35 deletions(-) diff --git a/OneBranchPipelines/stages/build-linux-single-stage.yml b/OneBranchPipelines/stages/build-linux-single-stage.yml index 6d82f5a6..d7e076fa 100644 --- a/OneBranchPipelines/stages/build-linux-single-stage.yml +++ b/OneBranchPipelines/stages/build-linux-single-stage.yml @@ -102,24 +102,16 @@ stages: mkdir -p $(ob_outputDirectory)/bindings/$(LINUX_TAG)-$(ARCH) displayName: 'Prepare artifact directories' - - task: AzureCLI@2 - displayName: 'Login to ACR (tdslibrs)' - inputs: - azureSubscription: 'Magnitude Test-mssql-rs-mssql-python' - scriptType: 'bash' - scriptLocation: 'inlineScript' - inlineScript: | - az acr login --name tdslibrs - - script: | # Determine image based on LINUX_TAG and ARCH - # Images are mirrored weekly from Quay.io into tdslibrs.azurecr.io + # Images are published by github.com/microsoft/mssql-rs to GHCR and are + # public, so no registry login is required to pull them. # manylinux_2_28 = AlmaLinux 8 / RHEL 8 compatible (glibc 2.28) # musllinux_1_2 = Alpine-based (musl libc) if [[ "$(LINUX_TAG)" == "manylinux_2_28" ]]; then - IMAGE="tdslibrs.azurecr.io/import/python-build/manylinux_2_28_$(ARCH):latest" + IMAGE="ghcr.io/microsoft/mssql-rs/python-build/manylinux_2_28_$(ARCH)_rust:latest" elif [[ "$(LINUX_TAG)" == "musllinux" ]]; then - IMAGE="tdslibrs.azurecr.io/import/python-build/musllinux_1_2_$(ARCH):latest" + IMAGE="ghcr.io/microsoft/mssql-rs/python-build/musllinux_1_2_$(ARCH)_rust:latest" else echo "ERROR: Unsupported LINUX_TAG '$(LINUX_TAG)'. Expected: manylinux_2_28 or musllinux" >&2 exit 1 diff --git a/OneBranchPipelines/stages/build-odbc-linux-stage.yml b/OneBranchPipelines/stages/build-odbc-linux-stage.yml index 51da9144..02059971 100644 --- a/OneBranchPipelines/stages/build-odbc-linux-stage.yml +++ b/OneBranchPipelines/stages/build-odbc-linux-stage.yml @@ -80,22 +80,14 @@ stages: mkdir -p $(ob_outputDirectory)/wheels displayName: 'Prepare artifact directories' - - task: AzureCLI@2 - displayName: 'Login to ACR (tdslibrs)' - inputs: - azureSubscription: 'Magnitude Test-mssql-rs-mssql-python' - scriptType: 'bash' - scriptLocation: 'inlineScript' - inlineScript: | - az acr login --name tdslibrs - - script: | set -euxo pipefail - # Same PyPA images as the mssql-python Linux build (mirrored into ACR). + # Same PyPA images as the mssql-python Linux build, published to GHCR by + # github.com/microsoft/mssql-rs. Public packages, so no login is required. if [[ "$(LINUX_TAG)" == "manylinux_2_28" ]]; then - IMAGE="tdslibrs.azurecr.io/import/python-build/manylinux_2_28_$(ARCH):latest" + IMAGE="ghcr.io/microsoft/mssql-rs/python-build/manylinux_2_28_$(ARCH)_rust:latest" elif [[ "$(LINUX_TAG)" == "musllinux" ]]; then - IMAGE="tdslibrs.azurecr.io/import/python-build/musllinux_1_2_$(ARCH):latest" + IMAGE="ghcr.io/microsoft/mssql-rs/python-build/musllinux_1_2_$(ARCH)_rust:latest" else echo "ERROR: Unsupported LINUX_TAG '$(LINUX_TAG)'. Expected: manylinux_2_28 or musllinux" >&2 exit 1 diff --git a/OneBranchPipelines/stages/wheel-installation-test-stage.yml b/OneBranchPipelines/stages/wheel-installation-test-stage.yml index 1fe0c1a6..7e48652d 100644 --- a/OneBranchPipelines/stages/wheel-installation-test-stage.yml +++ b/OneBranchPipelines/stages/wheel-installation-test-stage.yml @@ -113,21 +113,13 @@ stages: docker --version displayName: 'Ensure Docker daemon is running' - - task: AzureCLI@2 - displayName: 'Login to ACR (tdslibrs)' - inputs: - azureSubscription: 'Magnitude Test-mssql-rs-mssql-python' - scriptType: 'bash' - scriptLocation: 'inlineScript' - inlineScript: | - az acr login --name tdslibrs - - script: | set -euxo pipefail + # Public GHCR images published by github.com/microsoft/mssql-rs; no login required. if [[ "$(LINUX_TAG)" == "manylinux_2_28" ]]; then - IMAGE="tdslibrs.azurecr.io/import/python-build/manylinux_2_28_$(ARCH):latest" + IMAGE="ghcr.io/microsoft/mssql-rs/python-build/manylinux_2_28_$(ARCH)_rust:latest" elif [[ "$(LINUX_TAG)" == "musllinux" ]]; then - IMAGE="tdslibrs.azurecr.io/import/python-build/musllinux_1_2_$(ARCH):latest" + IMAGE="ghcr.io/microsoft/mssql-rs/python-build/musllinux_1_2_$(ARCH)_rust:latest" else echo "ERROR: Unsupported LINUX_TAG '$(LINUX_TAG)'" >&2 exit 1 From cbafb1a2788e3badc7f8c0a3b97f051699e8e59b Mon Sep 17 00:00:00 2001 From: Saurabh Singh <1623701+saurabh500@users.noreply.github.com> Date: Tue, 4 Aug 2026 10:19:53 -0700 Subject: [PATCH 2/2] CHORE: use mirrored non-rust GHCR images for Linux stages The vanilla PyPA base images are now mirrored to GHCR alongside the _rust variants, so point at those instead for an exact 1:1 match with the ACR paths they replace (no unused Rust toolchain in the build/test containers). ghcr.io/microsoft/mssql-rs/import/python-build/manylinux_2_28_:latest ghcr.io/microsoft/mssql-rs/import/python-build/musllinux_1_2_:latest Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 5a6965bb-277d-4969-b0d1-7d38eae70a5d --- OneBranchPipelines/stages/build-linux-single-stage.yml | 4 ++-- OneBranchPipelines/stages/build-odbc-linux-stage.yml | 4 ++-- OneBranchPipelines/stages/wheel-installation-test-stage.yml | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/OneBranchPipelines/stages/build-linux-single-stage.yml b/OneBranchPipelines/stages/build-linux-single-stage.yml index d7e076fa..efc2a4b8 100644 --- a/OneBranchPipelines/stages/build-linux-single-stage.yml +++ b/OneBranchPipelines/stages/build-linux-single-stage.yml @@ -109,9 +109,9 @@ stages: # manylinux_2_28 = AlmaLinux 8 / RHEL 8 compatible (glibc 2.28) # musllinux_1_2 = Alpine-based (musl libc) if [[ "$(LINUX_TAG)" == "manylinux_2_28" ]]; then - IMAGE="ghcr.io/microsoft/mssql-rs/python-build/manylinux_2_28_$(ARCH)_rust:latest" + IMAGE="ghcr.io/microsoft/mssql-rs/import/python-build/manylinux_2_28_$(ARCH):latest" elif [[ "$(LINUX_TAG)" == "musllinux" ]]; then - IMAGE="ghcr.io/microsoft/mssql-rs/python-build/musllinux_1_2_$(ARCH)_rust:latest" + IMAGE="ghcr.io/microsoft/mssql-rs/import/python-build/musllinux_1_2_$(ARCH):latest" else echo "ERROR: Unsupported LINUX_TAG '$(LINUX_TAG)'. Expected: manylinux_2_28 or musllinux" >&2 exit 1 diff --git a/OneBranchPipelines/stages/build-odbc-linux-stage.yml b/OneBranchPipelines/stages/build-odbc-linux-stage.yml index 02059971..1088720e 100644 --- a/OneBranchPipelines/stages/build-odbc-linux-stage.yml +++ b/OneBranchPipelines/stages/build-odbc-linux-stage.yml @@ -85,9 +85,9 @@ stages: # Same PyPA images as the mssql-python Linux build, published to GHCR by # github.com/microsoft/mssql-rs. Public packages, so no login is required. if [[ "$(LINUX_TAG)" == "manylinux_2_28" ]]; then - IMAGE="ghcr.io/microsoft/mssql-rs/python-build/manylinux_2_28_$(ARCH)_rust:latest" + IMAGE="ghcr.io/microsoft/mssql-rs/import/python-build/manylinux_2_28_$(ARCH):latest" elif [[ "$(LINUX_TAG)" == "musllinux" ]]; then - IMAGE="ghcr.io/microsoft/mssql-rs/python-build/musllinux_1_2_$(ARCH)_rust:latest" + IMAGE="ghcr.io/microsoft/mssql-rs/import/python-build/musllinux_1_2_$(ARCH):latest" else echo "ERROR: Unsupported LINUX_TAG '$(LINUX_TAG)'. Expected: manylinux_2_28 or musllinux" >&2 exit 1 diff --git a/OneBranchPipelines/stages/wheel-installation-test-stage.yml b/OneBranchPipelines/stages/wheel-installation-test-stage.yml index 7e48652d..d8e89bb7 100644 --- a/OneBranchPipelines/stages/wheel-installation-test-stage.yml +++ b/OneBranchPipelines/stages/wheel-installation-test-stage.yml @@ -117,9 +117,9 @@ stages: set -euxo pipefail # Public GHCR images published by github.com/microsoft/mssql-rs; no login required. if [[ "$(LINUX_TAG)" == "manylinux_2_28" ]]; then - IMAGE="ghcr.io/microsoft/mssql-rs/python-build/manylinux_2_28_$(ARCH)_rust:latest" + IMAGE="ghcr.io/microsoft/mssql-rs/import/python-build/manylinux_2_28_$(ARCH):latest" elif [[ "$(LINUX_TAG)" == "musllinux" ]]; then - IMAGE="ghcr.io/microsoft/mssql-rs/python-build/musllinux_1_2_$(ARCH)_rust:latest" + IMAGE="ghcr.io/microsoft/mssql-rs/import/python-build/musllinux_1_2_$(ARCH):latest" else echo "ERROR: Unsupported LINUX_TAG '$(LINUX_TAG)'" >&2 exit 1