Skip to content

Build-Wheels-PyPi-Dev #3462

Build-Wheels-PyPi-Dev

Build-Wheels-PyPi-Dev #3462

name: Build-Wheels-PyPi-Dev
# 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_API_USER_NAME }}
password: ${{ secrets.PYPI_API_TOKEN }}
repository_url: https://test.pypi.org/legacy/