-
Notifications
You must be signed in to change notification settings - Fork 0
133 lines (99 loc) · 2.97 KB
/
ci.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
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
132
133
name: CI
on:
push:
branches:
- main
pull_request:
branches:
- main
env:
POETRY_VERSION: "1.8.3"
PYTHON_VERSION: "3.9"
PACKAGE_NAME: "paramview"
jobs:
backend:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Poetry
run: pipx install poetry==${{ env.POETRY_VERSION }}
- name: Set up Python with Poetry cache
uses: actions/setup-python@v5
with:
python-version: ${{ env.PYTHON_VERSION }}
cache: poetry
- name: Install Python dependencies
run: poetry install
- name: Check Formatting (Black)
run: poetry run black ${{ env.PACKAGE_NAME }} tests --check
- name: Lint (Flake8)
run: poetry run flake8 ${{ env.PACKAGE_NAME }} tests
- name: Lint (Pylint)
run: poetry run pylint ${{ env.PACKAGE_NAME }} tests
- name: Mypy cache
uses: actions/cache@v4
with:
path: .mypy_cache
key: mypy-${{ runner.os }}-python-${{ env.PYTHON_VERSION }}-${{ github.sha }}
restore-keys: |
mypy-${{ runner.os }}-python-${{ env.PYTHON_VERSION }}-
- name: Type Check (Mypy)
run: poetry run mypy ${{ env.PACKAGE_NAME }} tests
- name: Test (Pytest)
run: poetry run pytest tests/unit
frontend:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Set up Node
uses: actions/setup-node@v4
with:
node-version-file: .nvmrc
- name: Enable Yarn
run: corepack enable
- name: Install Node.js dependencies
run: yarn
- name: Lint
run: yarn lint
- name: Unit tests
run: yarn test
e2e:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Install Poetry
run: pipx install poetry==${{ env.POETRY_VERSION }}
- name: Set up Python with Poetry cache
uses: actions/setup-python@v5
with:
python-version: ${{ env.PYTHON_VERSION }}
cache: poetry
- name: Install Python dependencies
run: poetry install
- name: Set up Node
uses: actions/setup-node@v4
with:
node-version-file: .nvmrc
- name: Enable Yarn
run: corepack enable
- name: Install Node.js dependencies
run: yarn
- name: Install Playwright browsers
run: poetry run playwright install chromium
- name: Build frontend
run: yarn build
- name: Start E2E server
run: poetry run python tests/e2e/start_server.py &
- name: Ensure E2E server is up
run: yarn wait-on http://127.0.0.1:5051 -t 1000
- name: E2E tests
run: poetry run pytest tests/e2e
- name: Upload failure traces
uses: actions/upload-artifact@v4
if: failure()
with:
name: e2e-failure-traces
path: test-results