-
Notifications
You must be signed in to change notification settings - Fork 5
155 lines (120 loc) · 3.7 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: |
micromamba run -n modyn flake8 --version
micromamba 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: |
micromamba run -n modyn mypy --version
micromamba 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: |
micromamba run -n modyn pylint --version
micromamba 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: |
micromamba run -n modyn isort --version
micromamba run -n modyn isort modyn --check --diff
micromamba run -n modyn isort integrationtests --check --diff
micromamba 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: |
micromamba run -n modyn black --version
micromamba 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: |
micromamba run -n modyn pytest modyn --cov-reset --cache-clear --cov-fail-under=90
micromamba 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