pingtimeout opened a new pull request, #2383: URL: https://github.com/apache/polaris/pull/2383
This PR is the next iteration of release automation. It builds on top of #2156 and reuses the common bash libraries that were defined. ### Differences from the initial PR * Release automation can only be triggered via Github Workflows. It is not possible to perform a semi-automated release from a committer/PMC computer. * It assumes that the following secrets are defined: * `DOCKERHUB_USERNAME` and `DOCKERHUB_TOKEN` - the credentials that can be used to push Docker images to Dockerhub * `GPG_PRIVATE_KEY` and `GPG_PASSPHRASE` - the ASCII armored private key that should be used to sign artifacts and its associated passphrase. The associated public key is assumed to be added to the [`KEYS`](https://downloads.apache.org/incubator/polaris/KEYS) file prior to being entered here. * `APACHE_USERNAME` and `APACHE_PASSWORD` - the credentials that can be used to connect to the ASF SVN server **as well as** to the ASF Nexus server. * All code that was used to perform release steps locally has been removed to keep the PR as small as possible. ### Similarities with the initial PR This PR builds on the same assumptions from the initial PR: * Release cannot be fully automated as of today as there are concerns that the release guide may not be comprehensive. Hence full automation is not desirable yet. * Release can only be semi-automated given that certain operations must be manually performed by the release manager. ### Remaining known-unknowns I can see that `apache/polaris` has [a `Nightly build` github workflow](https://github.com/apache/polaris/actions/runs/17040500750) that publishes snapshots every night to the Apache Nexus repository. In this workflow's definition, I can find references two Nexus credentials (`secrets.NEXUS_USER` and `secrets.NEXUS_PW`). However I cannot find any such secret defined on https://github.com/apache/polaris/settings/secrets/actions, nor am I sure whether those credentials can be used to interact with the ASF SVN server. Some clarification is needed to ensure proper credentials configuration. ### Example runs I have used this PR to simulate the release of Polaris 99.98.97-incubating-rc1 on my own fork. No upload was performed, this is just to prove out that things should be working as expected. You can find links to the following workflow executions: * This [Create Release Branch](https://github.com/pingtimeout/polaris/actions/runs/17047641880) workflow was used to cut the release branch with proper naming pattern: `release/99.98.97-incubating`. It was run with `dry-run=0` so that the release branch was actually created. * This [Update version and Changelog for Release Candidate](https://github.com/pingtimeout/polaris/actions/runs/17047650617) workflow was used to set the Polaris version to `99.98.97-incubating`, update the changelog and push the RC1 tag. It was also run with `dry-run=0` so that the modifications were actually performed (on my fork only) * From there, all subsequent workflows were run with `dry-run=1` so that no interaction with any ASF server happened. * This [Build and Publish Release Artifacts](https://github.com/pingtimeout/polaris/actions/runs/17047712709) workflow was run with `dry-run=1` to check the commands that would be executed, if an actual release was to be performed. We can see the binaries would be built, signed, checksum'ed and publish to ASF SVN and Nexus repositories. * This [Build and Publish Docker Images](https://github.com/pingtimeout/polaris/actions/runs/17047714039) workflow shows that we would execute the two `./gradlew` commands to build and publish the Docker images to docker hub, if `dry-run` was set to 0 * This [Build and Stage Helm Chart](https://github.com/pingtimeout/polaris/actions/runs/17047715403) workflow shows how Helm charts would be built, signed, checksum'ed and published to the ASF SVN repository * And finally, this [Publish Release After Vote Success](https://github.com/pingtimeout/polaris/actions/runs/17047717342) workflow shows how the artifacts would be moved from the dist dev space to the dist release space on ASF SVN, the final release tag would be created and the Nexus repository would be automatically released ### Next steps If this PR is approved, it should be possible to use the `Create Release Branch` and `Update Release Candidate` workflows to respectively cut the release branch and set the RC version as well as create the RC tag. ### Recommendations for reviewers * Please review the `releasey/release-process-flowchart.png` flowchart first. It shows how each workflow participates to the overall release process. It should substantially help make sense of the Github workflows for the rest of the review. -- 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: issues-unsubscr...@polaris.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org