# Copyright (c) ONNX Project Contributors # # SPDX-License-Identifier: Apache-2.0 name: Windows Release on: workflow_call: inputs: build_mode: required: false type: string default: "preview" workflow_dispatch: permissions: contents: read concurrency: group: windows-release-${{ github.workflow }}-${{ github.ref }} cancel-in-progress: true jobs: build: strategy: fail-fast: false matrix: build: - "cp310-win_amd64" - "cp310-win32" - "cp311-win_amd64" - "cp311-win32" - "cp311-win_arm64" - "cp312-win_amd64" - "cp312-win32" - "cp312-win_arm64" - "cp314t-win_amd64" - "cp314t-win_arm64" runs-on: ${{ contains(matrix.build, 'arm64') && 'windows-11-arm' || 'windows-2022' }} steps: - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: persist-credentials: false - name: Read protobuf version from sbom.cdx.json shell: bash run: echo "PROTOBUF_VERSION=$(jq -r '.components[] | select(.name=="protobuf") | .version' sbom.cdx.json)" >> $GITHUB_ENV - uses: actions/setup-python@ece7cb06caefa5fff74198d8649806c4678c61a1 # v6.3.0 with: python-version: "3.12" - name: Set preview version if: inputs.build_mode != 'release' shell: bash run: | sed -i'' 's/name = "onnx"/name = "onnx-weekly"/' pyproject.toml echo "$(cat VERSION_NUMBER).dev$(date -u +%Y%m%d)" > VERSION_NUMBER - name: Download protoc run: | curl -sSL "https://github.com/protocolbuffers/protobuf/releases/download/v${env:PROTOBUF_VERSION}/protoc-${env:PROTOBUF_VERSION}-win64.zip" -o protoc.zip Expand-Archive protoc.zip -DestinationPath protoc-host - name: Download protobuf source run: | curl -sSL "https://github.com/protocolbuffers/protobuf/releases/download/v${env:PROTOBUF_VERSION}/protobuf-${env:PROTOBUF_VERSION}.tar.gz" -o protobuf.tar.gz tar -xf protobuf.tar.gz - name: Set paths shell: bash run: | echo "PROTOC_PATH=$(cygpath -m "${{ github.workspace }}/protoc-host/bin/protoc.exe")" >> $GITHUB_ENV echo "PROTOBUF_SRC=$(cygpath -m "${{ github.workspace }}/protobuf-${PROTOBUF_VERSION}")" >> $GITHUB_ENV - name: Set SOURCE_DATE_EPOCH for reproducible builds shell: bash run: echo "SOURCE_DATE_EPOCH=$(git log -1 --pretty=%ct)" >> $GITHUB_ENV - name: Build wheels uses: pypa/cibuildwheel@294735312765b09d24a2fbec22660ce817587d55 # v4.1.0 with: output-dir: dist/ only: ${{ matrix.build }} env: CIBW_ENVIRONMENT: >- CMAKE_ARGS=" -DFETCHCONTENT_SOURCE_DIR_PROTOBUF=${{ env.PROTOBUF_SRC }} -DONNX_CUSTOM_PROTOC_EXECUTABLE=${{ env.PROTOC_PATH }} -DONNX_HARDENING=ON -DONNX_USE_LITE_PROTO=ON -DONNX_WERROR=ON " - uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1 with: name: wheels-windows-${{ matrix.build }} path: dist/*.whl - name: Validate wheel run: | python -m pip install -q abi3audit check-wheel-contents Get-ChildItem -Path dist/*.whl | ForEach-Object { echo "Checking $($_.Name)" check-wheel-contents $_.FullName python -m abi3audit -v $_.FullName }