-
Notifications
You must be signed in to change notification settings - Fork 14
141 lines (134 loc) · 4.45 KB
/
deployment-python.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
name: PyPI Deployment
on:
push:
pull_request:
merge_group:
jobs:
release-linux-x86_64:
if: github.event_name == 'push' && contains(github.ref, 'refs/tags/')
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
target: ["x86_64"]
manylinux: ["manylinux2014"]
python-version: ["3.10", "3.11", "3.12"]
steps:
- name: Checkout the source tree
uses: actions/checkout@v3
- name: Build the wheel
uses: PyO3/maturin-action@v1
env:
PROTOC: /home/runner/.local/bin/protoc
with:
command: build
args: --release -m binding/python/Cargo.toml -o dist -i python${{ matrix.python-version }}
before-script-linux: |
PB_REL="https://github.com/protocolbuffers/protobuf/releases"
curl -LO $PB_REL/download/v23.2/protoc-23.2-linux-x86_64.zip
unzip protoc-23.2-linux-x86_64.zip -d $HOME/.local
export PATH="$PATH:$HOME/.local/bin"
manylinux: ${{ matrix.manylinux }}
target: ${{ matrix.target }}
- name: Upload artifacts
uses: actions/upload-artifact@v3
with:
name: wheels
path: binding/python/dist
release-linux-aarch64:
if: github.event_name == 'push' && contains(github.ref, 'refs/tags/')
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
target: ["aarch64"]
manylinux: ["manylinux2014"]
python-version: ["3.10", "3.11", "3.12"]
steps:
- name: Setup QEMU
uses: docker/setup-qemu-action@v1
- name: Checkout the source tree
uses: actions/checkout@v3
- name: Build the wheel
uses: PyO3/maturin-action@v1
env:
PROTOC: /home/runner/.local/bin/protoc
with:
command: build
args: --release -m binding/python/Cargo.toml -o dist -i python${{ matrix.python-version }}
before-script-linux: |
sudo apt-get install -y unzip
PB_REL="https://github.com/protocolbuffers/protobuf/releases"
curl -LO $PB_REL/download/v23.2/protoc-23.2-linux-aarch_64.zip
unzip protoc-23.2-linux-aarch_64.zip -d $HOME/.local
export PATH="$PATH:$HOME/.local/bin"
manylinux: ${{ matrix.manylinux }}
target: ${{ matrix.target }}
- name: Upload artifacts
uses: actions/upload-artifact@v3
with:
name: wheels
path: binding/python/dist
release-macos:
if: github.event_name == 'push' && contains(github.ref, 'refs/tags/')
runs-on: macos-latest
strategy:
fail-fast: false
matrix:
python-version: ["3.10", "3.11", "3.12"]
steps:
- name: Checkout the source tree
uses: actions/checkout@v3
- name: Install prerequisites
run: |
brew install protobuf
- name: Build the wheel
uses: PyO3/maturin-action@v1
with:
command: build
args: --release -m binding/python/Cargo.toml -o dist -i python${{ matrix.python-version }}
- name: Upload artifacts
uses: actions/upload-artifact@v3
with:
name: wheels
path: binding/python/dist
release-source:
if: github.event_name == 'push' && contains(github.ref, 'refs/tags/')
runs-on: ubuntu-latest
steps:
- name: Checkout the source tree
uses: actions/checkout@v3
- name: Set up Python as Runtime
uses: actions/setup-python@v4
with:
python-version: "3.11"
- name: Build the source distribution
working-directory: binding/python
run: |
pip install -U pip setuptools
pip install -U build
python -m build --sdist
- name: Upload artifacts
uses: actions/upload-artifact@v3
with:
name: wheels
path: binding/python/dist
publish-to-pypi:
needs: [release-linux-x86_64, release-linux-aarch64, release-macos, release-source]
environment: deploy-to-pypi
permissions:
id-token: write
runs-on: ubuntu-latest
steps:
- name: Download artifacts
uses: actions/download-artifact@v3
with:
name: wheels
path: binding/python/dist
- name: Publish to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
user: jopemachine
oidc: false
password: ${{ secrets.PYPI_API_TOKEN }}
repository-url: https://pypi.org/project/raftify/