From 3c07dceee6b135dd9974242e675bf8a81dc04ce4 Mon Sep 17 00:00:00 2001 From: Marius Brehler Date: Wed, 11 Dec 2024 22:47:11 +0100 Subject: [PATCH] Enable creating patch releases (#19467) * Allow to parameterize the build type * Add documentation on how to create a patch release Patch releases are _stable_ releases which can be build via the _Oneshot candidate release_ workflow. If the build version to produce is not `rc`, no `rcYYYYMMDD` suffix is appended to the version number. Therefore, the version string printed via `iree-compiler --version` for a `stable` release differs from a release candidate which is later promoted to a stable release. Co-authored-by: Scott Todd --- .../workflows/oneshot_candidate_release.yml | 28 +++++++++++++-- .../developers/general/one-shot-patch.png | Bin 0 -> 26447 bytes .../developers/general/release-management.md | 34 ++++++++++++++++++ 3 files changed, 59 insertions(+), 3 deletions(-) create mode 100644 docs/website/docs/developers/general/one-shot-patch.png diff --git a/.github/workflows/oneshot_candidate_release.yml b/.github/workflows/oneshot_candidate_release.yml index 94032cf5bd96..ee0f305c9416 100644 --- a/.github/workflows/oneshot_candidate_release.yml +++ b/.github/workflows/oneshot_candidate_release.yml @@ -2,6 +2,11 @@ name: Oneshot candidate release on: workflow_dispatch: + inputs: + build_type: + description: The type of build version to produce ("stable", "rc", or "dev") + type: string + default: "rc" jobs: tag_release: @@ -13,12 +18,29 @@ jobs: with: token: ${{ secrets.WRITE_ACCESS_TOKEN }} + # Compute version suffix based on inputs (default to 'rc') + - name: Compute stable version suffix + if: ${{ inputs.build_type == 'stable' }} + run: | + version_suffix="" + echo "version_suffix=${version_suffix}" >> $GITHUB_ENV + - name: Compute rc version suffix + if: ${{ inputs.build_type == 'rc' || inputs.build_type == '' }} + run: | + version_suffix="$(printf 'rc%(%Y%m%d)T')" + echo "version_suffix=${version_suffix}" >> $GITHUB_ENV + - name: Compute dev version suffix + if: ${{ inputs.build_type == 'dev' }} + run: | + version_suffix=".dev0+${{ github.sha }}" + echo "version_suffix=${version_suffix}" >> $GITHUB_ENV + - name: Compute version run: | git fetch --depth=1 origin +refs/tags/*:refs/tags/* # common version + tag - package_version="$(python3 build_tools/python_deploy/compute_common_version.py -rc)" + package_version="$(python3 build_tools/python_deploy/compute_common_version.py --version-suffix=${version_suffix})" tag_name="iree-${package_version}" echo "package_version=${package_version}" >> $GITHUB_ENV echo "tag_name=${tag_name}" >> $GITHUB_ENV @@ -28,11 +50,11 @@ jobs: echo "legacy_package_version=${legacy_package_version}" >> $GITHUB_ENV # iree-base-compiler version - compiler_package_version="$(python3 build_tools/python_deploy/compute_local_version.py compiler -rc)" + compiler_package_version="$(python3 build_tools/python_deploy/compute_local_version.py compiler --version-suffix=${version_suffix})" echo "compiler_package_version=${compiler_package_version}" >> $GITHUB_ENV # iree-base-runtime version - runtime_package_version="$(python3 build_tools/python_deploy/compute_local_version.py runtime -rc)" + runtime_package_version="$(python3 build_tools/python_deploy/compute_local_version.py runtime --version-suffix=${version_suffix})" echo "runtime_package_version=${runtime_package_version}" >> $GITHUB_ENV - name: Updating candidate tag diff --git a/docs/website/docs/developers/general/one-shot-patch.png b/docs/website/docs/developers/general/one-shot-patch.png new file mode 100644 index 0000000000000000000000000000000000000000..33793868397eab08ba3ebab5ec54bfbec98cc7e6 GIT binary patch literal 26447 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 JixghI|1U(HM$-TQ literal 0 HcmV?d00001 diff --git a/docs/website/docs/developers/general/release-management.md b/docs/website/docs/developers/general/release-management.md index 89a3710e8a25..e568ad903042 100644 --- a/docs/website/docs/developers/general/release-management.md +++ b/docs/website/docs/developers/general/release-management.md @@ -81,3 +81,37 @@ request that some feature make the cut. 3. Complete any remaining checkbox items on the release tracking issue then close it and open a new one for the next release. + +## Creating a patch release + +1. Create a new branch. + + Checkout the corresponding stable release and create a branch for the patch release: + + ```shell + git checkout iree-3.0.0 + git checkout -b iree-3.0.1 + ``` + +2. Apply and commit the patches. + +3. Set the patch level: + + * Adjust `compiler/version.json` if patches are applied to the compiler. + + * Adjust `runtime/version.json` if patches are applied to the runtime. + +4. Push all changes to the new branch. + +5. Trigger the + [_Oneshot candidate release_ workflow](https://github.com/iree-org/iree/actions/workflows/oneshot_candidate_release.yml) + to create a release. + + * Select to run the workflow from the patch branch. + + * Set the type of build version to produce to "stable". + + ![one_shot_patch](./one-shot-patch.png) + +6. Follow the documentation above to promote to stable. + The step to create a new tag can be skipped.