-
Notifications
You must be signed in to change notification settings - Fork 136
162 lines (150 loc) · 5.22 KB
/
test.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
157
158
159
160
161
162
name: Lint, test, build, and publish
on:
push:
jobs:
lint_and_test:
name: Runs the linter and tests
runs-on: ubuntu-latest
strategy:
matrix:
python-version: [3.8, 3.9, '3.10', '3.11']
steps:
- uses: actions/checkout@v3
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
- name: Install dependencies and kraken
run: |
python -m pip install --upgrade pip
pip install .[test] flake8
- name: Lint with flake8
run: |
# stop the build if there are Python syntax errors or undefined names
flake8 . --count --select=E9,F63,F7,F82 --show-source --statistics
# exit-zero treats all errors as warnings. The GitHub editor is 127 chars wide
flake8 . --count --exit-zero --max-complexity=10 --max-line-length=127 --statistics
- name: Run tests, except training tests
run: |
pytest -k 'not test_train'
build-n-publish-pypi:
name: Build and publish Python 🐍 distributions 📦 to PyPI and TestPyPI
needs: lint_and_test
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/')
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Set up Python 3.9
uses: actions/setup-python@v4
with:
python-version: 3.9
- name: Build a binary wheel and a source tarball
run: |
python -m pip install build --user
python -m build --sdist --wheel --outdir dist/ .
- name: Publish a Python distribution to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
user: __token__
password: ${{ secrets.PYPI_API_TOKEN }}
- name: Upload PyPI artifacts to GH storage
uses: actions/upload-artifact@v3
with:
name: pypi_packages
path: dist/*
build-n-publish-anaconda:
name: Build and publish anaconda packages
needs: lint_and_test
runs-on: ubuntu-latest
if: startsWith(github.ref, 'refs/tags/')
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- uses: conda-incubator/setup-miniconda@v2
with:
python-version: 3.9
miniforge-variant: Mambaforge
- name: install dependencies build
shell: bash -l {0}
run: mamba install "conda-build>=3.20" colorama pip ruamel ruamel.yaml rich jsonschema conda-verify anaconda-client mamba
# Runs the action with the following inputs or defaults if not specified.
- name: install boa
shell: bash -l {0}
run: pip install https://github.com/mamba-org/boa/archive/refs/tags/0.14.0.zip
- name: validate recipe
shell: bash -l {0}
id: conda_validation
run: |
PACKAGE_PATHS=$(conda mambabuild . --output --check -c conda-forge | tail -n 1)
echo "package_paths=$PACKAGE_PATHS" >> $GITHUB_OUTPUT
- name: run build
shell: bash -l {0}
run: conda mambabuild . -c conda-forge
- name: convert packages
shell: bash -l {0}
run: |
conda convert -p osx-arm64 -p osx-64 -o conda_convert ${{ steps.conda_validation.outputs.package_paths }}
mkdir conda_convert/linux-64
cp -f ${{ steps.conda_validation.outputs.package_paths }} conda_convert/linux-64
- name: upload to anaconda
shell: bash -l {0}
run: anaconda -t ${{ secrets.ANACONDA_TOKEN }} upload --no-progress --force conda_convert/*/*
- name: Upload conda artifacts to GH storage
uses: actions/upload-artifact@v3
with:
name: conda_packages
path: conda_convert/*/*.tar.bz2
autodraft-gh-release:
name: Create github release
needs: [build-n-publish-anaconda, build-n-publish-pypi]
runs-on: ubuntu-latest
steps:
- uses: actions/download-artifact@v3
with:
name: conda_packages
path: conda
- uses: actions/download-artifact@v3
with:
name: pypi_packages
path: pypi
- uses: "marvinpinto/action-automatic-releases@latest"
with:
repo_token: "${{ secrets.GITHUB_TOKEN }}"
prerelease: false
draft: true
files: |
conda/*/*.tar.bz2
pypi/*
publish-gh-pages:
name: Update kraken.re github pages
needs: lint_and_test
runs-on: ubuntu-latest
if: |
github.ref == 'refs/heads/main' ||
startsWith(github.ref, 'refs/tags/')
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 0
- name: Set up Python 3.9
uses: actions/setup-python@v4
with:
python-version: 3.9
- name: Install sphinx-multiversion
run: python -m pip install sphinx-multiversion sphinx-autoapi
- name: Create docs
run: sphinx-multiversion docs build/html
- name: Create redirect
run: cp docs/redirect.html build/html/index.html
- name: Push gh-pages
uses: crazy-max/ghaction-github-pages@v3
with:
target_branch: gh-pages
build_dir: build/html
fqdn: kraken.re
jekyll: false
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}