-
Notifications
You must be signed in to change notification settings - Fork 1
156 lines (129 loc) · 4.46 KB
/
python_actions.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
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
# Copyright (c) 2020 The University of Manchester
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# This workflow will install Python dependencies, run tests, lint and rat with a variety of Python versions
# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions
name: Python Actions
on: [push]
jobs:
build:
runs-on: ${{ matrix.runner }}
timeout-minutes: 10
strategy:
matrix:
include:
- runner: ubuntu-24.04
python-version: "3.12"
checks: 'tests'
- runner: ubuntu-22.04
python-version: "3.12"
checks: 'full'
coverage: 'coverage'
- runner: ubuntu-20.04
python-version: 3.8
checks: 'full'
- runner: ubuntu-latest
python-version: "3.11"
checks: 'tests'
- runner: ubuntu-latest
python-version: "3.10"
checks: 'tests'
- runner: ubuntu-latest
python-version: 3.9
checks: 'tests'
- runner: windows-2022
python-version: "3.12"
checks: 'tests'
- runner: windows-2019
python-version: 3.8
checks: 'tests'
- runner: macos-14
python-version: "3.12"
checks: 'tests'
- runner: macos-11
python-version: 3.8
checks: 'tests'
- runner: ubuntu-22.04
python-version: "3.12"
checks: 'validate'
steps:
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Checkout
uses: actions/checkout@v4
- name: Checkout SupportScripts
uses: actions/checkout@v4
with:
repository: SpiNNakerManchester/SupportScripts
path: support
- name: Install pip, etc
if: ${{ matrix.checks == 'full' || matrix.checks == 'validate' }}
uses: ./support/actions/python-tools
- name: Install mypy
if: ${{ matrix.checks == 'full' }}
run: pip install mypy
- name: Install Spinnaker Dependencies
uses: ./support/actions/install-spinn-deps
with:
repositories: SpiNNUtils SpiNNMachine
install: true
- name: Run Install
uses: ./support/actions/run-install
- name: Test with pytest (and coverage)
if: ${{ matrix.checks == 'full' }}
uses: ./support/actions/pytest
env:
SPALLOC_USER: ${{ secrets.SPALLOC_USER }}
SPALLOC_PASSWORD: ${{ secrets.SPALLOC_PASSWORD }}
with:
tests: unittests
coverage: ${{ matrix.coverage == 'coverage' }}
cover-packages: spinnman, spinnman_integration_tests
coveralls-token: ${{ secrets.GITHUB_TOKEN }}
- name: Simple pytest
if: ${{ matrix.check == 'tests'}}
env:
SPALLOC_USER: ${{ secrets.SPALLOC_USER }}
SPALLOC_PASSWORD: ${{ secrets.SPALLOC_PASSWORD }}
run: |
pytest unittests
pytest spinnman_integration_tests
- name: Lint with flake8
if: ${{ matrix.checks == 'full' }}
run: flake8 spinnman unittests
- name: Lint with pylint
if: ${{ matrix.checks == 'full' }}
uses: ./support/actions/pylint
with:
package: spinnman
exitcheck: 31 # Action fails on any message
language: en_GB
rcfile: global_strict
- name: Lint with mypy
if: ${{ matrix.checks == 'full' }}
run: mypy spinnman
- name: Run rat copyright enforcement
if: ${{ matrix.checks == 'validate' }}
uses: ./support/actions/check-copyrights
with:
config_file: rat_asl20.xml
- name: Build documentation with sphinx
if: ${{ matrix.checks == 'validate' }}
uses: ./support/actions/sphinx
with:
directory: doc/source
- name: Validate CITATION.cff
if: ${{ matrix.checks == 'validate' }}
uses: dieghernan/cff-validator@main