Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Test/v0.7.0 #560

Merged
merged 2 commits into from
Sep 8, 2022
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
183 changes: 183 additions & 0 deletions .github/workflows/build_wheels_and_releases.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,183 @@
name: Build_Wheels_and_Release
# https://github.com/pypa/cibuildwheel
# Controls when the workflow will run
on:
# Triggers the workflow on push or pull request events but only for the master branch
schedule:
# Nightly build at 12:12 A.M.
- cron: "12 12 */1 * *"
push:
branches: [ master, test/v0.7.0, dev/0.7.0 ]
pull_request:
branches: [ master, test/v0.7.0, dev/0.7.0 ]

# 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: [ self-hosted, devops, runner-linux ]
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' # update once build dependencies are available

- 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_REQUIRES: pytest pandas threadpoolctl
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

- name: Store artifacts
uses: actions/upload-artifact@v2
with:
path: wheelhouse/*.whl

# Build the source distribution under Linux
build_sdist:
name: Source distribution
runs-on: [ self-hosted, devops, runner-linux ]
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@v2
with:
path: dist/*.tar.gz

# upload_pypi:
# needs: [ build_wheels ]
# runs-on: [ self-hosted, devops, runner-linux ]
# # 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@v2
# with:
# name: artifact
# path: dist
#
# - uses: pypa/[email protected]
# with:
# skip_existing: true
# user: alexliang
# password: ${{ secrets.pypi_password }}
# # To test: repository_url: https://test.pypi.org/legacy/