From cd3b1a735fc3f6c1626177fddccd9d39bdece971 Mon Sep 17 00:00:00 2001 From: Matt Davis Date: Mon, 25 Sep 2023 13:12:05 -0700 Subject: [PATCH] test conditional runs-on --- .github/workflows/ci.yaml | 404 +++++++++++++++++++------------------- 1 file changed, 207 insertions(+), 197 deletions(-) diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index f14a12c5..a65eed95 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -1,140 +1,143 @@ -on: push +on: + push: + pull_request: + types: [ opened, synchronize, reopened ] jobs: - sdist: - runs-on: ubuntu-20.04 - steps: - - name: clone repo - uses: actions/checkout@v4 - - - name: build sdist - run: | - rm -rf dist/ - python -m pip install build - python -m build --sdist - - - name: upload sdist artifact - uses: actions/upload-artifact@v3 - with: - path: dist - if-no-files-found: error - - linux: - runs-on: ubuntu-20.04 - strategy: - fail-fast: false - matrix: - include: - - spec: cp38-manylinux_x86_64 - - spec: cp39-manylinux_x86_64 - - spec: cp310-manylinux_x86_64 - - spec: cp311-manylinux_x86_64 - - spec: cp312-manylinux_x86_64 - - - spec: cp38-manylinux_i686 - - spec: cp39-manylinux_i686 - - spec: cp310-manylinux_i686 - - spec: cp311-manylinux_i686 - - spec: cp312-manylinux_i686 - - - spec: cp39-musllinux_x86_64 - - spec: cp310-musllinux_x86_64 - - spec: cp311-musllinux_x86_64 - - spec: cp312-musllinux_x86_64 - - - spec: cp39-musllinux_i686 - - spec: cp310-musllinux_i686 - - spec: cp311-musllinux_i686 - #- spec: cp312-musllinux_i686 # busted as of 9/22/23 - - - spec: cp38-manylinux_aarch64 - foreign_arch: true - test_args: '{project}/c' - - spec: cp39-manylinux_aarch64 - foreign_arch: true - test_args: '{project}/c' - - spec: cp310-manylinux_aarch64 - foreign_arch: true - test_args: '{project}/c' - - spec: cp311-manylinux_aarch64 - foreign_arch: true - test_args: '{project}/c' - - spec: cp312-manylinux_aarch64 - foreign_arch: true - test_args: '{project}/c' - - - spec: cp38-manylinux_ppc64le - foreign_arch: true - test_args: '{project}/c' - - spec: cp39-manylinux_ppc64le - foreign_arch: true - test_args: '{project}/c' - - spec: cp310-manylinux_ppc64le - foreign_arch: true - test_args: '{project}/c' - - spec: cp311-manylinux_ppc64le - foreign_arch: true - test_args: '{project}/c' - - spec: cp312-manylinux_ppc64le - foreign_arch: true - test_args: '{project}/c' - - - spec: cp38-manylinux_s390x - foreign_arch: true - test_args: '{project}/c' - - spec: cp39-manylinux_s390x - foreign_arch: true - test_args: '{project}/c' - - spec: cp310-manylinux_s390x - foreign_arch: true - test_args: '{project}/c' - - spec: cp311-manylinux_s390x - foreign_arch: true - test_args: '{project}/c' - - spec: cp312-manylinux_s390x - foreign_arch: true - test_args: '{project}/c' - - steps: - - name: clone repo - uses: actions/checkout@v4 - - - name: configure docker foreign arch support - uses: docker/setup-qemu-action@v1 - if: ${{ matrix.foreign_arch || false }} - - - name: build/test wheels - env: - CFLAGS: -Dffi_call=cffistatic_ffi_call # override name for ffi_call to break hard if we linked against someone else's libffi - CIBW_ARCHS_LINUX: all - CIBW_BUILD: ${{ matrix.spec }} - CIBW_BEFORE_BUILD: | - set -eux && \ - curl -L -O https://github.com/libffi/libffi/archive/v3.4.2.tar.gz && \ - tar zxf v3.4.2.tar.gz && cd libffi-3.4.2 && \ - ./autogen.sh && \ - ./configure --without-gcc-arch --disable-docs --with-pic --enable-shared=no && \ - make && \ - make install && \ - ldconfig || true - CIBW_ENVIRONMENT_PASS_LINUX: CFLAGS # ensure that the build container can see our overridden build config - CIBW_MANYLINUX_X86_64_IMAGE: ${{ matrix.manylinux_img || '' }} - CIBW_MANYLINUX_I686_IMAGE: ${{ matrix.manylinux_img || '' }} - CIBW_PRERELEASE_PYTHONS: 'True' - CIBW_TEST_REQUIRES: pytest setuptools # 3.12+ no longer includes distutils, just always ensure setuptools is present - CIBW_TEST_COMMAND: PYTHONUNBUFFERED=1 python -m pytest ${{ matrix.test_args || '{project}' }} # default to test all - run: | - python -m pip install --upgrade "${{ matrix.cibw_version || 'cibuildwheel' }}" - - # actually build libffi + wheel (using env tweaks above) - python -m cibuildwheel --output-dir dist . - - - - name: upload artifacts - uses: actions/upload-artifact@v3 - with: - path: dist - if-no-files-found: error +# sdist: +# runs-on: ubuntu-20.04 +# steps: +# - name: clone repo +# uses: actions/checkout@v4 +# +# - name: build sdist +# run: | +# rm -rf dist/ +# python -m pip install build +# python -m build --sdist +# +# - name: upload sdist artifact +# uses: actions/upload-artifact@v3 +# with: +# path: dist +# if-no-files-found: error +# +# linux: +# runs-on: ubuntu-20.04 +# strategy: +# fail-fast: false +# matrix: +# include: +# - spec: cp38-manylinux_x86_64 +# - spec: cp39-manylinux_x86_64 +# - spec: cp310-manylinux_x86_64 +# - spec: cp311-manylinux_x86_64 +# - spec: cp312-manylinux_x86_64 +# +# - spec: cp38-manylinux_i686 +# - spec: cp39-manylinux_i686 +# - spec: cp310-manylinux_i686 +# - spec: cp311-manylinux_i686 +# - spec: cp312-manylinux_i686 +# +# - spec: cp39-musllinux_x86_64 +# - spec: cp310-musllinux_x86_64 +# - spec: cp311-musllinux_x86_64 +# - spec: cp312-musllinux_x86_64 +# +# - spec: cp39-musllinux_i686 +# - spec: cp310-musllinux_i686 +# - spec: cp311-musllinux_i686 +# #- spec: cp312-musllinux_i686 # busted as of 9/22/23 +# +# - spec: cp38-manylinux_aarch64 +# foreign_arch: true +# test_args: '{project}/c' +# - spec: cp39-manylinux_aarch64 +# foreign_arch: true +# test_args: '{project}/c' +# - spec: cp310-manylinux_aarch64 +# foreign_arch: true +# test_args: '{project}/c' +# - spec: cp311-manylinux_aarch64 +# foreign_arch: true +# test_args: '{project}/c' +# - spec: cp312-manylinux_aarch64 +# foreign_arch: true +# test_args: '{project}/c' +# +# - spec: cp38-manylinux_ppc64le +# foreign_arch: true +# test_args: '{project}/c' +# - spec: cp39-manylinux_ppc64le +# foreign_arch: true +# test_args: '{project}/c' +# - spec: cp310-manylinux_ppc64le +# foreign_arch: true +# test_args: '{project}/c' +# - spec: cp311-manylinux_ppc64le +# foreign_arch: true +# test_args: '{project}/c' +# - spec: cp312-manylinux_ppc64le +# foreign_arch: true +# test_args: '{project}/c' +# +# - spec: cp38-manylinux_s390x +# foreign_arch: true +# test_args: '{project}/c' +# - spec: cp39-manylinux_s390x +# foreign_arch: true +# test_args: '{project}/c' +# - spec: cp310-manylinux_s390x +# foreign_arch: true +# test_args: '{project}/c' +# - spec: cp311-manylinux_s390x +# foreign_arch: true +# test_args: '{project}/c' +# - spec: cp312-manylinux_s390x +# foreign_arch: true +# test_args: '{project}/c' +# +# steps: +# - name: clone repo +# uses: actions/checkout@v4 +# +# - name: configure docker foreign arch support +# uses: docker/setup-qemu-action@v1 +# if: ${{ matrix.foreign_arch || false }} +# +# - name: build/test wheels +# env: +# CFLAGS: -Dffi_call=cffistatic_ffi_call # override name for ffi_call to break hard if we linked against someone else's libffi +# CIBW_ARCHS_LINUX: all +# CIBW_BUILD: ${{ matrix.spec }} +# CIBW_BEFORE_BUILD: | +# set -eux && \ +# curl -L -O https://github.com/libffi/libffi/archive/v3.4.2.tar.gz && \ +# tar zxf v3.4.2.tar.gz && cd libffi-3.4.2 && \ +# ./autogen.sh && \ +# ./configure --without-gcc-arch --disable-docs --with-pic --enable-shared=no && \ +# make && \ +# make install && \ +# ldconfig || true +# CIBW_ENVIRONMENT_PASS_LINUX: CFLAGS # ensure that the build container can see our overridden build config +# CIBW_MANYLINUX_X86_64_IMAGE: ${{ matrix.manylinux_img || '' }} +# CIBW_MANYLINUX_I686_IMAGE: ${{ matrix.manylinux_img || '' }} +# CIBW_PRERELEASE_PYTHONS: 'True' +# CIBW_TEST_REQUIRES: pytest setuptools # 3.12+ no longer includes distutils, just always ensure setuptools is present +# CIBW_TEST_COMMAND: PYTHONUNBUFFERED=1 python -m pytest ${{ matrix.test_args || '{project}' }} # default to test all +# run: | +# python -m pip install --upgrade "${{ matrix.cibw_version || 'cibuildwheel' }}" +# +# # actually build libffi + wheel (using env tweaks above) +# python -m cibuildwheel --output-dir dist . +# +# +# - name: upload artifacts +# uses: actions/upload-artifact@v3 +# with: +# path: dist +# if-no-files-found: error macos: @@ -147,47 +150,52 @@ jobs: matrix: include: # build for x86_64 under the default hosted macOS 10.x x86_64 runner - - spec: cp38-macosx_x86_64 - - spec: cp39-macosx_x86_64 - - spec: cp310-macosx_x86_64 +# - spec: cp38-macosx_x86_64 +# - spec: cp39-macosx_x86_64 +# - spec: cp310-macosx_x86_64 - spec: cp311-macosx_x86_64 - - spec: cp312-macosx_x86_64 +# - spec: cp312-macosx_x86_64 # # build for arm64 under a hacked macOS 12 self-hosted x86_64-on-arm64 runner until arm64 is fully supported # # FIXME: ? cp38-macosx_arm64 requires special handling and fails some test_zdist tests under cibw 2.1.2, skip it (so Apple's XCode python3 won't have a wheel) - spec: cp39-macosx_arm64 deployment_target: '11.0' - runs_on: [self-hosted, macOS] - run_wrapper: arch -arm64 bash --noprofile --norc -eo pipefail {0} - sdkroot: macosx11.3 - - - spec: cp310-macosx_arm64 - deployment_target: '11.0' - runs_on: [self-hosted, macOS] - run_wrapper: arch -arm64 bash --noprofile --norc -eo pipefail {0} - sdkroot: macosx11.3 - - - spec: cp311-macosx_arm64 - deployment_target: '11.0' - runs_on: [self-hosted, macOS] - run_wrapper: arch -arm64 bash --noprofile --norc -eo pipefail {0} - sdkroot: macosx11.3 - - - spec: cp312-macosx_arm64 - deployment_target: '11.0' - runs_on: [self-hosted, macOS] + runs_on: + - ${{ vars.run_macos_arm64_jobs == 'true' && 'self-hosted' || 'ubuntu-latest' }} + - ${{ vars.run_macos_arm64_jobs == 'true' && 'macOS' || 'ubuntu-latest' }} run_wrapper: arch -arm64 bash --noprofile --norc -eo pipefail {0} + maybe_skip_steps: ${{ vars.run_macos_arm64_jobs == 'true' && false || true }} sdkroot: macosx11.3 +# - spec: cp310-macosx_arm64 +# deployment_target: '11.0' +# runs_on: ${{ vars.run_macos_arm64_jobs == 'true' && [self-hosted, macOS] || 'ubuntu-latest' }} +# run_wrapper: arch -arm64 bash --noprofile --norc -eo pipefail {0} +# sdkroot: macosx11.3 +# +# - spec: cp311-macosx_arm64 +# deployment_target: '11.0' +# runs_on: ${{ vars.run_macos_arm64_jobs == 'true' && [self-hosted, macOS] || 'ubuntu-latest' }} +# run_wrapper: arch -arm64 bash --noprofile --norc -eo pipefail {0} +# sdkroot: macosx11.3 +# +# - spec: cp312-macosx_arm64 +# deployment_target: '11.0' +# runs_on: ${{ vars.run_macos_arm64_jobs == 'true' && [self-hosted, macOS] || 'ubuntu-latest' }} +# run_wrapper: arch -arm64 bash --noprofile --norc -eo pipefail {0} +# sdkroot: macosx11.3 +# steps: - name: clone repo # need to use v2 until we can upgrade the runners on our private Apple Silicon build infra to one that supports node20 uses: actions/checkout@v2 + if: ${{ ! matrix.maybe_skip_steps || true }} - name: build wheel prereqs run: | /usr/bin/pip3 install --user --upgrade "${{ matrix.cibw_version || 'cibuildwheel' }}" brew uninstall --ignore-dependencies libffi || true + if: ${{ ! matrix.maybe_skip_steps || true }} - name: build/test wheels env: @@ -207,6 +215,7 @@ jobs: fi /usr/bin/python3 -m cibuildwheel --output-dir dist + if: ${{ ! matrix.maybe_skip_steps || true }} - name: upload artifacts # need to use v2 until we can upgrade the runners on our private Apple Silicon build infra to one that supports node20 @@ -214,43 +223,44 @@ jobs: with: path: dist if-no-files-found: error + if: ${{ ! matrix.maybe_skip_steps || true }} - windows: - runs-on: windows-2019 - strategy: - fail-fast: false - matrix: - include: - - spec: cp38-win_amd64 - - spec: cp39-win_amd64 - - spec: cp310-win_amd64 - - spec: cp311-win_amd64 - - spec: cp312-win_amd64 - - spec: cp38-win32 - - spec: cp39-win32 - - spec: cp310-win32 - - spec: cp311-win32 - - spec: cp312-win32 - - steps: - - name: clone repo - uses: actions/checkout@v4 - - name: build/test wheels - env: - CIBW_BUILD: ${{ matrix.spec }} - CIBW_PRERELEASE_PYTHONS: 'True' - CIBW_TEST_REQUIRES: pytest setuptools - CIBW_TEST_COMMAND: 'python -m pytest {project}/c' - # FIXME: /testing takes ~45min on Windows and has some failures... - # CIBW_TEST_COMMAND='python -m pytest {project}/c {project}/testing' - run: | - python -m pip install --upgrade pip - pip install "${{ matrix.cibw_version || 'cibuildwheel'}}" - python -m cibuildwheel --output-dir dist . - shell: bash - - - name: upload artifacts - uses: actions/upload-artifact@v3 - with: - path: dist - if-no-files-found: error +# windows: +# runs-on: windows-2019 +# strategy: +# fail-fast: false +# matrix: +# include: +# - spec: cp38-win_amd64 +# - spec: cp39-win_amd64 +# - spec: cp310-win_amd64 +# - spec: cp311-win_amd64 +# - spec: cp312-win_amd64 +# - spec: cp38-win32 +# - spec: cp39-win32 +# - spec: cp310-win32 +# - spec: cp311-win32 +# - spec: cp312-win32 +# +# steps: +# - name: clone repo +# uses: actions/checkout@v4 +# - name: build/test wheels +# env: +# CIBW_BUILD: ${{ matrix.spec }} +# CIBW_PRERELEASE_PYTHONS: 'True' +# CIBW_TEST_REQUIRES: pytest setuptools +# CIBW_TEST_COMMAND: 'python -m pytest {project}/c' +# # FIXME: /testing takes ~45min on Windows and has some failures... +# # CIBW_TEST_COMMAND='python -m pytest {project}/c {project}/testing' +# run: | +# python -m pip install --upgrade pip +# pip install "${{ matrix.cibw_version || 'cibuildwheel'}}" +# python -m cibuildwheel --output-dir dist . +# shell: bash +# +# - name: upload artifacts +# uses: actions/upload-artifact@v3 +# with: +# path: dist +# if-no-files-found: error