| # Releasing |
| |
| IREE cuts automated releases via a workflow that is |
| [triggered daily](https://github.com/openxla/iree/blob/main/.github/workflows/schedule_candidate_release.yml). |
| The only constraint placed on the commit that is released is that it has passed |
| all CI checks. These are published on GitHub with the "pre-release" status. For |
| debugging this process, see the |
| [Debugging releases playbook](/docs/developers/debugging/releases.md). |
| |
| We periodically promote one of these candidates to a "stable" release by |
| removing the "pre-release" status. This makes it show up as a "latest" release |
| on GitHub. We also push the Python packages for this release to PyPI. |
| |
| The criteria for selecting this candidate is a bit more involved. |
| |
| |
| ## Coupling to the Google Integrate |
| |
| The Google team that manages these stable releases at the moment is also |
| responsible for integrating the IREE source code into Google's monorepo. For |
| convenience, we select a candidate pre-release, attempt to integrate it into |
| Google's monorepo and then promote it to stable if that was successful without |
| cherry picks that would affect the quality of the release (because they wouldn't |
| be present in the promoted version). |
| |
| This gives some additional validation to the release because it is stress-tested |
| running in a different environment and we not-infrequently catch some issues. We |
| do not currently have a way to add cherry-picks to a release, so if cherry-picks |
| for functional issues are required, we skip promoting the candidate to "stable". |
| |
| This coupling introduces some additional constraints to the process that are not |
| inherent. It would be perfectly fine to start promoting candidates based on some |
| other process, but since the same people are managing both, we've coupled these |
| so we don't have to keep track of as many different versions. |
| |
| As the project matures, we will likely remove this coupling. In particular we |
| will likely start integrating into Google's monorepo at a faster cadence than |
| the stable releases, so a 1:1 mapping there will not make sense. |
| |
| The PyPI password is also currently stored in Google's internal secret |
| management system, so for others to manage the deployment, we would need to |
| store it elsewhere with appropriate ACLs. |
| |
| At the point where others want to engage in the release process, we can easily |
| remove any coupling to any Google processes. |
| |
| |
| ## Picking a Candidate to Promote |
| |
| When selecting a candidate we use the following criteria: |
| |
| 1. ⪆4 days old so that problems with it may have been spotted. |
| 2. Contains no P0 regressions vs the previous stable release. |
| 3. LLVM submodule commit exists upstream (no cherry picks or patches) and |
| matches a commit already integrated into Google's monorepo |
| |
| The constraint on LLVM version is largely due to our current process for doing |
| so. We aim to lift this limitation and if the process were decoupled from the |
| Google integration (see |
| [Coupling to the Google Integrate](#coupling-to-the-google-integrate)), it would |
| go away anyway. |
| |
| There is currently no specific tracking for P0 regressions (process creation in |
| progress). When you've identified a potential candidate, email the iree-discuss |
| list with the proposal and solicit feedback. People may point out known |
| regressions or request that some feature make the cut. |
| |
| |
| ## Releasing |
| |
| 1. (Googlers only) Integrate into Google's monorepo, following |
| http://go/iree-g3-integrate-playbook. If OSS-relevant cherry-picks were |
| required to complete this, STOP: do not promote the candidate. |
| |
| 2. (Googlers only) Push to PyPI using |
| [pypi_deploy.sh](/build_tools/python_deploy/pypi_deploy.sh) and the |
| password stored at http://go/iree-pypi-password. |
| |
| 3. Open the release on GitHub. Rename the release from “candidate" to “stable", |
| uncheck the option for “pre-release”, and check the option for "latest". |
| |
|  |
| |
|  |