-
Notifications
You must be signed in to change notification settings - Fork 39
144 lines (136 loc) · 3.56 KB
/
testbuild.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
name: Test and Build
on:
pull_request:
types: [opened, synchronize, reopened]
workflow_call:
permissions:
contents: read
jobs:
tests:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- uses: actions/setup-python@v4
with:
python-version: '3.11'
- name: Python Version
run: python --version
- name: Update Pip
run: python -m pip install --upgrade pip
- name: Install dependencies
run: pip install -r requirements.txt
- name: Install rsatoolbox
run: pip install .
- name: Install test dependencies
run: pip install -r tests/requirements.txt
- name: Skeleton tests
run: python -m unittest -v rsatoolbox.test
- name: Unit tests
run: pytest
style:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- uses: actions/setup-python@v4
with:
python-version: '3.11'
- name: Install dependencies
run: pip install ruff
- name: Style check
run: ruff check
typing:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- uses: actions/setup-python@v4
with:
python-version: '3.11'
- name: Install dependencies
run: pip install mypy
- name: Type check
run: mypy src
source:
needs: tests
runs-on: ${{ matrix.os }}
strategy:
matrix:
python-version: ['3.8', '3.9', '3.10', '3.11', '3.12']
os: [ubuntu-latest, macos-latest, windows-latest]
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Python Version
run: python --version
- name: Update Pip
run: python -m pip install --upgrade pip
- name: Install Build
run: pip install build setuptools
- name: Build package
run: python -m build --sdist
- name: Install rsatoolbox (Linux, Mac)
run: pip install dist/*
if: matrix.os != 'windows-latest'
- name: Install rsatoolbox (Windows)
run: |
$sdistfname = Get-ChildItem dist -Name
pip install dist/$sdistfname
if: matrix.os == 'windows-latest'
- name: Install test dependencies
run: pip install -r tests/requirements.txt
- name: Skeleton tests
run: python -m unittest -v rsatoolbox.test
- name: Unit tests
run: pytest
- name: Check package compliance
run: |
pip install -q twine
twine check dist/*
- name: Store artifact
uses: actions/upload-artifact@v3
with:
name: source
path: dist/*
if-no-files-found: error
retention-days: 1
binaries:
needs: tests
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- uses: actions/setup-python@v4
with:
python-version: '3.12'
- name: Python Version
run: python --version
- name: Update Pip
run: python -m pip install --upgrade pip
- name: Build package
uses: pypa/[email protected]
with:
output-dir: dist
- name: Check package compliance
run: |
pip install -q twine
twine check dist/*
- name: Store artifact
uses: actions/upload-artifact@v3
with:
name: wheels-${{ matrix.os }}
path: dist/*.whl
if-no-files-found: error
retention-days: 1