diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f5393b0ef..ded718a77 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -23,6 +23,11 @@ jobs: python: ["3.10", "3.14"] os: [ubuntu-latest, ubuntu-arm, macos-arm, windows-latest] include: + - os: ubuntu-latest + runsOn: ubuntu-latest-16-cores + # Keep xdist parallelism at the standard runner level so the local + # test service is not overwhelmed by more concurrent workers. + pytestWorkerArg: "-n 4" - os: ubuntu-latest python: "3.14" docsTarget: true @@ -62,14 +67,14 @@ jobs: - run: poe build-develop - run: poe lint - run: mkdir junit-xml - - run: poe test ${{matrix.pytestExtraArgs}} -s --junit-xml=junit-xml/${{ matrix.python }}--${{ matrix.os }}.xml + - run: poe test ${{matrix.pytestExtraArgs}} ${{matrix.pytestWorkerArg}} -s --junit-xml=junit-xml/${{ matrix.python }}--${{ matrix.os }}.xml timeout-minutes: 15 # Time skipping doesn't yet support ARM - if: ${{ !endsWith(matrix.os, '-arm') }} - run: poe test ${{matrix.pytestExtraArgs}} -s --workflow-environment time-skipping --junit-xml=junit-xml/${{ matrix.python }}--${{ matrix.os }}--time-skipping.xml + run: poe test ${{matrix.pytestExtraArgs}} ${{matrix.pytestWorkerArg}} -s --workflow-environment time-skipping --junit-xml=junit-xml/${{ matrix.python }}--${{ matrix.os }}--time-skipping.xml timeout-minutes: 10 - if: ${{ matrix.openaiTestTarget && (github.event.pull_request.head.repo.full_name == '' || github.event.pull_request.head.repo.full_name == 'temporalio/sdk-python') }} - run: poe test tests/contrib/openai_agents/test_openai.py ${{matrix.pytestExtraArgs}} -s --junit-xml=junit-xml/${{ matrix.python }}--${{ matrix.os }}--openai.xml + run: poe test tests/contrib/openai_agents/test_openai.py ${{matrix.pytestExtraArgs}} ${{matrix.pytestWorkerArg}} -s --junit-xml=junit-xml/${{ matrix.python }}--${{ matrix.os }}--openai.xml timeout-minutes: 10 env: OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }} @@ -106,7 +111,7 @@ jobs: # FIPS binary and build the release wheel. fips-build: timeout-minutes: 45 - runs-on: ubuntu-latest + runs-on: ubuntu-latest-16-cores steps: - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: @@ -190,7 +195,7 @@ jobs: matrix: include: - cibw-build: cp310-musllinux_x86_64 - runsOn: ubuntu-latest + runsOn: ubuntu-latest-16-cores - cibw-build: cp310-musllinux_aarch64 runsOn: ubuntu-24.04-arm64-2-core runs-on: ${{ matrix.runsOn }} @@ -214,7 +219,7 @@ jobs: check-protos: timeout-minutes: 30 - runs-on: ubuntu-latest + runs-on: ubuntu-latest-16-cores steps: - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: @@ -251,7 +256,7 @@ jobs: test-latest-deps: timeout-minutes: 30 - runs-on: ubuntu-latest + runs-on: ubuntu-latest-16-cores steps: - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: @@ -292,7 +297,7 @@ jobs: cloud-test: if: ${{ github.actor != 'dependabot[bot]' && (github.event.pull_request.head.repo.full_name == '' || github.event.pull_request.head.repo.full_name == 'temporalio/sdk-python') }} timeout-minutes: 30 - runs-on: ubuntu-latest + runs-on: ubuntu-latest-16-cores steps: - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: