-
-
Notifications
You must be signed in to change notification settings - Fork 786
192 lines (175 loc) · 5.77 KB
/
build_wheels_and_releases.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
189
190
191
192
name: Build-Wheels-PyPi-Release
# https://github.com/pypa/cibuildwheel
# Controls when the workflow will run
on:
workflow_run:
workflows: [ LightSecAgg-Linux ]
types:
- completed
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
jobs:
# Build the wheels for Linux, Windows and macOS for Python 3.8 and newer
build_wheels:
name: Build wheel for cp${{ matrix.python }}-${{ matrix.platform_id }}-${{ matrix.manylinux_image }}
runs-on: ${{ matrix.os }}
defaults:
run:
shell: bash
working-directory: python
strategy:
# Ensure that a wheel builder finishes even if another fails
fail-fast: false
matrix:
include:
# Window 64 bit
- os: windows-2019
python: 38
bitness: 64
platform_id: win_amd64
- os: windows-latest
python: 39
bitness: 64
platform_id: win_amd64
- os: windows-latest
python: 310
bitness: 64
platform_id: win_amd64
# Window 32 bit
- os: windows-latest
python: 38
bitness: 32
platform_id: win32
- os: windows-latest
python: 39
bitness: 32
platform_id: win32
# Linux 64 bit manylinux2014
- os: ubuntu-latest
python: 38
bitness: 64
platform_id: manylinux_x86_64
manylinux_image: manylinux2014
- os: ubuntu-latest
python: 39
bitness: 64
platform_id: manylinux_x86_64
manylinux_image: manylinux2014
# NumPy on Python 3.10 only supports 64bit and is only available with manylinux2014
- os: ubuntu-latest
python: 310
bitness: 64
platform_id: manylinux_x86_64
manylinux_image: manylinux2014
# MacOS x86_64
- os: macos-latest
bitness: 64
python: 38
platform_id: macosx_x86_64
- os: macos-latest
bitness: 64
python: 39
platform_id: macosx_x86_64
- os: macos-latest
bitness: 64
python: 310
platform_id: macosx_x86_64
# MacOS arm64
- os: macos-latest
bitness: 64
python: 38
platform_id: macosx_arm64
- os: macos-latest
bitness: 64
python: 39
platform_id: macosx_arm64
- os: macos-latest
bitness: 64
python: 310
platform_id: macosx_arm64
steps:
- name: Checkout fedml
uses: actions/checkout@v3
- name: Setup Python
uses: actions/setup-python@v4
#with:
# python-version: '3.9'
- name: Build and test wheels
env:
CIBW_BUILD: cp${{ matrix.python }}-${{ matrix.platform_id }}
CIBW_ARCHS: all
CIBW_MANYLINUX_X86_64_IMAGE: ${{ matrix.manylinux_image }}
CIBW_MANYLINUX_I686_IMAGE: ${{ matrix.manylinux_image }}
CIBW_TEST_SKIP: "*-macosx_arm64"
CIBW_REPAIR_WHEEL_COMMAND_WINDOWS: bash build_tools/github/repair_windows_wheels.sh {wheel} {dest_dir} ${{ matrix.bitness }}
CIBW_BEFORE_TEST_WINDOWS: bash build_tools/github/build_minimal_windows_image.sh ${{ matrix.python }} ${{ matrix.bitness }}
CIBW_TEST_COMMAND: bash {project}/build_tools/github/test_wheels.sh
CIBW_TEST_COMMAND_WINDOWS: bash {project}/build_tools/github/test_windows_wheels.sh ${{ matrix.python }} ${{ matrix.bitness }}
CIBW_BUILD_VERBOSITY: 1
#run: bash build_tools/github/build_wheels.sh
run: |
python -m pip install -U wheel setuptools
python setup.py sdist bdist_wheel
pwd
ls dist/*.whl
ls dist/*.tar.gz
- name: Upload source zip file
uses: actions/upload-artifact@v3
with:
path: python/dist/*.tar.gz
- name: Upload Wheels
uses: actions/upload-artifact@v3
with:
path: python/dist/*.whl
# Build the source distribution under Linux
# build_sdist:
# name: Source distribution
# needs: [ build_wheels ]
# runs-on: ubuntu-latest
# defaults:
# run:
# shell: bash
# working-directory: python
#
# steps:
# - name: Checkout fedml
# uses: actions/checkout@v3
#
# - name: Setup Python
# uses: actions/setup-python@v4
# with:
# python-version: '3.9' # update once build dependencies are available
#
# - name: Build source distribution
# run: bash build_tools/github/build_source.sh
#
# - name: Test source distribution
# run: bash build_tools/github/test_source.sh
# env:
# OMP_NUM_THREADS: 2
# OPENBLAS_NUM_THREADS: 2
#
# - name: Store artifacts
# uses: actions/upload-artifact@v3
# with:
# path: python/dist/*.tar.gz
upload_pypi:
name: Upload pypi
needs: [ build_wheels ]
runs-on: ubuntu-latest
# upload to PyPI on every tag starting with 'v'
# if: github.event_name == 'push' && contains(github.event.comment, 'release v')
# alternatively, to publish when a GitHub Release is created, use the following rule:
# if: github.event_name == 'release' && github.event.action == 'published'
steps:
- uses: actions/download-artifact@v3
with:
name: artifact
path: python/dist
- uses: pypa/gh-action-pypi-publish@v1.8.3
with:
skip_existing: true
packages_dir: python/dist
user: ${{ secrets.PYPI_USER_NAME }}
password: ${{ secrets.PYPI_PASSWORD }}
# To test: repository_url: https://test.pypi.org/legacy/