Build-Wheels-PyPi-Test #6224
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build-Wheels-PyPi-Test | |
# 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/[email protected] | |
with: | |
skip_existing: true | |
packages_dir: python/dist | |
user: ${{ secrets.PYPI_API_USER_NAME }} | |
password: ${{ secrets.PYPI_API_TOKEN }} | |
repository_url: https://test.pypi.org/legacy/ |