blob: 3a4d98c16cedd8e23db593e9c234330a34b2e293 [file] [log] [blame] [view]
# IREE Releasing
This file documents the extant release process that IREE uses. This process
and the automation (such as it is) has grown over many years and is due for
a refresh. However, in the interests of documenting what exists, we attempt
to do so here.
## Nightly Core Releases
IREE development is primarily driven via automated nightly release snapshots.
These are scheduled automatically each day by the
`schedule_candidate_release.yml` workflow, which selects a green commit from
main (for non optional CI tasks), created a tag of the format
`iree-{X.Y.ZrcYYYYMMDD}` and schedules automation to populate the release.
The `build_package.yml` workflow then runs jobs to do builds for all
platforms and packages, finally triggering the
`validate_and_publish_release.yml` workflow.
Release artifacts are uploaded as a GitHub
[pre release](https://github.com/iree-org/iree/releases) and an index of files
is updated by periodic automation at https://iree.dev/pip-release-links.html.
Some debugging notes for this process are available here:
https://iree.dev/developers/debugging/releases/.
### Nightly Release Packages
A number of packages are produced automatically:
* `iree-dist-*.tar.xz` (manylinux x86_64 and aarch64): Install image of the
binaries and development assets needed to use or depend on the C/C++ parts
of the project.
* `iree-base-compiler`: Binary Python wheels
* `iree-base-runtime`: Binary Python wheels
* `iree-tools-tf` and `iree-tools-tflite`: Pure Python wheels
#### Linux Builds
Binary Linux packages are built using a custom `manylinux` based Docker image
hosted here:
https://github.com/iree-org/base-docker-images/pkgs/container/manylinux_x86_64
using isolated self-hosted runners (only used for building checked in code) of
sufficient size for building large components and GitHub managed runners for
smaller components. The project aims to target all non-EOL Python versions with
Linux builds on x86_64 and aarch64.
#### Windows Builds
Windows builds are built using GitHub-hosted runners. Due to the cost, the
project aims to target the most recent version of Python only while building
version N-1 for the first year of the lifecycle of the next version.
Only the Python `iree-base-compiler` and `iree-base-runtime` packages are
built for Windows.
The release is published even if the Windows build fails. When this happens, it
is fixed forward for the next snapshot.
#### MacOS Builds
MacOS builds are performed using GitHub-hosted runners. Due to the cost, the
project aims to target the most recent version of Python only while building
version N-1 for the first year of the lifecycle of the next version.
Only the Python `iree-base-compiler` and `iree-base-runtime` packages are
built for MacOS.
The release is published even if the MacOS build fails. When this happens, it
is fixed forward for the next snapshot.
## Retention
The project will keep pre-release tagged releases on its releases page for a
minimum of 6 months. Releases older than this can be purged.
## Distribution to Package Registries
The following package registry projects are managed as part of the IREE
release process:
### PyPI
* https://pypi.org/project/iree-base-compiler/
* https://pypi.org/project/iree-base-runtime/
* https://pypi.org/project/iree-turbine/
* https://pypi.org/project/iree-tools-tf/
* https://pypi.org/project/iree-tools-tflite/
Deprecated projects no longer updated:
* https://pypi.org/project/iree-compiler/ (replaced by iree-base-compiler)
* https://pypi.org/project/iree-runtime/ (replaced by iree-base-runtime)
* https://pypi.org/project/iree-runtime-instrumented/ (functionality is
included in the main iree-runtime package)
* https://pypi.org/project/iree-tools-xla/ (functionality is no longer needed)
## Build Promotion
There are presently two build promotion processes documented:
* Releasing IREE core packages:
https://iree.dev/developers/general/release-management/
* Releasing iree-turbine packages:
https://github.com/iree-org/iree-turbine/blob/main/docs/releasing.md