-
Notifications
You must be signed in to change notification settings - Fork 14
133 lines (126 loc) · 4.07 KB
/
deployment-pypi.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
name: PyPI Deployment
on:
push:
tags:
- "*"
jobs:
release-linux-x86_64:
runs-on: ubuntu-22.04
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@v4
- 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@v4
with:
name: wheels-x86_64
path: binding/python/dist
release-linux-aarch64:
runs-on: ubuntu-22.04-arm64
strategy:
fail-fast: false
matrix:
target: ["aarch64"]
manylinux: ["manylinux2014"]
python-version: ["3.10", "3.11", "3.12"]
steps:
- name: Checkout the source tree
uses: actions/checkout@v4
- 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@v4
with:
name: wheels-aarch64
path: binding/python/dist
release-macos:
runs-on: macos-14
strategy:
fail-fast: false
matrix:
python-version: ["3.10", "3.11", "3.12"]
steps:
- name: Checkout the source tree
uses: actions/checkout@v4
- 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@v4
with:
name: wheels-macos
path: binding/python/dist
release-source:
if: github.event_name == 'push' && contains(github.ref, 'refs/tags/')
runs-on: ubuntu-22.04
steps:
- name: Checkout the source tree
uses: actions/checkout@v4
- name: Set up Python as Runtime
uses: actions/setup-python@v5
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 binding/python
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: wheels-source
path: binding/python/dist
publish-to-pypi:
needs: [release-linux-x86_64, release-linux-aarch64, release-macos, release-source]
environment:
name: deploy-to-pypi
url: https://pypi.org/p/raftify
permissions:
id-token: write
runs-on: ubuntu-22.04
steps:
- name: Download artifacts
uses: actions/download-artifact@v4
with:
pattern: wheels-*
path: dist
- name: Publish to PyPI
uses: pypa/gh-action-pypi-publish@release/v1