-
Notifications
You must be signed in to change notification settings - Fork 36
92 lines (91 loc) · 3.21 KB
/
Copy pathci.yml
File metadata and controls
92 lines (91 loc) · 3.21 KB
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
# Merge gate (Tier 1): PRs and pushes to master only.
# ``essential`` is the fast signal; ``full`` runs the whole linux suite.
# Both job display names are required status checks on master.
#
# Pure docs/md/issueflows PRs are path-ignored here; ci-dummy.yml reports the
# same check names as no-ops so branch protection does not block those PRs.
# Full conda / pip matrix runs in ci-scheduled.yml (Tier 3) — no dummy needed.
name: CI
on:
pull_request:
branches: [master]
paths-ignore:
- "docs/**"
- "paper/**"
- ".issueflows/01-current-issues/**"
- ".issueflows/02-partly-solved-issues/**"
- ".issueflows/03-solved-issues/**"
- ".issueflows/04-designs-and-guides/**"
- ".issueflows/05-epics/**"
- "graphify-out/**"
- "**/*.md"
push:
branches: [master]
paths-ignore:
- "docs/**"
- "paper/**"
- ".issueflows/01-current-issues/**"
- ".issueflows/02-partly-solved-issues/**"
- ".issueflows/03-solved-issues/**"
- ".issueflows/04-designs-and-guides/**"
- ".issueflows/05-epics/**"
- "graphify-out/**"
- "**/*.md"
workflow_dispatch:
concurrency:
group: ci-${{ github.ref }}
cancel-in-progress: true
jobs:
essential:
name: essential (linux / uv)
runs-on: ubuntu-latest
env:
UV_NO_SOURCES: 1
steps:
- uses: actions/checkout@v6
- uses: astral-sh/setup-uv@v5
with:
version: "latest"
- name: Install system dependencies
run: sudo apt-get update && sudo apt-get install -y mdbtools
- run: uv python install 3.13
- name: Sync dependencies (PyPI cellpycore only)
run: uv sync
- name: Run essential tests
# No plotutils ignore: the summary-plot suite was excluded because it
# "needs a display", but it selects the Agg backend itself and runs
# headless fine. The exclusion was hiding real breakage (#567).
env:
MPLBACKEND: Agg
run: uv run pytest -m essential
- name: Run cellpy setup
run: uv run cellpy setup --silent
- name: Run cellpy check
run: uv run cellpy info --check
full:
name: full (linux / uv)
runs-on: ubuntu-latest
timeout-minutes: 25
env:
UV_NO_SOURCES: 1
steps:
- uses: actions/checkout@v6
- uses: astral-sh/setup-uv@v5
with:
version: "latest"
- name: Install system dependencies
run: sudo apt-get update && sudo apt-get install -y mdbtools
- run: uv python install 3.13
- name: Sync dependencies (PyPI cellpycore only, with plotting extras)
# --extra batch pulls in plotly/seaborn so the collector/plotter code
# paths actually execute under test (they were never exercised in CI
# before — the flip's curve-consumer migration needs this net).
run: uv sync --extra batch
- name: Run the full test suite
# The gate that catches non-essential regressions (issue #530). The
# plotutils exclusion is gone (#567): with --extra batch this job has
# plotly and seaborn, so it is the only place the figure menu actually
# renders. Agg keeps matplotlib headless.
env:
MPLBACKEND: Agg
run: uv run pytest