-
Notifications
You must be signed in to change notification settings - Fork 2.3k
/
.cirrus.yml
75 lines (66 loc) · 2.18 KB
/
.cirrus.yml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
tests_task:
# We only use Cirrus CI for FreeBSD at present; the rest of the task will assume FreeBSD.
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: 2G
env:
matrix:
- PYTHON: python3.9
PYTHON_VERSION: 3.9
PYTHON_PACKAGE: python39
SQLITE_PACKAGE: py39-sqlite3
- PYTHON: python3.10
PYTHON_VERSION: 3.10
PYTHON_PACKAGE: python310
SQLITE_PACKAGE: py310-sqlite3
- PYTHON: python3.11
PYTHON_VERSION: 3.11
PYTHON_PACKAGE: python311
SQLITE_PACKAGE: py311-sqlite3
# FIXME: Python 3.12 is not available in Ports.
# - PYTHON: python3.12
# PYTHON_VERSION: 3.12
# PYTHON_PACKAGE: python312
# SQLITE_PACKAGE: py312-sqlite3
# FIXME: use pipx for install. pipx is currently broken in Ports.
POETRY_HOME: /opt/poetry
# SHELL is not set by default, and we have tests that depend on it.
SHELL: sh
bootstrap_poetry_script:
- pkg install -y git $PYTHON_PACKAGE $SQLITE_PACKAGE
- $PYTHON -m venv $POETRY_HOME
- $POETRY_HOME/bin/pip install poetry
- echo "PATH=${POETRY_HOME}/bin:${PATH}" >> $CIRRUS_ENV
setup_environment_script:
# TODO: caching
- poetry install
- poetry env info
- poetry show
matrix:
- alias: pytest
name: "Tests / FreeBSD (Python ${PYTHON_VERSION}) / pytest"
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
# TODO: caching
- alias: mypy
name: "Tests / FreeBSD (Python ${PYTHON_VERSION}) / mypy"
skip: "!changesInclude('.cirrus.yml', 'poetry.lock', 'pyproject.toml', 'src/**.py', 'tests/**')"
mypy_script: poetry run mypy
status_task:
name: "Tests / FreeBSD Status"
depends_on:
- pytest
- mypy
container:
image: alpine:latest
cpu: 0.5
memory: 512M
# No-op the clone.
clone_script: true