Build linux/macos arm64/aarch64 wheels on native runners #766
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| name: Tests | |
| on: | |
| push: | |
| branches: | |
| - master | |
| - ci | |
| pull_request: | |
| branches: | |
| - master | |
| concurrency: # https://stackoverflow.com/questions/66335225#comment133398800_72408109 | |
| group: ${{ github.workflow }}-${{ github.ref || github.run_id }} | |
| cancel-in-progress: ${{ github.event_name == 'pull_request' }} | |
| jobs: | |
| test-platforms: | |
| # NOTE: this matrix is for testing various combinations of Python and OS | |
| # versions on the system-installed PostgreSQL version (which is usually | |
| # fairly recent). For a PostgreSQL version matrix see the test-postgres | |
| # job. | |
| strategy: | |
| matrix: | |
| python-version: ["3.9", "3.10", "3.11", "3.12", "3.13", "3.14", "3.14t"] | |
| os: [ubuntu-24.04, macos-15, windows-2025] | |
| loop: [asyncio, uvloop] | |
| exclude: | |
| # uvloop does not support windows | |
| - loop: uvloop | |
| os: windows-2025 | |
| # github does not provide 3.9 cpython for arm64 runners | |
| - python-version: "3.9" | |
| os: macos-15 | |
| runs-on: ${{ matrix.os }} | |
| permissions: {} | |
| defaults: | |
| run: | |
| shell: bash | |
| steps: | |
| - uses: actions/checkout@v5 | |
| with: | |
| fetch-depth: 50 | |
| submodules: true | |
| persist-credentials: false | |
| - name: Check if release PR. | |
| uses: edgedb/action-release/validate-pr@master | |
| id: release | |
| with: | |
| github_token: ${{ secrets.RELEASE_BOT_GITHUB_TOKEN }} | |
| missing_version_ok: yes | |
| version_file: asyncpg/_version.py | |
| version_line_pattern: | | |
| __version__(?:\s*:\s*typing\.Final)?\s*=\s*(?:['"])([[:PEP440:]])(?:['"]) | |
| - name: Setup PostgreSQL | |
| if: "!steps.release.outputs.is_release && matrix.os == 'macos-15-intel'" | |
| run: | | |
| POSTGRES_FORMULA="postgresql@18" | |
| brew install "$POSTGRES_FORMULA" | |
| echo "$(brew --prefix "$POSTGRES_FORMULA")/bin" >> $GITHUB_PATH | |
| - name: Set up Python ${{ matrix.python-version }} | |
| uses: astral-sh/setup-uv@v7 | |
| if: "!steps.release.outputs.is_release" | |
| with: | |
| python-version: ${{ matrix.python-version }} | |
| activate-environment: true | |
| - name: Install Python Deps | |
| if: "!steps.release.outputs.is_release" | |
| run: | | |
| [ "$RUNNER_OS" = "Linux" ] && .github/workflows/install-krb5.sh | |
| uv pip install -e . --group test | |
| - name: Test | |
| if: "!steps.release.outputs.is_release" | |
| env: | |
| LOOP_IMPL: ${{ matrix.loop }} | |
| run: | | |
| if [ "${LOOP_IMPL}" = "uvloop" ]; then | |
| env USE_UVLOOP=1 python -m unittest -v tests.suite | |
| else | |
| python -m unittest -v tests.suite | |
| fi | |
| test-postgres: | |
| strategy: | |
| matrix: | |
| postgres-version: ["9.5", "9.6", "10", "11", "12", "13", "14", "15", "16", "17", "18"] | |
| runs-on: ubuntu-24.04 | |
| permissions: {} | |
| steps: | |
| - uses: actions/checkout@v5 | |
| with: | |
| fetch-depth: 50 | |
| submodules: true | |
| persist-credentials: false | |
| - name: Check if release PR. | |
| uses: edgedb/action-release/validate-pr@master | |
| id: release | |
| with: | |
| github_token: ${{ secrets.RELEASE_BOT_GITHUB_TOKEN }} | |
| missing_version_ok: yes | |
| version_file: asyncpg/_version.py | |
| version_line_pattern: | | |
| __version__(?:\s*:\s*typing\.Final)?\s*=\s*(?:['"])([[:PEP440:]])(?:['"]) | |
| - name: Set up PostgreSQL | |
| if: "!steps.release.outputs.is_release" | |
| env: | |
| PGVERSION: ${{ matrix.postgres-version }} | |
| DISTRO_NAME: focal | |
| run: | | |
| sudo env DISTRO_NAME="${DISTRO_NAME}" PGVERSION="${PGVERSION}" \ | |
| .github/workflows/install-postgres.sh | |
| echo PGINSTALLATION="/usr/lib/postgresql/${PGVERSION}/bin" \ | |
| >> "${GITHUB_ENV}" | |
| - name: Set up Python | |
| uses: astral-sh/setup-uv@v7 | |
| if: "!steps.release.outputs.is_release" | |
| with: | |
| activate-environment: true | |
| - name: Install Python Deps | |
| if: "!steps.release.outputs.is_release" | |
| run: | | |
| [ "$RUNNER_OS" = "Linux" ] && .github/workflows/install-krb5.sh | |
| uv pip install -e . --group test | |
| - name: Test | |
| if: "!steps.release.outputs.is_release" | |
| env: | |
| PGVERSION: ${{ matrix.postgres-version }} | |
| run: | | |
| python -m unittest -v tests.suite | |
| # This job exists solely to act as the test job aggregate to be | |
| # targeted by branch policies. | |
| regression-tests: | |
| name: "Regression Tests" | |
| needs: [test-platforms, test-postgres] | |
| runs-on: ubuntu-24.04 | |
| permissions: {} | |
| steps: | |
| - run: echo OK |