-
Notifications
You must be signed in to change notification settings - Fork 0
131 lines (108 loc) · 3.25 KB
/
Copy pathci.yml
File metadata and controls
131 lines (108 loc) · 3.25 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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
name: CI
on:
push:
branches: [ main ]
pull_request:
branches: [ main ]
workflow_call:
workflow_dispatch:
jobs:
lint-format:
name: Lint & Format Check
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v7
- name: Set up Python 3.12
uses: actions/setup-python@v7
with:
python-version: "3.12"
cache: "pip"
- name: Install Ruff
run: |
python -m pip install --upgrade pip
python -m pip install ruff
- name: Ruff Check
run: ruff check .
- name: Ruff Format Check
run: ruff format --check .
type-check:
name: Type Check
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v7
- name: Set up Python 3.12
uses: actions/setup-python@v7
with:
python-version: "3.12"
cache: "pip"
- name: Install Dependencies
run: |
python -m pip install --upgrade pip
pip install -e ".[dev]"
- name: Run Mypy
run: mypy src/ --ignore-missing-imports
unit-tests:
name: Unit Tests (${{ matrix.os }} - Python ${{ matrix.python-version }})
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-15, windows-latest]
# Branch protection requires these checks by name: do not rename the job above.
python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"]
steps:
- name: Checkout Code
uses: actions/checkout@v7
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v7
with:
python-version: ${{ matrix.python-version }}
cache: "pip"
- name: Install Dependencies
run: |
python -m pip install --upgrade pip
pip install -e ".[dev]"
- name: Run Unit Tests
run: pytest tests/unit/ -m unit --cov=src/rigout --cov-report=xml --cov-report=term-missing
- name: Upload Coverage Report
uses: actions/upload-artifact@v7
with:
name: coverage-report-${{ matrix.os }}-${{ matrix.python-version }}
path: coverage.xml
if-no-files-found: ignore
integration-tests:
name: Integration Tests
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v7
- name: Set up Python 3.12
uses: actions/setup-python@v7
with:
python-version: "3.12"
cache: "pip"
- name: Install Dependencies
run: |
python -m pip install --upgrade pip
pip install -e ".[dev]"
- name: Run Integration Tests
run: pytest tests/integration/ -m integration --timeout=60
production-validation:
name: Production Validation
runs-on: ubuntu-latest
steps:
- name: Checkout Code
uses: actions/checkout@v7
- name: Set up Python 3.12
uses: actions/setup-python@v7
with:
python-version: "3.12"
cache: "pip"
- name: Install Dependencies
run: |
python -m pip install --upgrade pip
pip install -e ".[dev]"
- name: Run Production Validation
run: python production_validation.py