name: Continuous Integration on: # rebuild any PRs and main branch changes pull_request: push: branches: - main - "releases/*" jobs: # Build and test the project build-lint-test: strategy: fail-fast: true matrix: python: ["3.10", "3.13"] os: [ubuntu-latest, macos-intel, macos-arm, windows-latest] include: - os: macos-intel runsOn: macos-13 - os: macos-arm runsOn: macos-14 runs-on: ${{ matrix.runsOn || matrix.os }} steps: - uses: astral-sh/setup-uv@v5 - name: Print build information run: "echo head_ref: ${{ github.head_ref }}, ref: ${{ github.ref }}, os: ${{ matrix.os }}, python: ${{ matrix.python }}" - uses: actions/checkout@v4 with: submodules: recursive - uses: actions/setup-python@v5 with: python-version: ${{ matrix.python }} - run: uv tool install poethepoet - run: uv sync --group=dsl --group=encryption --group=trio-async - run: poe lint - run: mkdir junit-xml - run: poe test -s --junit-xml=junit-xml/${{ matrix.python }}--${{ matrix.os }}.xml - run: poe test -s --workflow-environment time-skipping --junit-xml=junit-xml/${{ matrix.python }}--${{ matrix.os }}--time-skipping.xml # This must remain the last step since it downgrades pydantic - name: Uninstall pydantic shell: bash run: | echo y | uv run pip uninstall pydantic echo y | uv run pip uninstall pydantic-core uv run pip install pydantic==1.10 poe test -s --junit-xml=junit-xml/${{ matrix.python }}--${{ matrix.os }}--pydantic-v1.xml tests/pydantic_converter_v1/workflow_test.py # On latest, run gevent test - name: Gevent test if: ${{ matrix.python == '3.12' }} run: | uv sync --group gevent uv run gevent_async/test/run_combined.py - name: Upload junit-xml artifacts uses: actions/upload-artifact@v4 if: always() with: name: junit-xml--${{github.run_id}}--${{github.run_attempt}}--${{ matrix.python }}--${{ matrix.os }} path: junit-xml retention-days: 14