-
-
Notifications
You must be signed in to change notification settings - Fork 1
164 lines (137 loc) · 4.9 KB
/
pypi-release.yml
File metadata and controls
164 lines (137 loc) · 4.9 KB
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
name: Create library release archives, create a GH release and publish PyPI wheel and sdist on tag in main branch
# This is executed automatically on a tag in the main branch
# Summary of the steps:
# - build wheels and sdist
# - upload wheels and sdist to PyPI
# - create gh-release and upload wheels and dists there
# TODO: smoke test wheels and sdist
# TODO: add changelog to release text body
# WARNING: this is designed only for packages building as pure Python wheels
on:
workflow_dispatch:
push:
tags:
- "v*.*.*"
permissions: {}
jobs:
build-wheels:
name: Build unicode wheels ${{ matrix.type }} ${{ matrix.arch }} on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
defaults:
run:
shell: bash
strategy:
fail-fast: false
matrix:
os: [macos-latest, windows-latest]
arch: [auto64]
build: ["cp{310,311,312,313,314}-*"]
include:
- os: ubuntu-latest
arch: auto64
type: manylinux2014
build: "cp{310,311,312,313,314}-*"
CIBW_MANYLINUX_X86_64_IMAGE: manylinux2014
- os: ubuntu-24.04-arm
arch: aarch64
build: "cp{310,311,312,313,314}-*"
CIBW_MANYLINUX_AARCH64_IMAGE: manylinux2014
- os: macos-latest
arch: universal2
build: "cp{310,311,312,313,314}-*"
- os: windows-latest
arch: auto64
build: "cp{310,311,312,313,314}-*"
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
with:
persist-credentials: false
- name: Build wheels and run tests
uses: pypa/cibuildwheel@8d2b08b68458a16aeb24b64e68a09ab1c8e82084
env:
CIBW_BUILD: ${{ matrix.build }}
CIBW_MANYLINUX_X86_64_IMAGE: ${{ matrix.CIBW_MANYLINUX_X86_64_IMAGE }}
CIBW_MANYLINUX_AARCH64_IMAGE: ${{ matrix.CIBW_MANYLINUX_AARCH64_IMAGE }}
CIBW_ARCHS: ${{ matrix.arch }}
CIBW_TEST_REQUIRES: pytest
CIBW_TEST_COMMAND: pytest -vvs {project}/tests
- name: Collect built wheels
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f
with:
name: cyseq-wheels-${{ matrix.os }}-${{ strategy.job-index }}
path: ./wheelhouse/*.whl
build-sdist:
name: Build source distribution
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd
with:
persist-credentials: false
- name: Checkout and install reqs
run: |
pip install --upgrade --user build twine pkginfo packaging pip setuptools cython
pip install setuptools-scm==10.0.4
- name: Build sdist
run: |
python setup.py sdist
twine check dist/*
- name: Collect built sdist
uses: actions/upload-artifact@b7c566a772e6b6bfb58ed0dc250532a479d7789f
with:
name: cyseq-sdist
path: dist/*.tar.gz
merge:
runs-on: ubuntu-latest
needs: [build-sdist, build-wheels]
steps:
- name: Merge created wheels and sdist in a single zip
uses: actions/upload-artifact/merge@b7c566a772e6b6bfb58ed0dc250532a479d7789f
with:
name: cyseq-build
pattern: cyseq-*
check-dist:
name: Check distributions are PyPi-correct
needs: merge
runs-on: ubuntu-22.04
steps:
- uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131
with:
path: cyseq-build
- run: find . -ls
- run: pipx run twine check --strict cyseq-build/*/*
create-gh-release:
name: Create GH release
needs:
- check-dist
runs-on: ubuntu-24.04
steps:
- name: Download builds
uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131
with:
name: cyseq-build
path: cyseq-build
- name: Create GH release
uses: softprops/action-gh-release@b4309332981a82ec1c5618f44dd2e27cc8bfbfda
with:
draft: true
files: cyseq-build/*
create-pypi-release:
name: Create PyPI release
needs:
- create-gh-release
runs-on: ubuntu-24.04
environment: pypi-publish
permissions:
id-token: write
steps:
- name: Download builds
uses: actions/download-artifact@37930b1c2abaa49bbe596cd826c3c89aef350131
with:
name: cyseq-build
path: dist/
- name: Mock PyPI upload
run: |
ls -al dist
- name: Publish to PyPI
if: startsWith(github.ref, 'refs/tags')
uses: pypa/gh-action-pypi-publish@cef221092ed1bacb1cc03d23a2d87d1d172e277b