name: Test on: push: branches: - main pull_request: paths-ignore: - 'docs/**' - .pre-commit-config.yaml workflow_dispatch: # allow manual runs on branches without a PR concurrency: group: test-${{ github.ref }} cancel-in-progress: true jobs: lint: name: Linters (mypy, flake8, etc.) runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: "3.x" - uses: pre-commit/action@v3.0.0 - name: Check manifest run: pipx run nox -s check_manifest - name: PyLint checks run: | echo "::add-matcher::$GITHUB_WORKSPACE/.github/matchers/pylint.json" pipx run nox -s pylint test: name: Test cibuildwheel on ${{ matrix.os }} needs: lint runs-on: ${{ matrix.os }} strategy: matrix: os: [ubuntu-20.04, windows-latest, macos-13, macos-14] python_version: ['3.12'] include: - os: ubuntu-22.04 python_version: '3.8' timeout-minutes: 180 steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 name: Install Python ${{ matrix.python_version }} with: python-version: ${{ matrix.python_version }} # Install podman on this CI instance for podman tests on linux # Snippet from: https://github.com/redhat-actions/podman-login/blob/main/.github/workflows/example.yml - name: Install latest podman if: runner.os == 'Linux' run: | . /etc/os-release echo "deb https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/xUbuntu_${VERSION_ID}/ /" | sudo tee /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list curl -sSfL "https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/xUbuntu_${VERSION_ID}/Release.key" | sudo apt-key add - sudo apt-get update sudo apt-get -y install podman # free some space to prevent reaching GHA disk space limits - name: Clean docker images if: runner.os == 'Linux' run: | docker system prune -a -f df -h - name: Install dependencies run: | python -m pip install ".[test]" - name: Generate a sample project run: | python -m test.test_projects test.test_0_basic.basic_project sample_proj - name: Run a sample build (GitHub Action) uses: ./ with: package-dir: sample_proj output-dir: wheelhouse env: CIBW_ARCHS_MACOS: x86_64 universal2 arm64 - uses: actions/upload-artifact@v4 with: name: cibw-wheels-${{ matrix.os }}-${{ strategy.job-index }} path: wheelhouse/*.whl - name: Test cibuildwheel run: | python ./bin/run_tests.py --run-podman test-emulated: name: Test emulated cibuildwheel using qemu needs: lint runs-on: ubuntu-latest timeout-minutes: 180 steps: - uses: actions/checkout@v4 - uses: actions/setup-python@v5 with: python-version: "3.x" - name: Install dependencies run: | python -m pip install ".[test]" - name: Set up QEMU id: qemu uses: docker/setup-qemu-action@v3 with: platforms: all - name: Run the emulation tests run: | pytest --run-emulation test/test_emulation.py