-
Notifications
You must be signed in to change notification settings - Fork 29
134 lines (116 loc) · 3.7 KB
/
test_and_deploy.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
name: tests
on:
push:
branches:
- main
tags:
- '*'
pull_request:
schedule:
# Runs at 6:10am UTC on Monday
- cron: '10 6 * * 1'
jobs:
linting:
runs-on: ubuntu-latest
steps:
- uses: neuroinformatics-unit/actions/lint@v2
manifest:
name: Check manifest
runs-on: ubuntu-latest
steps:
- uses: neuroinformatics-unit/actions/check_manifest@v2
test:
needs: [linting, manifest]
name: ${{ matrix.os }} py${{ matrix.python-version }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
# Run across a mixture of Python versions and operating systems
include:
- os: ubuntu-latest
python-version: "3.12"
- os: macos-13 # just intel mac here, silicon mac tested with mamba due to niftyreg complications
python-version: "3.11"
- os: windows-latest
python-version: "3.10"
steps:
- name: Cache brainglobe directory
uses: actions/cache@v3
with:
path: | # ensure we don't cache any interrupted atlas download and extraction, if e.g. we cancel the workflow manually
~/.brainglobe
!~/.brainglobe/atlas.tar.gz
key: atlases
- name: Setup QT libraries
uses: tlambert03/setup-qt-libs@v1
# Helps set up VTK with a headless display
- uses: pyvista/setup-headless-display-action@v3
- name: Run tests
uses: neuroinformatics-unit/actions/test@v2
with:
python-version: ${{ matrix.python-version }}
secret-codecov-token: ${{ secrets.CODECOV_TOKEN }}
use-xvfb: true
- name: Notify slack on scheduled failure
if: failure() && github.event_name == 'schedule'
uses: ravsamhq/notify-slack-action@v2
with:
status: ${{ job.status }} # required
notify_when: 'failure'
env:
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_NOTIFYBOT_WEBHOOK_URL }} # required
test-with-conda:
# mainly checks conda installation of niftyreg, especially key on Silicon macs
needs: [linting, manifest]
name: Test conda-install, on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
os: [ubuntu-latest, macos-latest, windows-latest]
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Setup mamba environment
uses: mamba-org/setup-micromamba@v1
with:
init-shell: bash
environment-name: niftyreg-env
create-args: >-
python=3.12
setuptools
setuptools_scm
wheel
- name: Install package into environment
shell: bash -el {0}
run: |
pip install .[dev]
- name: Run backend tests (no conda binaries)
shell: bash -el {0}
run: |
pytest -v tests/tests/test_backend
- name: Install niftyreg with conda
shell: bash -el {0}
run: |
micromamba install niftyreg
- name: Run backend tests(conda binaries present)
shell: bash -el {0}
run: |
pytest -v tests/tests/test_backend
build_sdist_wheel:
name: Build source distribution and wheel
needs: [test, test-with-conda]
if: github.event_name == 'push' && github.ref_type == 'tag'
runs-on: ubuntu-latest
steps:
- uses: neuroinformatics-unit/actions/build_sdist_wheels@v2
deploy:
name: Deploy to PyPI
needs: [build_sdist_wheel]
if: github.event_name == 'push' && github.ref_type == 'tag'
runs-on: ubuntu-latest
steps:
- uses: neuroinformatics-unit/actions/upload_pypi@v2
with:
secret-pypi-key: ${{ secrets.TWINE_API_KEY }}