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
|
name: CI
on:
release:
types: [created]
push:
schedule:
# Runs every Thursday at 20:23 GMT to avoid bit rot
- cron: "20 23 * * 4"
jobs:
lint:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v1
- name: Install latest nightly
uses: actions-rs/toolchain@v1
with:
toolchain: nightly
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.5, 3.6, 3.7, 3.8]
os: [ubuntu-latest, macos-latest, windows-latest]
exclude:
# There is a known issue where Python C extensions
# can not be built on Python 3.5 on Windows.
# https://github.com/actions/virtual-environments/issues/34
# Therefore, ujson can't be compiled and the build would fail.
- os: windows-latest
python-version: 3.5
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 dependencies
run: |
python -m pip install --upgrade pip
pip install poetry
poetry install
- name: Install latest nightly
uses: actions-rs/toolchain@v1
with:
toolchain: nightly
override: true
- name: Build Python package
run: poetry run maturin develop --release
python-publish:
needs: build
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
python-version: [3.5, 3.6, 3.7, 3.8]
os: [ubuntu-latest, macos-latest, windows-latest]
exclude:
# There is a known issue where Python C extensions
# can not be built on Python 3.5 on Windows.
# https://github.com/actions/virtual-environments/issues/34
# Therefore, ujson can't be compiled and the build would fail.
- os: windows-latest
python-version: 3.5
steps:
- uses: actions/checkout@v1
- uses: actions/setup-python@v1
with:
python-version: ${{ matrix.python-version }}
- name: Install latest nightly
uses: actions-rs/toolchain@v1
with:
toolchain: nightly
override: true
- name: Install dependencies
run: |
python -m pip install --upgrade pip
pip install poetry
poetry install
- name: Build Python package
run: poetry run maturin build --release --no-sdist --strip --interpreter python${{matrix.python_version}}
- name: List wheels
if: matrix.os == 'windows-latest'
run: dir target\wheels\
- name: List wheels
if: matrix.os != 'windows-latest'
run: find ./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=target\wheels adblock
- name: Install wheels
if: matrix.os != 'windows-latest'
run: pip install target/wheels/adblock*.whl
- name: Release
uses: softprops/action-gh-release@v1
if: startsWith(github.ref, 'refs/tags/')
with:
files: target/wheels/adblock*.whl
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: PyPi publish
if: startsWith(github.ref, 'refs/tags/')
env:
MATURIN_PASSWORD: ${{ secrets.PYPI }}
run: poetry run maturin publish --interpreter python${{matrix.python_version}} --username __token__
|