name: Release Build on: workflow_dispatch: inputs: release_id: description: 'Release id to upload artifacts to' default: '' python_package_version: description: 'Version to use for creating the Python package' default: '' jobs: build_linux: name: Manylinux Build runs-on: ubuntu-latest steps: - name: Get torch-mlir uses: actions/checkout@v2 with: submodules: 'true' - uses: ./.github/actions/setup-build with: cache-suffix: 'release' - name: Build Python wheels and smoke test. run: | cd $GITHUB_WORKSPACE python -m pip install wheel TM_PACKAGE_VERSION=${{ github.event.inputs.python_package_version }} printf "TORCH_MLIR_PYTHON_PACKAGE_VERSION=%s\n" $TM_PACKAGE_VERSION > ./torch_mlir_package_version ./build_tools/python_deploy/build_linux_packages.sh # If we were given a release_id, then upload the package we just built # to the github releases page. - name: Upload Release Assets (if requested) if: github.event.inputs.release_id != '' id: upload-release-assets uses: dwenegar/upload-release-assets@v1 env: GITHUB_TOKEN: ${{ secrets.WORKFLOW_INVOCATION_TOKEN }} with: release_id: ${{ github.event.inputs.release_id }} assets_path: ./build_tools/python_deploy/wheelhouse/torch*.whl # Publishing is necessary to make the release visible to `pip` # on the github releases page. - name: Publish Release (if requested) if: github.event.inputs.release_id != '' id: publish_release uses: eregon/publish-release@v1 env: GITHUB_TOKEN: ${{ secrets.WORKFLOW_INVOCATION_TOKEN }} with: release_id: ${{ github.event.inputs.release_id }} - name: Create dist directory if: github.event.inputs.release_id != '' run: mkdir dist - name: Copy releases to publish to dist directory if: github.event.inputs.release_id != '' run: cp build_tools/python_deploy/wheelhouse/torch_mlir-*.whl dist/ # Wheels must be published from a linux environment. # # See https://github.com/pypa/gh-action-pypi-publish/discussions/15 - name: Store the binary wheel uses: actions/upload-artifact@v2 with: name: wheels path: dist build_macos: name: MacOS Build runs-on: macos-latest steps: - name: Get torch-mlir uses: actions/checkout@v2 with: submodules: 'true' - uses: ./.github/actions/setup-build with: cache-suffix: 'release' - name: Build Python wheels and smoke test. run: | cd $GITHUB_WORKSPACE python -m pip install wheel TM_PACKAGE_VERSION=${{ github.event.inputs.python_package_version }} printf "TORCH_MLIR_PYTHON_PACKAGE_VERSION=%s\n" $TM_PACKAGE_VERSION > ./torch_mlir_package_version sudo ./build_tools/python_deploy/install_macos_deps.sh TORCH_MLIR_PYTHON_VERSIONS="3.10" ./build_tools/python_deploy/build_macos_packages.sh # If we were given a release_id, then upload the package we just built # to the github releases page. - name: Upload Release Assets (if requested) if: github.event.inputs.release_id != '' id: upload-release-assets uses: dwenegar/upload-release-assets@v1 env: GITHUB_TOKEN: ${{ secrets.WORKFLOW_INVOCATION_TOKEN }} with: release_id: ${{ github.event.inputs.release_id }} assets_path: ./build_tools/python_deploy/wheelhouse/torch*.whl # Publishing is necessary to make the release visible to `pip` # on the github releases page. - name: Publish Release (if requested) if: github.event.inputs.release_id != '' id: publish_release uses: eregon/publish-release@v1 env: GITHUB_TOKEN: ${{ secrets.WORKFLOW_INVOCATION_TOKEN }} with: release_id: ${{ github.event.inputs.release_id }} - name: Create dist directory if: github.event.inputs.release_id != '' run: mkdir dist - name: Copy releases to publish to dist directory if: github.event.inputs.release_id != '' run: cp build_tools/python_deploy/wheelhouse/torch_mlir-*.whl dist/ # Wheels must be published from a linux environment. # # See https://github.com/pypa/gh-action-pypi-publish/discussions/15 - name: Store the binary wheel uses: actions/upload-artifact@v2 with: name: wheels path: dist build_windows: name: Windows Build runs-on: windows-latest steps: - name: Get torch-mlir uses: actions/checkout@v2 with: submodules: 'true' - uses: ./.github/actions/setup-build with: cache-suffix: 'release' - name: Set up Visual Studio shell uses: egor-tensin/vs-shell@v2 with: arch: x64 - name: Build Python wheels and smoke test. shell: pwsh run: | $env:TORCH_MLIR_PYTHON_PACKAGE_VERSION = '${{ github.event.inputs.python_package_version }}' ./build_tools/python_deploy/build_windows.ps1 # If we were given a release_id, then upload the package we just built # to the github releases page. - name: Upload Release Assets (if requested) if: github.event.inputs.release_id != '' id: upload-release-assets uses: dwenegar/upload-release-assets@v1 env: GITHUB_TOKEN: ${{ secrets.WORKFLOW_INVOCATION_TOKEN }} with: release_id: ${{ github.event.inputs.release_id }} assets_path: ./wheelhouse/torch*.whl # Publishing is necessary to make the release visible to `pip` # on the github releases page. - name: Publish Release (if requested) if: github.event.inputs.release_id != '' id: publish_release uses: eregon/publish-release@v1 env: GITHUB_TOKEN: ${{ secrets.WORKFLOW_INVOCATION_TOKEN }} with: release_id: ${{ github.event.inputs.release_id }} - name: Create dist directory if: github.event.inputs.release_id != '' run: mkdir dist continue-on-error: true - name: Copy releases to publish to dist directory if: github.event.inputs.release_id != '' run: cp ./wheelhouse/torch_mlir-*.whl dist/ # Wheels must be published from a linux environment. # # See https://github.com/pypa/gh-action-pypi-publish/discussions/15 - name: Store the binary wheel uses: actions/upload-artifact@v2 with: name: wheels path: dist publish_releases: runs-on: ubuntu-latest needs: - build_linux - build_macos - build_windows # Publish even if one of the builds failed if: ${{ always() }} steps: - name: Invoke Publish Releases Page uses: benc-uk/workflow-dispatch@v1 with: workflow: Publish releases page token: ${{ secrets.WORKFLOW_INVOCATION_TOKEN }} # Wheels must be published from a linux environment. # # See https://github.com/pypa/gh-action-pypi-publish/discussions/15 # # We're temporarily disabling pypi publishing until we can fix audit wheel # ODR torch issues. See https://github.com/llvm/torch-mlir/issues/1709 # #- name: Download wheels for publishing to PyPI # uses: actions/download-artifact@v3 # with: # name: wheels # path: dist #- name: Publish to PyPI # if: github.event.inputs.release_id != '' # uses: pypa/gh-action-pypi-publish@v1.5.1 # with: # password: ${{ secrets.PYPI_API_TOKEN }}