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 5348f14
Showing 1 changed file with 49 additions and 28 deletions.
77 changes: 49 additions & 28 deletions .cirrus.yml
Original file line number Diff line number Diff line change
@@ -1,35 +1,56 @@
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 / "
only_if: $CIRRUS_TAG == ''
skip: "!changesInclude('.cirrus.yml', 'poetry.lock', 'pyproject.toml', 'src/**.py', 'tests/**')"
env:
# SHELL is not set by default, and we have tests that depend on it.
SHELL: sh
# Force pipx to install to /usr/local/bin (and /opt/pipx for environments).
PIPX_BIN_DIR: /usr/local/bin
PIPX_HOME: /opt/pipx

tests_task:
only_if: &not_tag $CIRRUS_TAG == ''
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 '.')
mkdir -p /usr/local/etc/pkg/repos && echo 'FreeBSD: { url: \"pkg+http://pkg.freebsd.org/\${ABI}/latest\" }' > /usr/local/etc/pkg/repos/FreeBSD.conf
pkg update && pkg install -y python${V} py${V}-sqlite3 devel/py-pipx
pipx install poetry
# - python -m ensurepip && python -m pip install pipx
# - python -m 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: "Tests / Status"
only_if: *not_tag
depends_on:
- pytest
- mypy

0 comments on commit 5348f14

Please sign in to comment.