MacRelease #8
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.12 to produce compatible wheel | |
env: | |
MACOSX_DEPLOYMENT_TARGET: 10.12 | |
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.7', '3.8', '3.9', '3.10', '3.11'] | |
host-architecture: ['x64'] | |
target-architecture: ['x86_64', 'universal2'] | |
steps: | |
- uses: actions/checkout@v3 | |
- 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@v4 | |
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@v1 | |
with: | |
name: wheels | |
path: dist | |
- name: Upload wheel to TestPyPI weekly | |
if: github.event_name == 'schedule' # Only triggered by weekly event | |
run: | | |
twine upload --verbose dist/*.whl --repository-url https://test.pypi.org/legacy/ -u ${{ secrets.TESTPYPI_USERNAME }} -p ${{ secrets.TESTPYPI_PASSWORD }} | |
- 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 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 | |
- name: Verify ONNX with ONNX Runtime PyPI package | |
if: matrix.python-version != '3.11' | |
run: | | |
python -m pip install -q onnxruntime | |
python onnx/test/test_with_ort.py | |
# Only triggered by weekly event on certain CI | |
- name: Build and upload source distribution to TestPyPI weekly | |
if: github.event_name == 'schedule' && matrix.python-version == '3.10' && matrix.target-architecture == 'x86_64' | |
run: | | |
# Build and upload source distribution to TestPyPI | |
git clean -xdf | |
python setup.py sdist --weekly_build | |
twine upload dist/* --repository-url https://test.pypi.org/legacy/ -u ${{ secrets.TESTPYPI_USERNAME }} -p ${{ secrets.TESTPYPI_PASSWORD }} | |
# Test source distribution from TestPyPI | |
python -m pip uninstall -y onnx | |
python -m pip install setuptools | |
python -m pip install --index-url https://test.pypi.org/simple --use-deprecated=legacy-resolver --no-use-pep517 --no-binary onnx-weekly onnx-weekly | |
pytest |