2022-04-22 06:53:00 +08:00
|
|
|
name: Release Build
|
2022-04-21 17:19:12 +08:00
|
|
|
|
|
|
|
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:
|
2022-04-22 01:55:40 +08:00
|
|
|
build_linux:
|
2022-04-21 17:19:12 +08:00
|
|
|
name: Manylinux Build
|
2023-02-10 23:16:37 +08:00
|
|
|
runs-on: a100
|
2023-03-06 14:13:33 +08:00
|
|
|
strategy:
|
|
|
|
matrix:
|
|
|
|
package: [ torch-mlir, torch-mlir-no-jit ]
|
|
|
|
py_version: [ cp38-cp38, cp310-cp310, cp311-cp311 ]
|
|
|
|
exclude:
|
|
|
|
- package: torch-mlir-no-jit
|
|
|
|
py_version: cp38-cp38
|
|
|
|
- package: torch-mlir-no-jit
|
|
|
|
py_version: cp310-cp310
|
|
|
|
|
2022-04-21 17:19:12 +08:00
|
|
|
steps:
|
2023-02-25 04:44:35 +08:00
|
|
|
|
|
|
|
- name: Prepare workspace
|
2023-02-16 01:17:12 +08:00
|
|
|
run: |
|
2023-02-25 04:44:35 +08:00
|
|
|
# Clear the workspace directory so that we don't run into errors about
|
|
|
|
# existing lock files.
|
2023-02-28 07:44:50 +08:00
|
|
|
sudo rm -rf $GITHUB_WORKSPACE/*
|
2023-02-25 04:44:35 +08:00
|
|
|
|
2022-04-21 17:19:12 +08:00
|
|
|
- name: Get torch-mlir
|
2023-01-07 10:41:43 +08:00
|
|
|
uses: actions/checkout@v3
|
2022-04-21 17:19:12 +08:00
|
|
|
with:
|
|
|
|
submodules: 'true'
|
|
|
|
- uses: ./.github/actions/setup-build
|
|
|
|
with:
|
ci: enable ccache on Windows (#1548)
This patch makes a few small, but key, changes to enable ccache on
Windows. First, it replaces the hendrikmuhs/ccache-action action with
command line invocations to the ccache binary, since the action has two
bugs, one of which causes CI to refer to different ccache artifacts
before versus after the build on Windows whereas the other bug can
sometimes cause the action to incorrectly infer that the cache is empty.
Second, this patch slightly alters the cache key, so that our old cache
artifacts, which have grown too big, are eventually discarded in favor
of the new, smaller cache artifacts. Along the way, this patch also
keeps the RollPyTorch's cache artifact separate from the regular build's
cache artifact so as to keep these artifacts small, and also because the
RollPyTorch action is off the critical path for most contributors.
Finally, this patch makes small changes to the CMake file so that on
Windows, the ccache binary is added as a prefix, as recommended on the
[ccache Wiki](https://github.com/ccache/ccache/wiki/MS-Visual-Studio).
2022-11-04 01:17:22 +08:00
|
|
|
cache-suffix: 'release'
|
2022-04-21 17:19:12 +08:00
|
|
|
- name: Build Python wheels and smoke test.
|
|
|
|
run: |
|
|
|
|
cd $GITHUB_WORKSPACE
|
|
|
|
python -m pip install wheel
|
2022-04-26 05:13:17 +08:00
|
|
|
TM_PACKAGE_VERSION=${{ github.event.inputs.python_package_version }}
|
2022-04-26 08:00:31 +08:00
|
|
|
printf "TORCH_MLIR_PYTHON_PACKAGE_VERSION=%s\n" $TM_PACKAGE_VERSION > ./torch_mlir_package_version
|
2023-03-06 14:13:33 +08:00
|
|
|
TM_PYTHON_VERSIONS=${{ matrix.py_version }} TM_PACKAGES=${{ matrix.package }} ./build_tools/python_deploy/build_linux_packages.sh
|
2022-04-22 10:57:27 +08:00
|
|
|
|
|
|
|
# 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 }}
|
2022-04-23 06:17:09 +08:00
|
|
|
assets_path: ./build_tools/python_deploy/wheelhouse/torch*.whl
|
2022-04-22 10:57:27 +08:00
|
|
|
# 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 }}
|
2022-12-07 23:01:55 +08:00
|
|
|
- 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 != ''
|
2023-03-06 02:23:43 +08:00
|
|
|
run: cp build_tools/python_deploy/wheelhouse/torch_mlir*.whl dist/
|
2022-12-07 23:01:55 +08:00
|
|
|
|
|
|
|
# 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
|
2022-04-21 17:19:12 +08:00
|
|
|
|
2022-04-22 01:55:40 +08:00
|
|
|
build_macos:
|
2022-04-22 01:47:28 +08:00
|
|
|
name: MacOS Build
|
CI script improvements (#1547)
* ci: update versions of external actions
Node.js 12 actions are deprecated and will eventually go away, so this
patch bumps the old actions to their latest versions that use Node.js
16.
* ci: replace deprecated action with bash commands
The llvm/actions/install-ninja action uses Node.js 12, which is
deprecated. Since that action is not updated to work with Node.js 16,
this patch replaces that action with equivalent bash commands to install
Ninja.
* ci: use smaller ccache artifacts to reduce evictions
Over time, our ccache sizes have grown quite large (some as large as
1.3 GB), which results in us routinely exceeding GitHub's limits, thus
triggering frequent cache evictions. As a result, cache downloads and
uploads take unnecessary long, in addition to fewer cache entries being
available.
Based on experiments on a clean cache state, it appears that we need
less than 300 MB of (compressed) ccache artifacts for each build type.
Anything larger than that will accrue changes from the past that aren't
needed.
To alleviate the cache burden, this patch sets the maximum ccache size
to be 300 MB. This change should not affect the success or failure of
our builds. I will monitor the build times to check whether this change
causes any performance degradation.
* ci: use consistent platform identifiers
Prior to this patch, some of our builds ran on `ubuntu-latest`, while
some others ran on `ubuntu-20.04` and others ran on `ubuntu-22.04`, with
similar situations for macOS and windows. This patch instead sets all
Linux builds to run on `ubuntu-latest`, all macOS builds to run on
`macos-latest`, and all Windows builds to run on `windows-latest`, to
make debugging future CI failures a little easier.
2022-11-03 10:37:01 +08:00
|
|
|
runs-on: macos-latest
|
2023-03-06 14:13:33 +08:00
|
|
|
strategy:
|
|
|
|
matrix:
|
|
|
|
package: [ torch-mlir, torch-mlir-no-jit ]
|
2022-04-22 01:47:28 +08:00
|
|
|
steps:
|
|
|
|
- name: Get torch-mlir
|
2023-01-07 10:41:43 +08:00
|
|
|
uses: actions/checkout@v3
|
2022-04-22 01:47:28 +08:00
|
|
|
with:
|
|
|
|
submodules: 'true'
|
|
|
|
- uses: ./.github/actions/setup-build
|
|
|
|
with:
|
ci: enable ccache on Windows (#1548)
This patch makes a few small, but key, changes to enable ccache on
Windows. First, it replaces the hendrikmuhs/ccache-action action with
command line invocations to the ccache binary, since the action has two
bugs, one of which causes CI to refer to different ccache artifacts
before versus after the build on Windows whereas the other bug can
sometimes cause the action to incorrectly infer that the cache is empty.
Second, this patch slightly alters the cache key, so that our old cache
artifacts, which have grown too big, are eventually discarded in favor
of the new, smaller cache artifacts. Along the way, this patch also
keeps the RollPyTorch's cache artifact separate from the regular build's
cache artifact so as to keep these artifacts small, and also because the
RollPyTorch action is off the critical path for most contributors.
Finally, this patch makes small changes to the CMake file so that on
Windows, the ccache binary is added as a prefix, as recommended on the
[ccache Wiki](https://github.com/ccache/ccache/wiki/MS-Visual-Studio).
2022-11-04 01:17:22 +08:00
|
|
|
cache-suffix: 'release'
|
2022-04-22 01:47:28 +08:00
|
|
|
- name: Build Python wheels and smoke test.
|
|
|
|
run: |
|
|
|
|
cd $GITHUB_WORKSPACE
|
|
|
|
python -m pip install wheel
|
2022-04-26 05:13:17 +08:00
|
|
|
TM_PACKAGE_VERSION=${{ github.event.inputs.python_package_version }}
|
2022-04-26 08:00:31 +08:00
|
|
|
printf "TORCH_MLIR_PYTHON_PACKAGE_VERSION=%s\n" $TM_PACKAGE_VERSION > ./torch_mlir_package_version
|
2022-04-22 02:06:02 +08:00
|
|
|
sudo ./build_tools/python_deploy/install_macos_deps.sh
|
2023-03-06 14:13:33 +08:00
|
|
|
packages=${{ matrix.package }} TORCH_MLIR_PYTHON_VERSIONS="3.11" ./build_tools/python_deploy/build_macos_packages.sh
|
2022-04-22 01:47:28 +08:00
|
|
|
|
2022-04-21 17:19:12 +08:00
|
|
|
# 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 }}
|
2022-04-23 06:17:09 +08:00
|
|
|
assets_path: ./build_tools/python_deploy/wheelhouse/torch*.whl
|
2022-04-21 17:19:12 +08:00
|
|
|
# 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 }}
|
2022-12-07 23:01:55 +08:00
|
|
|
- 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 != ''
|
2023-03-06 02:23:43 +08:00
|
|
|
run: cp build_tools/python_deploy/wheelhouse/torch_mlir*.whl dist/
|
2022-12-07 23:01:55 +08:00
|
|
|
|
|
|
|
# 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
|
|
|
|
|
2022-10-26 07:13:31 +08:00
|
|
|
build_windows:
|
|
|
|
name: Windows Build
|
|
|
|
runs-on: windows-latest
|
|
|
|
steps:
|
|
|
|
- name: Get torch-mlir
|
2023-01-07 10:41:43 +08:00
|
|
|
uses: actions/checkout@v3
|
2022-10-26 07:13:31 +08:00
|
|
|
with:
|
|
|
|
submodules: 'true'
|
|
|
|
- uses: ./.github/actions/setup-build
|
|
|
|
with:
|
ci: enable ccache on Windows (#1548)
This patch makes a few small, but key, changes to enable ccache on
Windows. First, it replaces the hendrikmuhs/ccache-action action with
command line invocations to the ccache binary, since the action has two
bugs, one of which causes CI to refer to different ccache artifacts
before versus after the build on Windows whereas the other bug can
sometimes cause the action to incorrectly infer that the cache is empty.
Second, this patch slightly alters the cache key, so that our old cache
artifacts, which have grown too big, are eventually discarded in favor
of the new, smaller cache artifacts. Along the way, this patch also
keeps the RollPyTorch's cache artifact separate from the regular build's
cache artifact so as to keep these artifacts small, and also because the
RollPyTorch action is off the critical path for most contributors.
Finally, this patch makes small changes to the CMake file so that on
Windows, the ccache binary is added as a prefix, as recommended on the
[ccache Wiki](https://github.com/ccache/ccache/wiki/MS-Visual-Studio).
2022-11-04 01:17:22 +08:00
|
|
|
cache-suffix: 'release'
|
2022-10-26 07:13:31 +08:00
|
|
|
- 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: |
|
2022-10-30 15:14:54 +08:00
|
|
|
$env:TORCH_MLIR_PYTHON_PACKAGE_VERSION = '${{ github.event.inputs.python_package_version }}'
|
2022-10-26 07:13:31 +08:00
|
|
|
./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 }}
|
2022-12-07 23:01:55 +08:00
|
|
|
- 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 != ''
|
2023-03-06 02:23:43 +08:00
|
|
|
run: cp ./wheelhouse/torch_mlir*.whl dist/
|
2022-12-07 23:01:55 +08:00
|
|
|
|
|
|
|
# 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
|
2022-09-30 03:49:41 +08:00
|
|
|
|
2022-10-06 01:25:25 +08:00
|
|
|
publish_releases:
|
2022-10-12 01:11:13 +08:00
|
|
|
runs-on: ubuntu-latest
|
2022-10-06 01:25:25 +08:00
|
|
|
needs:
|
|
|
|
- build_linux
|
|
|
|
- build_macos
|
2022-10-26 07:13:31 +08:00
|
|
|
- build_windows
|
2022-10-06 01:25:25 +08:00
|
|
|
|
|
|
|
# Publish even if one of the builds failed
|
|
|
|
if: ${{ always() }}
|
|
|
|
|
|
|
|
steps:
|
2022-09-30 03:49:41 +08:00
|
|
|
- name: Invoke Publish Releases Page
|
|
|
|
uses: benc-uk/workflow-dispatch@v1
|
|
|
|
with:
|
|
|
|
workflow: Publish releases page
|
|
|
|
token: ${{ secrets.WORKFLOW_INVOCATION_TOKEN }}
|
2022-12-07 23:01:55 +08:00
|
|
|
|
|
|
|
# Wheels must be published from a linux environment.
|
|
|
|
#
|
|
|
|
# See https://github.com/pypa/gh-action-pypi-publish/discussions/15
|
2022-12-14 00:45:41 +08:00
|
|
|
#
|
|
|
|
# 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:
|
2023-02-10 23:16:37 +08:00
|
|
|
# password: ${{ secrets.PYPI_API_TOKEN }}
|