blob: 3a4d98c16cedd8e23db593e9c234330a34b2e293 [file] [log] [blame] [view]
Stella Laurenzoafd7cab2024-04-21 18:41:28 -07001# IREE Releasing
2
3This file documents the extant release process that IREE uses. This process
4and the automation (such as it is) has grown over many years and is due for
5a refresh. However, in the interests of documenting what exists, we attempt
6to do so here.
7
8## Nightly Core Releases
9
10IREE development is primarily driven via automated nightly release snapshots.
Scott Todd62efaee2024-05-31 13:33:55 -070011These are scheduled automatically each day by the
Stella Laurenzoafd7cab2024-04-21 18:41:28 -070012`schedule_candidate_release.yml` workflow, which selects a green commit from
13main (for non optional CI tasks), created a tag of the format
Marius Brehler6d55a112024-11-07 21:14:17 +010014`iree-{X.Y.ZrcYYYYMMDD}` and schedules automation to populate the release.
Stella Laurenzoafd7cab2024-04-21 18:41:28 -070015
16The `build_package.yml` workflow then runs jobs to do builds for all
Scott Todd62efaee2024-05-31 13:33:55 -070017platforms and packages, finally triggering the
Stella Laurenzoafd7cab2024-04-21 18:41:28 -070018`validate_and_publish_release.yml` workflow.
19
20Release artifacts are uploaded as a GitHub
21[pre release](https://github.com/iree-org/iree/releases) and an index of files
22is updated by periodic automation at https://iree.dev/pip-release-links.html.
23
Scott Todd62efaee2024-05-31 13:33:55 -070024Some debugging notes for this process are available here:
Scott Toddf190e072024-09-04 13:12:57 -070025https://iree.dev/developers/debugging/releases/.
Stella Laurenzoafd7cab2024-04-21 18:41:28 -070026
27### Nightly Release Packages
28
29A number of packages are produced automatically:
30
31* `iree-dist-*.tar.xz` (manylinux x86_64 and aarch64): Install image of the
32 binaries and development assets needed to use or depend on the C/C++ parts
33 of the project.
Marius Brehlerb1332182024-11-11 20:00:33 +010034* `iree-base-compiler`: Binary Python wheels
35* `iree-base-runtime`: Binary Python wheels
Stella Laurenzoafd7cab2024-04-21 18:41:28 -070036* `iree-tools-tf` and `iree-tools-tflite`: Pure Python wheels
37
38#### Linux Builds
39
Scott Toddecc95f72024-08-26 10:50:44 -070040Binary Linux packages are built using a custom `manylinux` based Docker image
41hosted here:
42https://github.com/iree-org/base-docker-images/pkgs/container/manylinux_x86_64
43using isolated self-hosted runners (only used for building checked in code) of
Stella Laurenzoafd7cab2024-04-21 18:41:28 -070044sufficient size for building large components and GitHub managed runners for
45smaller components. The project aims to target all non-EOL Python versions with
46Linux builds on x86_64 and aarch64.
47
48#### Windows Builds
49
Scott Toddecc95f72024-08-26 10:50:44 -070050Windows builds are built using GitHub-hosted runners. Due to the cost, the
51project aims to target the most recent version of Python only while building
52version N-1 for the first year of the lifecycle of the next version.
Stella Laurenzoafd7cab2024-04-21 18:41:28 -070053
Marius Brehlerb1332182024-11-11 20:00:33 +010054Only the Python `iree-base-compiler` and `iree-base-runtime` packages are
55built for Windows.
Stella Laurenzoafd7cab2024-04-21 18:41:28 -070056
Scott Toddecc95f72024-08-26 10:50:44 -070057The release is published even if the Windows build fails. When this happens, it
Stella Laurenzoafd7cab2024-04-21 18:41:28 -070058is fixed forward for the next snapshot.
59
60#### MacOS Builds
61
Scott Toddecc95f72024-08-26 10:50:44 -070062MacOS builds are performed using GitHub-hosted runners. Due to the cost, the
63project aims to target the most recent version of Python only while building
64version N-1 for the first year of the lifecycle of the next version.
Stella Laurenzoafd7cab2024-04-21 18:41:28 -070065
Marius Brehlerb1332182024-11-11 20:00:33 +010066Only the Python `iree-base-compiler` and `iree-base-runtime` packages are
67built for MacOS.
Stella Laurenzoafd7cab2024-04-21 18:41:28 -070068
69The release is published even if the MacOS build fails. When this happens, it
70is fixed forward for the next snapshot.
71
72## Retention
73
74The project will keep pre-release tagged releases on its releases page for a
75minimum of 6 months. Releases older than this can be purged.
76
77## Distribution to Package Registries
78
79The following package registry projects are managed as part of the IREE
80release process:
81
82### PyPI
83
Marius Brehlerb1332182024-11-11 20:00:33 +010084* https://pypi.org/project/iree-base-compiler/
85* https://pypi.org/project/iree-base-runtime/
Stella Laurenzoafd7cab2024-04-21 18:41:28 -070086* https://pypi.org/project/iree-turbine/
Stella Laurenzoafd7cab2024-04-21 18:41:28 -070087* https://pypi.org/project/iree-tools-tf/
88* https://pypi.org/project/iree-tools-tflite/
89
90Deprecated projects no longer updated:
91
Marius Brehlerb1332182024-11-11 20:00:33 +010092* https://pypi.org/project/iree-compiler/ (replaced by iree-base-compiler)
93* https://pypi.org/project/iree-runtime/ (replaced by iree-base-runtime)
Stella Laurenzoafd7cab2024-04-21 18:41:28 -070094* https://pypi.org/project/iree-runtime-instrumented/ (functionality is
95 included in the main iree-runtime package)
96* https://pypi.org/project/iree-tools-xla/ (functionality is no longer needed)
97
98
99## Build Promotion
100
101There are presently two build promotion processes documented:
102
Scott Todddb9d92b2024-11-07 07:50:04 -0800103* Releasing IREE core packages:
104 https://iree.dev/developers/general/release-management/
105* Releasing iree-turbine packages:
106 https://github.com/iree-org/iree-turbine/blob/main/docs/releasing.md