diff --git a/.github/workflows/release-python.yml b/.github/workflows/release-python.yml index 0b7a47bd70..c17d4046e9 100644 --- a/.github/workflows/release-python.yml +++ b/.github/workflows/release-python.yml @@ -20,7 +20,7 @@ defaults: jobs: build_wheels: - name: Build wheel for ${{ matrix.python }}-${{ matrix.buildplat[1] }} + name: Build wheels for ${{ matrix.buildplat[1] }} runs-on: ${{ matrix.buildplat[0] }} strategy: # Ensure that a wheel builder finishes even if another fails @@ -29,27 +29,14 @@ jobs: # Github Actions doesn't support pairing matrix values together, let's improvise # https://github.com/github/feedback/discussions/7835#discussioncomment-1769026 buildplat: - - [ubuntu-20.04, manylinux_x86_64] - - [ubuntu-20.04, manylinux_aarch64] - - [ubuntu-20.04, manylinux_ppc64le] - - [ubuntu-20.04, manylinux_s390x] - - [ubuntu-20.04, manylinux_i686] - - [windows-2019, win_amd64] - - [windows-2019, win32] - python: ["cp37", "cp38", "cp39", "cp310", "cp311", "cp312"] - include: - - buildplat: [macos-11, macosx_*] - python: "cp37" - - buildplat: [macos-11, macosx_*] - python: "cp38" - - buildplat: [macos-11, macosx_*] - python: "cp39" - - buildplat: [macos-14, macosx_*] - python: "cp310" - - buildplat: [macos-14, macosx_*] - python: "cp311" - - buildplat: [macos-14, macosx_*] - python: "cp312" + - [ubuntu-20.04, "manylinux_x86_64", "cp3*-manylinux_x86_64"] + - [ubuntu-20.04, "manylinux_aarch64", "cp3*-manylinux_aarch64"] + - [ubuntu-20.04, "manylinux_ppc64le", "cp3*-manylinux_ppc64le"] + - [ubuntu-20.04, "manylinux_s390x", "cp3*-manylinux_s390x"] + - [ubuntu-20.04, "manylinux_i686", "cp3*-manylinux_i686"] + - [windows-2019, "win_amd6", "cp3*-win_amd64"] + - [windows-2019, "win32", "cp3*-win32"] + - [macos-14, "macos", "cp*-macosx_*"] steps: - name: Checkout pymongo @@ -57,15 +44,10 @@ jobs: with: fetch-depth: 0 - - name: Set up python version - run: | - export PYTHON_VERSION=$(sed 's/^cp3/3./' <<< ${{ matrix.python }} ) - echo "PYTHON_VERSION=$PYTHON_VERSION" >> $GITHUB_ENV - - uses: actions/setup-python@v5 with: - python-version: ${{env.PYTHON_VERSION}} cache: 'pip' + python-version: 3.8 cache-dependency-path: 'pyproject.toml' allow-prereleases: true @@ -79,75 +61,37 @@ jobs: # Note: the default manylinux is manylinux2014 run: | python -m pip install -U pip - python -m pip install "cibuildwheel>=2.4,<3" + python -m pip install "cibuildwheel>=2.17,<3" - - name: Build wheel - if: ${{ matrix.buildplat[0] != 'macos-14' }} + - name: Build wheels env: - CIBW_BUILD: ${{ matrix.python }}-${{ matrix.buildplat[1] }} - MACOS_TEST_SKIP: "*arm64" + CIBW_BUILD: ${{ matrix.buildplat[2] }} run: python -m cibuildwheel --output-dir wheelhouse - - name: Build wheel on M1 - if: ${{ matrix.buildplat[0] == 'macos-14' }} + - name: Build manylinux1 wheels + if: ${{ matrix.buildplat[1] == 'manylinux_x86_64' || matrix.buildplat[1] == 'manylinux_i686' }} env: - CIBW_BUILD: ${{ matrix.python }}-${{ matrix.buildplat[1] }} + CIBW_MANYLINUX_X86_64_IMAGE: manylinux1 + CIBW_MANYLINUX_I686_IMAGE: manylinux1 + CIBW_BUILD: "cp37-${{ matrix.buildplat[1] }} cp38-${{ matrix.buildplat[1] }} cp39-${{ matrix.buildplat[1] }}" run: python -m cibuildwheel --output-dir wheelhouse + - name: Assert all versions in wheelhouse + if: ${{ ! startsWith(matrix.buildplat[1], 'macos') }} + run: | + ls wheelhouse/*cp37*.whl + ls wheelhouse/*cp38*.whl + ls wheelhouse/*cp39*.whl + ls wheelhouse/*cp310*.whl + ls wheelhouse/*cp311*.whl + ls wheelhouse/*cp312*.whl + - uses: actions/upload-artifact@v4 with: - name: wheel-${{ matrix.python }}-${{ startsWith(matrix.buildplat[1], 'macosx') && 'macosx' || matrix.buildplat[1] }} + name: wheel-${{ matrix.buildplat[1] }} path: ./wheelhouse/*.whl if-no-files-found: error - build_manylinux1_wheels: - runs-on: ubuntu-latest - strategy: - # Ensure that a wheel builder finishes even if another fails - fail-fast: false - matrix: - python: ["cp37", "cp38", "cp39"] - steps: - - name: Checkout pymongo - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - - name: Set up python version - run: | - export PYTHON_VERSION=$(sed 's/^cp3/3./' <<< ${{ matrix.python }} ) - echo "PYTHON_VERSION=$PYTHON_VERSION" >> $GITHUB_ENV - - - uses: actions/setup-python@v5 - with: - python-version: ${{env.PYTHON_VERSION}} - cache: 'pip' - cache-dependency-path: 'pyproject.toml' - allow-prereleases: true - - - name: Install cibuildwheel - run: | - python -m pip install -U pip - python -m pip install "cibuildwheel>=2.4,<3" - - - name: Build manylinux_x86_64 - env: - CIBW_BUILD: ${{ matrix.python }}-manylinux_x86_64 - CIBW_MANYLINUX_X86_64_IMAGE: manylinux1 - run: python -m cibuildwheel --output-dir wheelhouse - - - name: Build manylinux_i686 - env: - CIBW_BUILD: ${{ matrix.python }}-manylinux_i686 - CIBW_MANYLINUX_I686_IMAGE: manylinux1 - run: python -m cibuildwheel --output-dir wheelhouse - - - uses: actions/upload-artifact@v4 - with: - name: wheel-${{ matrix.python }}-manylinux1 - path: ./wheelhouse/*.whl - if-no-files-found: error - make_sdist: name: Make SDist runs-on: macos-13 @@ -180,7 +124,7 @@ jobs: collect_dist: runs-on: ubuntu-latest - needs: [build_wheels, build_manylinux1_wheels, make_sdist] + needs: [build_wheels, make_sdist] name: Download Wheels steps: - name: Download all workflow run artifacts diff --git a/.github/workflows/test-python.yml b/.github/workflows/test-python.yml index 5df13b950d..31dc018f27 100644 --- a/.github/workflows/test-python.yml +++ b/.github/workflows/test-python.yml @@ -2,6 +2,7 @@ name: Python Tests on: push: + branches: ["master", "v**"] pull_request: workflow_dispatch: