From f4bf8b83919b86e4756a29c9b6cfe1ace016f21b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=B4=E5=B0=8F=E7=99=BD?= <296015668@qq.com> Date: Fri, 15 Aug 2025 15:49:25 +0800 Subject: [PATCH] Condense all manylinux images into one Dockerfile MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 吴小白 <296015668@qq.com> --- .github/workflows/build-image.yml | 60 +++++++++++-------- ...rfile_manylinux_2_28_aarch64 => Dockerfile | 3 +- Dockerfile_manylinux_2_28_x86_64 | 9 --- Dockerfile_musllinux_1_2_aarch64 | 9 --- Dockerfile_musllinux_1_2_x86_64 | 9 --- 5 files changed, 36 insertions(+), 54 deletions(-) rename Dockerfile_manylinux_2_28_aarch64 => Dockerfile (79%) delete mode 100644 Dockerfile_manylinux_2_28_x86_64 delete mode 100644 Dockerfile_musllinux_1_2_aarch64 delete mode 100644 Dockerfile_musllinux_1_2_x86_64 diff --git a/.github/workflows/build-image.yml b/.github/workflows/build-image.yml index 88c5d7e..d0feff6 100644 --- a/.github/workflows/build-image.yml +++ b/.github/workflows/build-image.yml @@ -7,34 +7,36 @@ on: jobs: build_image: - name: Build ${{ matrix.prefix }} image for ${{ matrix.arch }} - runs-on: ${{ matrix.runs-on }} + name: Build ${{ matrix.IMAGE.TAG_NAME }} image + runs-on: ${{ matrix.IMAGE.RUNNER }} strategy: + fail-fast: false matrix: - include: - - prefix: manylinux - version: '2_28' - arch: x86_64 - platforms: linux/amd64 - runs-on: ubuntu-latest - - prefix: manylinux - version: '2_28' - arch: aarch64 - platforms: linux/arm64 - runs-on: ubuntu-24.04-arm - - prefix: musllinux - version: '1_2' - arch: x86_64 - platforms: linux/amd64 - runs-on: ubuntu-latest - - prefix: musllinux - version: '1_2' - arch: aarch64 - platforms: linux/arm64 - runs-on: ubuntu-24.04-arm + IMAGE: + # x86-64 manylinux images + # - {TAG_NAME: "manylinux2014_x86_64-hdf5", BUILD_ARGS: "PYCA_RELEASE=manylinux2014_x86_64", BUILD_PLATFORM: "linux/amd64", RUNNER: "ubuntu-24.04"} + - {TAG_NAME: "manylinux_2_28_x86_64-hdf5", BUILD_ARGS: "PYCA_RELEASE=manylinux_2_28_x86_64", BUILD_PLATFORM: "linux/amd64", RUNNER: "ubuntu-24.04"} + # - {TAG_NAME: "manylinux_2_34_x86_64-hdf5", BUILD_ARGS: "PYCA_RELEASE=manylinux_2_34_x86_64", BUILD_PLATFORM: "linux/amd64", RUNNER: "ubuntu-24.04"} + # - {TAG_NAME: "musllinux_1_1_x86_64-hdf5", BUILD_ARGS: "PYCA_RELEASE=musllinux_1_1_x86_64", BUILD_PLATFORM: "linux/amd64", RUNNER: "ubuntu-24.04"} + - {TAG_NAME: "musllinux_1_2_x86_64-hdf5", BUILD_ARGS: "PYCA_RELEASE=musllinux_1_2_x86_64", BUILD_PLATFORM: "linux/amd64", RUNNER: "ubuntu-24.04"} + + # ARM64 manylinux images + # - {TAG_NAME: "manylinux2014_aarch64-hdf5", BUILD_ARGS: "PYCA_RELEASE=manylinux2014_aarch64", BUILD_PLATFORM: "linux/arm64", RUNNER: "ubuntu-24.04-arm"} + - {TAG_NAME: "manylinux_2_28_aarch64-hdf5", BUILD_ARGS: "PYCA_RELEASE=manylinux_2_28_aarch64", BUILD_PLATFORM: "linux/arm64", RUNNER: "ubuntu-24.04-arm"} + # - {TAG_NAME: "manylinux_2_34_aarch64-hdf5", BUILD_ARGS: "PYCA_RELEASE=manylinux_2_34_aarch64", BUILD_PLATFORM: "linux/arm64", RUNNER: "ubuntu-24.04-arm"} + # - {TAG_NAME: "musllinux_1_1_aarch64-hdf5", BUILD_ARGS: "PYCA_RELEASE=musllinux_1_1_aarch64", BUILD_PLATFORM: "linux/arm64", RUNNER: "ubuntu-24.04-arm"} + - {TAG_NAME: "musllinux_1_2_aarch64-hdf5", BUILD_ARGS: "PYCA_RELEASE=musllinux_1_2_aarch64", BUILD_PLATFORM: "linux/arm64", RUNNER: "ubuntu-24.04-arm"} + + # Other images(ppc64le, s390x, etc.) can be added here if needed + # - https://github.com/pypa/manylinux/issues/1793 + # - https://github.com/IBM/actionspz/blob/main/docs/FAQ.md + steps: - uses: actions/checkout@v4 + - name: Setup Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Login to GitHub Container Registry uses: docker/login-action@v3 with: @@ -45,7 +47,13 @@ jobs: - name: Build and push uses: docker/build-push-action@v6 with: - file: ./Dockerfile_${{ matrix.prefix }}_${{ matrix.version }}_${{ matrix.arch }} - platforms: ${{ matrix.platforms }} + file: Dockerfile + platforms: ${{ matrix.IMAGE.BUILD_PLATFORM }} + pull: true push: ${{ github.event_name != 'pull_request' }} - tags: ghcr.io/${{ github.repository_owner }}/${{ matrix.prefix }}_${{ matrix.version }}_${{ matrix.arch }}-hdf5 + build-args: | + ${{ matrix.IMAGE.BUILD_ARGS }} + tags: | + ghcr.io/${{ github.repository_owner }}/${{ matrix.IMAGE.TAG_NAME }} + cache-from: type=registry,ref=ghcr.io/${{ github.repository_owner }}/${{ matrix.IMAGE.TAG_NAME }}-buildcache + cache-to: type=registry,ref=ghcr.io/${{ github.repository_owner }}/${{ matrix.IMAGE.TAG_NAME }}-buildcache,mode=max diff --git a/Dockerfile_manylinux_2_28_aarch64 b/Dockerfile similarity index 79% rename from Dockerfile_manylinux_2_28_aarch64 rename to Dockerfile index 214a6d8..4408d52 100644 --- a/Dockerfile_manylinux_2_28_aarch64 +++ b/Dockerfile @@ -1,4 +1,5 @@ -FROM quay.io/pypa/manylinux_2_28_aarch64 +ARG PYCA_RELEASE +FROM quay.io/pypa/${PYCA_RELEASE} ENV HDF5_VERSION=1.14.6 ENV HDF5_DIR=/usr/local diff --git a/Dockerfile_manylinux_2_28_x86_64 b/Dockerfile_manylinux_2_28_x86_64 deleted file mode 100644 index 5f652c8..0000000 --- a/Dockerfile_manylinux_2_28_x86_64 +++ /dev/null @@ -1,9 +0,0 @@ -FROM quay.io/pypa/manylinux_2_28_x86_64 - -ENV HDF5_VERSION=1.14.6 -ENV HDF5_DIR=/usr/local - -COPY install_libaec.sh /tmp/install_libaec.sh -RUN bash /tmp/install_libaec.sh -COPY install_hdf5.sh /tmp/install_hdf5.sh -RUN bash /tmp/install_hdf5.sh diff --git a/Dockerfile_musllinux_1_2_aarch64 b/Dockerfile_musllinux_1_2_aarch64 deleted file mode 100644 index 1abbaff..0000000 --- a/Dockerfile_musllinux_1_2_aarch64 +++ /dev/null @@ -1,9 +0,0 @@ -FROM quay.io/pypa/musllinux_1_2_aarch64 - -ENV HDF5_VERSION=1.14.6 -ENV HDF5_DIR=/usr/local - -COPY install_libaec.sh /tmp/install_libaec.sh -RUN bash /tmp/install_libaec.sh -COPY install_hdf5.sh /tmp/install_hdf5.sh -RUN bash /tmp/install_hdf5.sh diff --git a/Dockerfile_musllinux_1_2_x86_64 b/Dockerfile_musllinux_1_2_x86_64 deleted file mode 100644 index 8b74947..0000000 --- a/Dockerfile_musllinux_1_2_x86_64 +++ /dev/null @@ -1,9 +0,0 @@ -FROM quay.io/pypa/musllinux_1_2_x86_64 - -ENV HDF5_VERSION=1.14.6 -ENV HDF5_DIR=/usr/local - -COPY install_libaec.sh /tmp/install_libaec.sh -RUN bash /tmp/install_libaec.sh -COPY install_hdf5.sh /tmp/install_hdf5.sh -RUN bash /tmp/install_hdf5.sh