-
Notifications
You must be signed in to change notification settings - Fork 4
136 lines (115 loc) · 3.98 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
135
136
# This workflows will upload a Python Package using Twine when a release is created
# For more information see: https://help.github.com/en/actions/language-and-framework-guides/using-python-with-github-actions#publishing-to-package-registries
# For pytest-qt related fixes: https://pytest-qt.readthedocs.io/en/latest/troubleshooting.html#github-actions
name: tests
on:
pull_request:
paths-ignore:
- "**/README.md"
push:
paths-ignore:
- "**/README.md"
jobs:
test:
runs-on: ubuntu-latest
defaults:
run:
shell: bash -l {0}
strategy:
fail-fast: false
matrix:
python-version: ["3.8", "3.9", "3.10", "3.11"]
env:
DISPLAY: ":99.0"
steps:
- uses: actions/checkout@v3
- uses: conda-incubator/setup-miniconda@v2
with:
auto-update-conda: true
activate-environment: test
python-version: ${{ matrix.python-version }}
channels: conda-forge
- name: Conda info
run: conda info
- name: Save conda location
run: echo "python=$(which python)" >> "$GITHUB_ENV"
- name: Install core
timeout-minutes: 10
run: |
conda install -y pyopencl pocl
python --version
pip install --upgrade pip setuptools wheel
pip install --use-pep517 -e './core[testing]'
- name: Lint core
uses: ./.github/lint
with:
directory: core
python: ${{ env.python }}
- name: Test core
run: pytest --verbose --verbose core/
- uses: tlambert03/setup-qt-libs@v1
- name: Install plugin
timeout-minutes: 10
run: |
/sbin/start-stop-daemon --start --quiet --pidfile /tmp/custom_xvfb_99.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :99 -screen 0 1920x1200x24 -ac +extension GLX
pip install pytest-qt PyQt5
pip install -e './plugin[testing]'
- name: Lint plugin
uses: ./.github/lint
with:
directory: plugin
python: ${{ env.python }}
- name: Test plugin
run: pytest -v --cov=plugin --cov-report=xml plugin
- name: Coverage
uses: codecov/codecov-action@v3
deploy:
# this will run when you have tagged a commit, starting with "v*"
# and requires that you have put your twine API key in your
# github secrets (see readme for details)
needs: [test]
runs-on: ubuntu-latest
environment:
name: github-pages
permissions:
id-token: write
pages: write
contents: read
steps:
- uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: "3.11"
- name: Install dependencies
run: |
python -m pip install --upgrade pip setuptools wheel
python -m pip install ./core[docs,deploy]
python -m pip install ./plugin
- name: Build distributions
run: |
python -m build core
python -m build plugin
- name: Build docs
run: mkdocs build
- name: Upload docs artifact
uses: actions/upload-pages-artifact@v3
with:
path: site
- name: Deploy to GitHub Pages
# Only a non-pr push has permissions to deploy pages
if: github.event_name == 'push'
uses: actions/deploy-pages@v4
- uses: ncipollo/[email protected]
name: Create GitHub release
if: contains(github.ref, 'tags')
with:
artifacts: "core/dist/*,plugin/dist/*"
- name: Release on PyPI
if: contains(github.ref, 'tags')
env:
TWINE_USERNAME: __token__
TWINE_PASSWORD: ${{ secrets.TWINE_TOKEN }}
run:
twine upload --skip-existing --non-interactive core/dist/*
twine upload --skip-existing --non-interactive plugin/dist/*