-
Notifications
You must be signed in to change notification settings - Fork 136
161 lines (149 loc) · 5.08 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
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@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
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@v4
with:
fetch-depth: 0
- name: Set up Python 3.9
uses: actions/setup-python@v5
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@v4
with:
fetch-depth: 0
- uses: conda-incubator/setup-miniconda@v3
with:
python-version: 3.9
miniforge-variant: Mambaforge
- name: install dependencies build
shell: bash -l {0}
run: mamba install colorama pip ruamel ruamel.yaml rich jsonschema conda-verify anaconda-client
- name: Build linux-64 conda package
uses: prefix-dev/[email protected]
with:
recipe-path: "conda/recipe.yaml"
build-args: "--experimental --target-platform linux-64"
- name: Build osx-64 conda package
uses: prefix-dev/[email protected]
with:
recipe-path: "conda/recipe.yaml"
build-args: "--experimental --target-platform osx-64"
# - name: Build osx-arm64 conda package
# uses: prefix-dev/[email protected]
# with:
# recipe-path: "conda/recipe.yaml"
# build-args: "--experimental --target-platform osx-arm64"
- name: Upload conda package
run: |
for pkg in $(find output -type f \( -name "*.conda" -o -name "*.tar.bz2" \) ); do
echo "Uploading ${pkg}"
rattler-build upload anaconda -o mittagessen -a ${{ secrets.ANACONDA_TOKEN }} "${pkg}"
done
- name: Upload conda artifacts to GH storage
uses: actions/upload-artifact@v4
with:
name: conda_packages
path: output/*/*.conda
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@v4
with:
name: conda_packages
path: conda
- uses: actions/download-artifact@v4
with:
name: pypi_packages
path: pypi
- uses: "marvinpinto/action-automatic-releases@latest"
with:
repo_token: "${{ secrets.GITHUB_TOKEN }}"
prerelease: false
draft: true
files: |
output/*/*.conda
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@v4
with:
fetch-depth: 0
- name: Set up Python 3.9
uses: actions/setup-python@v5
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 }}