MacRelease #91
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: 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.15 to produce compatible wheel | |
env: | |
MACOSX_DEPLOYMENT_TARGET: 10.15 | |
permissions: | |
contents: read | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }}-${{ github.event_name == 'workflow_dispatch' }} | |
cancel-in-progress: true | |
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', '3.12'] | |
host-architecture: ['x64'] | |
target-architecture: ['x86_64', 'universal2'] | |
steps: | |
- uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 | |
- 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@82c7e631bb3cdc910f68e0081d67478d79c6982d # v5.1.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 | |
CMAKE_OSX_ARCHITECTURES: ${{ matrix.target-architecture == 'x86_64' && 'x86_64' || 'arm64;x86_64' }} | |
# Currently GitHub Action agent is using macos-11, we rename the wheels | |
# to use the MACOSX_DEPLOYMENT_TARGET | |
# Rename e.g. onnx-1.15.0-cp38-cp38-macosx_11_0_x86_64.whl | |
# to onnx-1.15.0-cp38-cp38-macosx_10_15_universal2.whl | |
ONNX_WHEEL_PLATFORM_NAME: macosx_10_15_${{ matrix.target-architecture }} | |
CMAKE_ARGS: "-DONNX_USE_LITE_PROTO=ON" | |
run: | | |
# Install Protobuf from source | |
export NUM_CORES=`sysctl -n hw.logicalcpu` | |
source workflow_scripts/protobuf/build_protobuf_unix.sh $NUM_CORES $(pwd)/protobuf/protobuf_install | |
if [ '${{ github.event_name }}' == 'schedule' ]; then | |
sed -i '' 's/name = "onnx"/name = "onnx-weekly"/' 'pyproject.toml' | |
export ONNX_PREVIEW_BUILD=1 | |
fi | |
python -m build --wheel | |
for file in dist/*.whl; do | |
python -m pip install --upgrade $file; | |
done | |
- name: Test the installed wheel | |
run: | | |
pytest | |
- uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3 | |
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 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 minimumly supported packages | |
if: ${{ always() }} | |
run: | | |
python -m pip uninstall -y numpy protobuf onnx && python -m pip install -r requirements-min.txt | |
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 | |
sed -i '' 's/name = "onnx"/name = "onnx-weekly"/' 'pyproject.toml' | |
ONNX_PREVIEW_BUILD=1 python -m build --sdist | |
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-binary onnx-weekly onnx-weekly | |
pytest | |
- name: Verify ONNX with ONNX Runtime PyPI package | |
if: matrix.python-version != '3.12' | |
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=20 | |
pytest |