-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
160 lines (152 loc) · 4.83 KB
/
checks.yaml
File metadata and controls
160 lines (152 loc) · 4.83 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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
name: Checks
on:
push:
branches:
- main
- "maintenance/**"
pull_request:
branches:
- main
- "maintenance/**"
workflow_dispatch:
env:
CACHE_VERSION: 3
KEY_PREFIX: base-venv
DEFAULT_PYTHON: "3.13"
PRE_COMMIT_CACHE: ~/.cache/pre-commit
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
permissions:
contents: read
jobs:
prepare-base:
name: Prepare base dependencies
runs-on: ubuntu-latest
timeout-minutes: 10
outputs:
python-key: ${{ steps.generate-python-key.outputs.key }}
pre-commit-key: ${{ steps.generate-pre-commit-key.outputs.key }}
steps:
- &checkout
name: Check out code from GitHub
uses: actions/[email protected]
- &setup-python
name: Set up Python ${{ env.DEFAULT_PYTHON }}
id: python
uses: actions/[email protected]
with:
python-version: ${{ env.DEFAULT_PYTHON }}
check-latest: true
- name: Generate partial Python venv restore key
id: generate-python-key
run: >-
echo "key=${{ env.KEY_PREFIX }}-${{ env.CACHE_VERSION }}-${{
hashFiles('pyproject.toml', 'requirements_test.txt',
'requirements_test_min.txt', 'requirements_test_pre_commit.txt') }}" >>
$GITHUB_OUTPUT
- name: Restore Python virtual environment
id: cache-venv
uses: actions/[email protected]
with:
path: venv
key: >-
${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
steps.generate-python-key.outputs.key }}
- name: Create Python virtual environment
if: steps.cache-venv.outputs.cache-hit != 'true'
run: |
python -m venv venv
. venv/bin/activate
python -m pip install --upgrade pip
pip install --upgrade --requirement requirements_test.txt --requirement doc/requirements.txt
pip install pre-commit
- name: Generate pre-commit restore key
id: generate-pre-commit-key
run: >-
echo "key=pre-commit-${{ env.CACHE_VERSION }}-${{
hashFiles('.pre-commit-config.yaml') }}" >> $GITHUB_OUTPUT
- name: Restore pre-commit environment
id: cache-precommit
uses: actions/[email protected]
with:
path: ${{ env.PRE_COMMIT_CACHE }}
key: >-
${{ runner.os }}-${{ steps.generate-pre-commit-key.outputs.key }}
- name: Install pre-commit dependencies
if: steps.cache-precommit.outputs.cache-hit != 'true'
run: |
. venv/bin/activate
pre-commit install --install-hooks
pylint:
name: pylint
runs-on: ubuntu-latest
timeout-minutes: 10
needs: [prepare-base]
steps:
- *checkout
- *setup-python
- &cache-restore-python
name: Restore Python virtual environment
id: cache-venv
uses: actions/cache/[email protected]
with:
path: venv
fail-on-cache-miss: true
key:
${{ runner.os }}-${{ steps.python.outputs.python-version }}-${{
needs.prepare-base.outputs.python-key }}
- name: Restore pre-commit environment
id: cache-precommit
uses: actions/cache/[email protected]
with:
path: ${{ env.PRE_COMMIT_CACHE }}
fail-on-cache-miss: true
key: ${{ runner.os }}-${{ needs.prepare-base.outputs.pre-commit-key }}
- name: Install enchant and aspell
run: |
sudo apt-get update
sudo apt-get install enchant-2 aspell-en
- name: Run pylint checks
run: |
. venv/bin/activate
pip install . --no-deps
pip list | grep 'astroid\|pylint'
pre-commit run --hook-stage manual pylint-with-spelling --all-files
spelling:
name: spelling tests
runs-on: ubuntu-latest
timeout-minutes: 5
needs: [prepare-base]
steps:
- *checkout
- *setup-python
- *cache-restore-python
- name: Run spelling checks
run: |
. venv/bin/activate
pip install . --no-deps
pytest tests/ -k unittest_spelling --benchmark-disable
documentation:
name: documentation
runs-on: ubuntu-latest
timeout-minutes: 20
needs: [prepare-base]
steps:
- *checkout
- *setup-python
- *cache-restore-python
- name: Run checks on documentation code examples
run: |
. venv/bin/activate
tox -e test_doc
- name: Check documentation build and links
run: |
. venv/bin/activate
tox -e docs || {
echo "git diff:" ; \
git diff ; \
echo "End of 'git diff'" ; \
echo "Make sure that 'tox -e docs' succeed without any modifications locally." ; \
exit 1; \
}