-
Notifications
You must be signed in to change notification settings - Fork 27
188 lines (175 loc) · 5.54 KB
/
wheel-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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
## Build wheel and upload to TestPyPI (!! not PyPI !!)
## https://github.com/joerick/cibuildwheel/blob/master/examples/github-deploy.yml
## https://scikit-hep.org/developer/gha_wheels
name: Build wheel and upload to PyPI or TestPyPI
# When pushing with a tag (i.e. new version)
on:
push:
tags:
- "*"
jobs:
check-current-branch:
runs-on: ubuntu-latest
outputs:
branch: ${{ steps.check_step.outputs.branch }}
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Get current branch
id: check_step
# 1. Get the list of branches ref where this tag exists
# 2. Remove 'origin/' from that result
# 3. Put that string in output
# => We can now use function 'contains(list, item)''
run: |
raw=$(git branch -r --contains ${{ github.ref }})
branch="$(echo ${raw//origin\//} | tr -d '\n')"
echo "{name}=branch" >> $GITHUB_OUTPUT
echo "Branches where this tag exists : $branch."
build_wheels:
name: Build wheel for cp${{ matrix.python }}-${{ matrix.platform_id }}-${{ matrix.manylinux_image }}
runs-on: ${{ matrix.os }}
strategy:
# Ensure that a wheel builder finishes even if another fails
fail-fast: false
matrix:
include:
# Window 64 bit
- os: windows-latest
python: 39
platform_id: win_amd64
- os: windows-latest
python: 310
platform_id: win_amd64
- os: windows-latest
python: 311
platform_id: win_amd64
- os: windows-latest
python: 312
platform_id: win_amd64
# Linux 64 bit manylinux2014
- os: ubuntu-latest
python: 39
platform_id: manylinux_x86_64
manylinux_image: manylinux2014
- os: ubuntu-latest
python: 310
platform_id: manylinux_x86_64
manylinux_image: manylinux2014
- os: ubuntu-latest
python: 311
platform_id: manylinux_x86_64
manylinux_image: manylinux2014
- os: ubuntu-latest
python: 312
platform_id: manylinux_x86_64
manylinux_image: manylinux2014
# MacOS x86_64
- os: macos-12
python: 39
platform_id: macosx_x86_64
- os: macos-12
python: 310
platform_id: macosx_x86_64
- os: macos-12
python: 311
platform_id: macosx_x86_64
- os: macos-12
python: 312
platform_id: macosx_x86_64
# MacOS arm64
- os: macos-14
python: 39
platform_id: macosx_arm64
- os: macos-14
python: 310
platform_id: macosx_arm64
- os: macos-14
python: 311
platform_id: macosx_arm64
- os: macos-14
python: 312
platform_id: macosx_arm64
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
name: Install Python
with:
python-version: '3.11'
- name: Install NumPy and cibuildwheel
run: |
python3 -m pip install --upgrade pip
python3 -m pip install cibuildwheel==2.19.1
- name: Build wheels
run: |
python3 -m cibuildwheel --output-dir wheelhouse
env:
CIBW_BUILD_VERBOSITY: 1
CIBW_BUILD: cp${{ matrix.python }}-${{ matrix.platform_id }}
CIBW_SKIP: pp*
CIBW_BEFORE_BUILD: pip install numpy
- name: Upload artefacts
uses: actions/upload-artifact@v4
with:
name: far-wheels-cp${{ matrix.python }}-${{ matrix.platform_id }}
path: wheelhouse/*.whl
build_sdist:
name: Build source distribution
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-python@v5
name: Install Python
with:
python-version: '3.11'
- name: Install Python dependencies
run: |
python3 -m pip install --upgrade pip setuptools wheel
python3 -m pip install numpy
- name: Build sdist
run: |
python3 setup.py sdist
- name: Upload artefact
uses: actions/upload-artifact@v4
with:
name: far-sdist
path: dist/*.tar.gz
upload_pypi:
name: Upload to PyPI
needs: [check-current-branch, build_wheels, build_sdist]
runs-on: ubuntu-latest
if: contains(${{ needs.check.outputs.branch }}, 'master')
environment:
name: pypi
url: https://pypi.org/p/forestatrisk
permissions:
id-token: write # Mandatory for trusted publishing.
steps:
- uses: actions/download-artifact@v4
with:
pattern: far-*
path: dist
merge-multiple: true
- uses: pypa/gh-action-pypi-publish@release/v1
upload_testpypi:
name: Upload to TestPyPI
needs: [check-current-branch, build_wheels, build_sdist]
runs-on: ubuntu-latest
if: contains(${{ needs.check.outputs.branch }}, 'dev')
environment:
name: testpypi
url: https://test.pypi.org/p/forestatrisk
permissions:
id-token: write # Mandatory for trusted publishing.
steps:
- uses: actions/download-artifact@v4
with:
pattern: far-*
path: dist
merge-multiple: true
- uses: pypa/gh-action-pypi-publish@release/v1
with:
repository-url: https://test.pypi.org/legacy/
# End