-
Notifications
You must be signed in to change notification settings - Fork 3
155 lines (124 loc) · 4.07 KB
/
python-release.yaml
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
name: Python package Release
on:
push:
tags:
- python-v*
env:
PYPI_TOKEN: ${{ secrets.PYPI_TOKEN }}
jobs:
lint:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v1
- name: Install latest stable
uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true
components: rustfmt, clippy
- name: Lint with rustfmt
uses: actions-rs/cargo@v1
with:
command: fmt
- name: Lint with clippy
uses: actions-rs/cargo@v1
with:
command: clippy
args: --all-targets --all-features
build:
runs-on: ${{ matrix.os }}
needs: lint
strategy:
fail-fast: false
matrix:
python-version: [3.6, 3.7, 3.8, 3.9]
os: [ubuntu-latest, macos-latest, windows-latest]
steps:
- name: Checkout
uses: actions/checkout@v1
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v1
with:
python-version: ${{ matrix.python-version }}
- name: Install poetry
uses: abatilo/[email protected]
- name: Install dependencies
run: cd packages/pyviewercloud && poetry install
- name: Install latest stable
uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true
- name: Build Python package
working-directory: ./packages/pyviewercloud
run: poetry run maturin develop --release
#- name: pytest
# run: cd packages/pyviewercloud && poetry run pytest tests
#- name: Benchmark
# run: cd packages/pyviewercloud && poetry run pytest benchmarks --compare
# rust-publish:
# if: startsWith(github.ref, 'refs/tags/')
# needs: build
# runs-on: ubuntu-latest
# steps:
# - uses: actions/checkout@v1
# - uses: actions-rs/toolchain@v1
# with:
# toolchain: stable
# override: true
# - name: Publish on crates.io
# run: |
# cargo login ${{ secrets.CARGO }}
# cargo publish
python-publish:
needs: build
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
python-version: [3.6, 3.7, 3.8]
os: [ubuntu-latest, macos-latest, windows-latest]
steps:
- uses: actions/checkout@v1
- uses: actions/setup-python@v1
with:
python-version: ${{ matrix.python-version }}
- name: Install latest stable
uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true
- name: Install poetry
uses: abatilo/[email protected]
- name: Install dependencies
run: cd packages/pyviewercloud && poetry install
- name: Build Python package
working-directory: ./packages/pyviewercloud
run: poetry run maturin build --release --no-sdist --strip --interpreter python${{matrix.python_version}}
- name: List wheels
if: matrix.os == 'windows-latest'
run: dir packages\pyviewercloud\target\wheels\
- name: List wheels
if: matrix.os != 'windows-latest'
run: find packages/pyviewercloud/target/wheels/
# Note: Windows doesn't support glob
# https://stackoverflow.com/a/52481267/270334
- name: Install wheels
if: matrix.os == 'windows-latest'
run: pip install --find-links=packages\pyviewercloud\target\wheels\pyviewercloud
- name: Install wheels
if: matrix.os != 'windows-latest'
run: pip install packages/pyviewercloud/target/wheels/pyviewercloud*.whl
- name: Release
uses: softprops/action-gh-release@v1
if: startsWith(github.ref, 'refs/tags/')
with:
files: packages/pyviewercloud/target/wheels/pyviewercloud*.whl
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: PyPi publish
working-directory: ./packages/pyviewercloud
env:
MATURIN_PASSWORD: ${{ secrets.PYPI_TOKEN }}
run: poetry run maturin publish --username __token__