Skip to content

MacRelease

MacRelease #330

Workflow file for this run

name: MacRelease
on:
schedule:
# Run weekly on Monday 00:00
- cron: '00 00 * * MON'
push:
branches: [main, rel-*]
pull_request:
branches: [main, rel-*]
workflow_dispatch:
# Use MACOSX_DEPLOYMENT_TARGET=10.12 to produce compatible wheel
env:
MACOSX_DEPLOYMENT_TARGET: 10.12
permissions:
contents: read
jobs:
build:
if: github.event_name != 'pull_request' || startsWith( github.base_ref, 'rel-') || contains( github.event.pull_request.labels.*.name, 'run release CIs')
runs-on: macos-latest
strategy:
matrix:
python-version: ['3.8', '3.9', '3.10', '3.11']
host-architecture: ['x64']
target-architecture: ['x86_64', 'universal2']
steps:
- uses: actions/checkout@c85c95e3d7251135ab7dc9ce3241c5835cc595a9 # v3.5.3
- name: Checkout submodules
shell: bash
run: |
auth_header="$(git config --local --get http.https://github.com/.extraheader)"
git submodule sync --recursive
git -c "http.extraheader=$auth_header" -c protocol.version=2 submodule update --init --force --recursive --depth=1
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@61a6322f88396a6271a6ee3565807d608ecaddd1 # v4.7.0
with:
python-version: ${{ matrix.python-version }}
architecture: ${{ matrix.host-architecture }}
- name: Install Python dependencies
run: |
python -m pip install -q --upgrade pip
python -m pip install -q -r requirements-release.txt
- name: Build wheel and install
env:
CC: "clang"
CXX: "clang++"
ONNX_ML: 1
run: |
# Install Protobuf from source
export NUM_CORES=`sysctl -n hw.logicalcpu`
if [ '${{ matrix.target-architecture }}' == 'x86_64' ]; then
export CMAKE_OSX_ARCHITECTURES=x86_64
elif [ '${{ matrix.target-architecture }}' == 'universal2' ]; then
export CMAKE_OSX_ARCHITECTURES='arm64;x86_64'
fi
source workflow_scripts/protobuf/build_protobuf_unix.sh $NUM_CORES $(pwd)/protobuf/protobuf_install
export CMAKE_ARGS="-DONNX_USE_LITE_PROTO=ON"
# Currently GitHub Action agent is using macos-11, use -p to force change the final MACOSX_DEPLOYMENT_TARGET
# Change -p if MACOSX_DEPLOYMENT_TARGET is different
if [ '${{ github.event_name }}' == 'schedule' ]; then
python setup.py bdist_wheel -p macosx_10_12_${{ matrix.target-architecture }} --weekly_build
else
python setup.py bdist_wheel -p macosx_10_12_${{ matrix.target-architecture }}
fi
for file in dist/*.whl; do python -m pip install --upgrade $file; done
- name: Test the installed wheel
run: |
pytest
- uses: actions/upload-artifact@0b7f8abb1508181956e8e162db84b466c27e18ce # v3.1.2
with:
name: wheels
path: dist
- name: Upload wheel to PyPI weekly
if: github.event_name == 'schedule' # Only triggered by weekly event
run: |
twine upload --verbose dist/*.whl --repository-url https://upload.pypi.org/legacy/ -u ${{ secrets.ONNXWEEKLY_USERNAME }} -p ${{ secrets.ONNXWEEKLY_TOKEN }}
- name: Verify ONNX with the latest numpy
if: ${{ always() }}
run: |
python -m pip uninstall -y numpy onnx && python -m pip install numpy
for file in dist/*.whl; do python -m pip install --upgrade $file; done
pytest
- name: Verify ONNX with the minimum supported numpy
if: ${{ always() }}
run: |
if [[ "${{ matrix.python-version }}" == "3.8" || "${{ matrix.python-version }}" == "3.9" ]]; then
export minimum_numpy_version=1.16.6
else
export minimum_numpy_version=1.23.2
fi
python -m pip uninstall -y numpy onnx && python -m pip install numpy==$minimum_numpy_version
for file in dist/*.whl; do python -m pip install --upgrade $file; done
pytest
- name: Verify ONNX with the latest protobuf
if: ${{ always() }}
run: |
python -m pip uninstall -y protobuf onnx && python -m pip install protobuf
for file in dist/*.whl; do python -m pip install --upgrade $file; done
pytest
- name: Verify ONNX with the minimum supported protobuf (from requirements.txt)
if: ${{ always() }}
run: |
python -m pip uninstall -y protobuf onnx && python -m pip install protobuf==3.20.2
for file in dist/*.whl; do python -m pip install --upgrade $file; done
pytest
# Only triggered by weekly event on certain CI
- name: Build and upload source distribution to PyPI weekly
if: github.event_name == 'schedule' && matrix.python-version == '3.10' && matrix.target-architecture == 'x86_64'
run: |
# Build and upload source distribution to PyPI
git clean -xdf
python setup.py sdist --weekly_build
twine upload dist/* --repository-url https://upload.pypi.org/legacy/ -u ${{ secrets.ONNXWEEKLY_USERNAME }} -p ${{ secrets.ONNXWEEKLY_TOKEN }}
# Test weekly source distribution from PyPI
python -m pip uninstall -y onnx-weekly
python -m pip install setuptools
python -m pip install --use-deprecated=legacy-resolver --no-use-pep517 --no-binary onnx-weekly onnx-weekly
pytest
- name: Verify ONNX with ONNX Runtime PyPI package
run: |
python -m pip uninstall -y protobuf numpy && python -m pip install -q -r requirements-release.txt
python -m pip install -q onnxruntime
export ORT_MAX_IR_SUPPORTED_VERSION=9
export ORT_MAX_ML_OPSET_SUPPORTED_VERSION=3
export ORT_MAX_ONNX_OPSET_SUPPORTED_VERSION=19
pytest