From d0fe7466c32781b34469a8aeee0b69c4996de8cf Mon Sep 17 00:00:00 2001 From: Bruno FS Ciconelle Date: Wed, 26 Jun 2024 01:45:51 -0300 Subject: [PATCH] ci: move testing with windows and macos to a distinct section Due to lack of support from Github CI to container "services" for macos/windows and no way to conditionally disabling it, move it to another section. Also, repeat a lot of configuration because actions yaml don't support inheritance. --- .github/workflows/tests.yml | 68 +++++++++++++++++++++++++++++++++++-- 1 file changed, 66 insertions(+), 2 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index c6fbbdd..8d0b88e 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -20,8 +20,6 @@ jobs: - { python: "3.10", os: "ubuntu-latest", session: "tests" } - { python: "3.9", os: "ubuntu-latest", session: "tests" } - { python: "3.8", os: "ubuntu-latest", session: "tests" } - - { python: "3.12", os: "windows-latest", session: "tests" } - - { python: "3.12", os: "macos-latest", session: "tests" } - { python: "3.12", os: "ubuntu-latest", session: "typeguard" } - { python: "3.12", os: "ubuntu-latest", session: "xdoctest" } - { python: "3.12", os: "ubuntu-latest", session: "docs-build" } @@ -120,6 +118,72 @@ jobs: name: docs path: docs/_build + non-linux-tests: + # run non-linux tests separately because github actions don't support: + # - docker outside linux [1], which is a requirement for "services" needed + # for testing with postgresql + # - conditionally enabling services [2] + # [1]: https://docs.github.com/en/actions/creating-actions/about-custom-actions#types-of-actions + # [2]: https://github.com/actions/runner/issues/1414 + name: ${{ matrix.session }} ${{ matrix.python }} / ${{ matrix.os }} + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + include: + - { + python: "3.12", + os: "windows-latest", + session: "tests-3.12(database='sqlite')", + } + - { + python: "3.12", + os: "macos-latest", + session: "tests-3.12(database='sqlite')", + } + steps: + - name: Check out the repository + uses: actions/checkout@v3 + + - name: Set up Python ${{ matrix.python }} + uses: actions/setup-python@v4.6.1 + with: + python-version: ${{ matrix.python }} + + - name: Upgrade pip + run: | + pip install --constraint="$(pwd)/.github/workflows/constraints.txt" pip + pip --version + + - name: Upgrade pip in virtual environments + shell: python + run: | + import os + import pip + + with open(os.environ["GITHUB_ENV"], mode="a") as io: + print(f"VIRTUALENV_PIP={pip.__version__}", file=io) + + - name: Install Poetry + run: | + pipx install --pip-args=--constraint="$(pwd)/.github/workflows/constraints.txt" poetry + poetry --version + + - name: Install Nox + run: | + pipx install --pip-args=--constraint="$(pwd)/.github/workflows/constraints.txt" nox + pipx inject --pip-args=--constraint="$(pwd)/.github/workflows/constraints.txt" nox nox-poetry + nox --version + - name: Run Nox + run: | + nox --python=${{ matrix.python }} --session=${{ matrix.session }} + + - name: Upload coverage data + uses: "actions/upload-artifact@v3" + with: + name: coverage-data + path: ".coverage.*" + coverage: runs-on: ubuntu-latest needs: tests