pingtimeout commented on code in PR #3273: URL: https://github.com/apache/polaris/pull/3273#discussion_r2620445633
########## site/content/community/release-guides/semi-automated-release-guide.md: ########## @@ -0,0 +1,336 @@ +--- +# +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# +linkTitle: Semi-Automated Release Guide +title: Semi-Automated Release Guide +type: docs +weight: 100 +params: + show_page_toc: true +--- + +**Audience**: Release Managers + +## Overview +The steps performed in the [Manual Release Guide](../manual-release-guide/) have been automated to a large extent. This semi-automated release guide outlines the workflows that can be used to perform a release with little manual intervention. + +## Dry-run mode +Each of the Github Workflows that have been develop comes with a `dry-run` mode. It is enabled ticking the `Dry run mode` checkbox before starting the workflow. When enabled, the workflow will not perform any destructive action (e.g. tag creation, branch deletion, etc.) but instead print out the commands that would have been executed. + +Dry-run mode is enabled by default. So ensure that you uncheck the `Dry run mode` checkbox before starting the workflow. + +## Prerequisites +### Announce the intent to cut a release +Polaris follows a schedule-driven release model. The first thing to do is to send an e-mail to the [email protected] mailing list to announce the intent to cut a release, approximately a week before the scheduled release date. The e-mail should include the following information: +* The version number of the release (e.g. 1.4.0) +* The tentative date of the release (e.g. 2026-01-19) + +Note that the tentative date is only a suggestion. The actual date of the release will be determined by taking community feedback into account. For instance, if specific pull requests are about to be merged, the release may be delayed by a couple of days to include them. + +``` +[DISCUSS] Apache Polaris x.y.z +``` + +``` +Hello everyone, + +The purpose of this e-mail is to collect feedback on the upcoming Apache +Polaris x.y.z release. The tentative release date is YYYY-MM-DD. Please let +me know if you have any concerns or comments, or if there are some specific +pull requests that you would like to see included in the release. + +Thanks, +``` + +### Ensure that the changelog is up to date +As part of Polaris development process, for each major change in the codebase, a new entry should be added to the `CHANGELOG.md` file. This is usually verified during pull request reviews. But some changes may have been missed. So before cutting a release, it is important to ensure that the changelog is up to date. + +## Release branch creation workflow +The first Github workflow to run is [`Release - 1 - Create Release Branch`](https://github.com/apache/polaris/actions/workflows/release-1-create-release-branch.yml). This workflow will create a release branch from the main branch. The release branch is named after the release number and does not include the patch version. For instance, the release branch for version 1.3.0 is named `release/1.3.x`. It should **only be executed only once** per `major.minor` version. + + + + +Once the workflow has run, the run details page contains a recap of the main information, including whether dry-run mode was enabled, the release branch name and the Git SHA of the commit that was used to create the release branch. + + + +## RC0 only - Changelog and version update workflow +The second Github workflow to run is [`Release - 2 - Update version and Changelog for Release Candidate`](https://github.com/apache/polaris/actions/workflows/release-2-update-release-candidate.yml). This workflow will: +* Verify that all Github checks are green for the release branch. +* Increase the patch version number by 1 if the workflow has already been run for that `major.minor` version. +* Update the project version files with the final version number +* Commit the changes to the release branch +* Create the `major.minor.patch-rc0` tag + +This workflow can only be run from a `release/x.y.z` branch. Selecting any other branch in the Github Actions UI will result in a failure. + +Note that the tag that is created is for RC0. This workflow should **only be executed only once** per `major.minor.patch` version. + + + +Like for the other workflow runs, the run details page contains a recap of the main information, with all the steps that were executed. + + + +## RC≥1 only - Update release branch and create tag +If the first release candidate is rejected, additional code changes may be needed. These steps have not been automated yet. + +Each code change that should be added to the release branch must be cherry-picked from the main branch and proposed in a dedicated pull request. The pull request must be reviewed and approved before being merged. This step is mandatory so that Github runs the CI checks. The subsequent workflows will verify that those checks passed. + +Once the pull requests have been merged, create a new `apache-polaris-[major].[minor].[patch]-incubating-rc[N]` tag. The commands below assume that the `apache/polaris` Git repository corresponds to the `apache` remote. + +```bash +git tag -a apache-polaris-[major].[minor].[patch]-incubating-rc[N] -m "Apache Polaris [major].[minor].[patch] (incubating) release candidate [N]" Review Comment: Good point, should be good now -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
