-
Notifications
You must be signed in to change notification settings - Fork 5
155 lines (120 loc) · 3.63 KB
/
workflow.yaml
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
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
name: linting-and-tests
on: [pull_request]
defaults:
run:
shell: bash -l {0}
jobs:
flake8:
timeout-minutes: 40
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v3
- name: Setup mamba
uses: ./.github/actions/mamba
- name: Flake8
run: |
mamba run -n modyn flake8 --version
mamba run -n modyn flake8 modyn --statistics
mypy-typechecking:
timeout-minutes: 20
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v3
- name: Setup mamba
uses: ./.github/actions/mamba
- name: Mypy
run: |
mamba run -n modyn mypy --version
mamba run -n modyn mypy modyn
pylint:
timeout-minutes: 20
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v3
- name: Setup mamba
uses: ./.github/actions/mamba
- name: Pylint
run: |
mamba run -n modyn pylint --version
mamba run -n modyn pylint modyn
isort:
timeout-minutes: 20
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v3
- name: Setup mamba
uses: ./.github/actions/mamba
- name: Isort
run: |
mamba run -n modyn isort --version
mamba run -n modyn isort modyn --check --diff
mamba run -n modyn isort integrationtests --check --diff
mamba run -n modyn isort benchmark --check --diff
black:
timeout-minutes: 20
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v3
- name: Setup mamba
uses: ./.github/actions/mamba
- name: Black
run: |
mamba run -n modyn black --version
mamba run -n modyn black --check modyn --verbose --config black.toml
unittests:
timeout-minutes: 20
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v3
- name: Setup mamba
uses: ./.github/actions/mamba
- name: Pytest
run: |
mamba run -n modyn pytest modyn --cov-reset --cache-clear --cov-fail-under=90
mamba run -n modyn pytest > pytest-coverage.txt
- name: Comment coverage
uses: coroo/[email protected]
### Integration Tests ###
# We have them in the same workflow because it's impossible to have a simple "if workflow A runs through completely, then workflow B should run" pipeline on Github currently
# Checks whether the base container works correctly.
dockerized-unittests:
timeout-minutes: 60
runs-on: ubuntu-latest
needs:
- flake8
- mypy-typechecking
- pylint
- unittests
- isort
- black
steps:
- name: Check out code
uses: actions/checkout@v3
- name: Setup base container
uses: ./.github/actions/base
- name: Setup dev-requirements and run pytest within container
run: docker run modynbase mamba run -n modyn bash -c "pip install -r dev-requirements.txt && echo Running pytest && pytest"
# Tests whether docker-compose up starts all components successfully and integration tests run through
# Only one job to reduce Github CI usage
integrationtests:
timeout-minutes: 60
runs-on: ubuntu-latest
needs:
- flake8
- mypy-typechecking
- pylint
- unittests
- isort
- black
- dockerized-unittests
steps:
- name: Check out code
uses: actions/checkout@v3
- name: Start docker compose and exit when tests run through
run: bash run_integrationtests.sh