-
Notifications
You must be signed in to change notification settings - Fork 10
134 lines (131 loc) · 3.7 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
134
name: LOBSTER CI
on:
push:
branches: ["main"]
pull_request:
branches: ["main"]
permissions:
contents: read
jobs:
lint:
name: PyLint
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- name: Install dependencies
run: |
python3 -m pip install --upgrade pip
python3 -m pip install -r requirements_dev.txt
make lobster/html/assets.py
- name: Executing linter
run: |
make lint
trlc:
name: TRLC
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- name: Install dependencies
run: |
python3 -m pip install --upgrade pip
python3 -m pip install -r requirements.txt
- name: Run TRLC
run: |
make trlc
selenium-tests:
name: Run Selenium Tests
needs: [lint, trlc]
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- name: Install dependencies
run: |
python3 -m pip install --upgrade pip
python3 -m pip install -r requirements_dev.txt
- name: Run selenium Tests
run: |
make selenium-tests
test:
name: TestSuite
needs: [lint, trlc]
strategy:
matrix:
os: [ubuntu-24.04, windows-2022, macos-13, macos-14]
py-version: ["3.8", "3.9", "3.10", "3.11", "3.12"]
include:
- os: macos-13
brew: "/usr/local"
- os: macos-14
brew: "/opt/homebrew"
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- name: Install python version
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.py-version }}
- name: Install dependencies
run: |
python3 -m pip install --upgrade pip
python3 -m pip install -r requirements_dev.txt
make lobster/html/assets.py
- name: Install gnu make on macos
if: startsWith(matrix.os, 'macos')
run: |
brew install make
echo "${{ matrix.brew }}/opt/make/libexec/gnubin" >> $GITHUB_PATH
- name: Executing unit tests
run: |
make unit-tests
- name: Executing system tests
run: |
make system-tests
- name: Coverage analysis
run: |
make coverage
integration-tests:
name: Integration tests
needs: test
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@v4
- name: Install python version
uses: actions/setup-python@v5
with:
python-version: "3.11"
- name: Install dependencies
run: |
python3 -m pip install --upgrade pip
python3 -m pip install -r requirements_dev.txt
sudo apt install cmake ninja-build graphviz
- name: Cache clang-tidy
id: cache-clang-tidy
uses: actions/cache@v4
with:
path: ~/work/lobster/llvm-project/build/bin/clang-tidy
key: cache-clang-tidy
- if: ${{ steps.cache-clang-tidy.outputs.cache-hit != 'true' }}
name: Build clang-tidy
run: |
make clang-tidy
- if: ${{ steps.cache-clang-tidy.outputs.cache-hit != 'true' }}
name: Save cache
uses: actions/cache/save@v4
with:
path: ~/work/lobster/llvm-project/build/bin/clang-tidy
key: cache-clang-tidy
- name: Setup bazel (for lobster-gtest)
uses: jwlawson/actions-setup-bazel@v2
with:
bazel-version: '8.0.0'
- name: Run integration tests
run: |
make integration-tests
failure:
name: Check all jobs
needs: integration-tests
if: ${{ failure() || cancelled() }}
runs-on: ubuntu-24.04
steps:
- name: Failure
run: exit 1