-
Notifications
You must be signed in to change notification settings - Fork 69
140 lines (113 loc) · 3.89 KB
/
ci.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
name: CI
on:
workflow_dispatch:
pull_request:
push:
release:
types:
- published
jobs:
pre-commit:
name: Format
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- uses: actions/setup-python@v2
- uses: pre-commit/action@v2.0.0
with:
extra_args: --hook-stage manual --all-files
checks:
name: Check Python ${{ matrix.python-version }} on ${{ matrix.runs-on }}
runs-on: ${{ matrix.runs-on }}
strategy:
fail-fast: false
matrix:
python-version: [ "3.8", "3.9", "3.10"]
runs-on: [ubuntu-latest, macos-latest, windows-latest]
steps:
- uses: actions/checkout@v2
- uses: actions/setup-python@v2
with:
python-version: ${{ matrix.python-version }}
# Rely on version of modelspec from PyPI as set by setup.cfg...
#- name: Install modelspec
# run: python -m pip install git+https://github.com/ModECI/modelspec.git@main
# Rely on version of NeuroMLlite from PyPI as set by setup.py...
# - name: Install NeuroMLlite
# run: python -m pip install NeuroMLlite>=0.5.0
# Rely on version of PsyNeuLink from PyPI as set by setup.py...
#- name: Install specific PsyNeuLink branch
# run: python -m pip install git+https://github.com/ModECI/PsyNeuLink@devel
- name: Install core package
run: python -m pip install .[dev]
- name: Version info for installed packages
run: |
pip list
- name: Test core package
run: |
python -m pytest -m coremdf tests/
- name: Install most optional dependencies
run: |
python -m pip install .[all_except_psyneulink]
- name: Version info for optional installed packages
run: |
pip list
- name: Install graphviz
if: ${{ matrix.runs-on != 'windows-latest' }}
run: |
if [[ ${{ matrix.runs-on }} == *"macos"* ]]; then brew install graphviz ; fi
if [[ ${{ matrix.runs-on }} == *"ubuntu"* ]]; then sudo apt install graphviz ; fi
- name: Test interface ACT-R
if: ${{ matrix.python-version != '3.10' || matrix.runs-on != 'windows-latest' }}
run: |
python -m pytest -v -m "actr" tests/
- name: Test interface PyTorch
if: ${{ matrix.python-version != '3.10' || matrix.runs-on != 'windows-latest' }}
run: |
python -m pytest -v -m "pytorch" tests/
- name: Test interface NeuroML
if: ${{ matrix.python-version != '3.10' || matrix.runs-on != 'windows-latest' }}
run: |
python -m pytest -v -m "neuroml" tests/
- name: Test interface TensorFlow linux/mac
if: ${{ matrix.runs-on != 'windows-latest' }}
run: |
dot -V
python -m pytest -v -m "tensorflow" tests/
- name: Test interface TensorFlow windows
if: ${{ matrix.python-version != '3.10' && matrix.runs-on == 'windows-latest' }}
run: |
choco install graphviz
dot -V
python -m pytest -v -m "tensorflow" tests/
- name: Test interface PsyNeuLink
if: ${{ matrix.python-version != '3.10' }}
run: |
python -m pip install .[psyneulink]
python -m pytest -v -m "psyneulink" tests/
- name: Build Documentation
run: |
cd docs
python generate.py
cd sphinx
make clean
make html
- name: Final version info for optional installed packages
run: |
pip list
dist:
name: Distribution build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v1
- name: Build sdist and wheel
run: pipx run --spec build pyproject-build
- uses: actions/upload-artifact@v2
with:
path: dist
- uses: pypa/gh-action-pypi-publish@v1.4.1
if: github.event_name == 'release' && github.event.action == 'published'
with:
user: __token__
# Remember to generate this and set it in "GitHub Secrets"
password: ${{ secrets.pypi_password }}