Skip to content

Commit

Permalink
ci/cirrus: align with gha
Browse files Browse the repository at this point in the history
In particular, run mypy on FreeBSD in a parallel workflow to pytest.

Also modernize how we install/set up Poetry, and improve job names.
  • Loading branch information
neersighted committed Mar 25, 2024
1 parent 59c8d29 commit 34d55b5
Showing 1 changed file with 43 additions and 27 deletions.
70 changes: 43 additions & 27 deletions .cirrus.yml
Original file line number Diff line number Diff line change
@@ -1,35 +1,51 @@
freebsd_instance:
image_family: freebsd-14-0
# Cirrus has a concurrency limit of 8 vCPUs for FreeBSD. Allow executing 4 tasks in parallel.
cpu: 2
memory: 4G

test_task:
name: "Tests / FreeBSD / "
env:
# SHELL is not set by default, and we have tests that depend on it.
SHELL: sh

tests_task:
only_if: $CIRRUS_TAG == ''
skip: "!changesInclude('.cirrus.yml', 'poetry.lock', 'pyproject.toml', 'src/**.py', 'tests/**')"
env:
# `SHELL` environment variable is not set by default, so we explicitly set it to
# avoid failures on tests that depend on it.
SHELL: sh
matrix:
- PYTHON: python3.8
- PYTHON: python3.9
- PYTHON: python3.10
- PYTHON: python3.11
install_prereqs_script:
- V=$(printf '%s' $PYTHON | tr -d '.[:alpha:]')
- pkg install -y python${V} py${V}-sqlite3
install_poetry_script:
- POETRY_HOME=/opt/poetry
- $PYTHON -m venv $POETRY_HOME
- $POETRY_HOME/bin/pip install --upgrade pip setuptools wheel
- $POETRY_HOME/bin/pip install poetry
- echo "PATH=$POETRY_HOME/bin:$PATH" >> $CIRRUS_ENV
install_and_test_script:
- poetry install
- poetry run pytest --junitxml=junit.xml -v
on_failure:
annotate_failure_artifacts:
path: junit.xml
format: junit
type: text/xml
- PY: 3.8
- PY: 3.9
- PY: 3.10
- PY: 3.11
bootstrap_poetry_script:
- V=$(printf '%s' "$PY" | tr -d '.')
- pkg install -y python${V} py${V}-sqlite3 # devel/py-pipx
- python -m ensurepip && pip install pipx
- pipx ensurepath
- pipx install poetry
setup_environment_script:
# - ln -sf /usr/local/local/bin/python${PY} /usr/local/bin/python
- poetry install --sync
- poetry env info
- poetry show
matrix:
- alias: pytest
name: "Tests / pytest [FreeBSD / Python ${PY}]"
skip: "!changesInclude('.cirrus.yml', 'poetry.lock', 'pyproject.toml', 'src/**.py', 'tests/**')"
pytest_script:
- poetry run pytest --integration -v --junitxml=junit.xml
on_failure:
annotate_failure_artifacts:
path: junit.xml
format: junit
type: text/xml
- alias: mypy
name: "Tests / mypy [FreeBSD / Python ${PY}]"
skip: "!changesInclude('.cirrus.yml', 'poetry.lock', 'pyproject.toml', 'src/**.py')"
mypy_script:
- poetry run mypy

status_task:
name: Status
depends_on:
- pytest
- mypy

0 comments on commit 34d55b5

Please sign in to comment.