...
- Check for the most recent develop SHA that passes all the tests and contains all the features / bug fixes that need to go into the release at https://concourse.apachegeode-ci.info/beta/teams/main/pipelines/develop/jobs/UpdatePassingRef.
- Ensure in JIRA, that all tickets with {version} as the fix version are either closed or resolved. If not inform the the assignees to either resolve/close it or if not fixed then increment the fix version in the ticket
Create the release branch.
Code Block language bash git checkout develop git checkout -b release/{version}
Update the version number in
gradle.properties
(and remove-SNAPSHOT
)Update the version number in
ci/pipelines/geode-build/jinja.template.yml
Change
SNAPSHOT
to""
forSEMVER_PRERELEASE_TOKEN
inci/pipelines/meta/meta.properties
Update the version number in all the expected pom files use these steps:
Code Block language bash ./gradlew clean ./gradlew build -Dskip.tests=true #note: ok if build fails expected pom test ./gradlew updateExpectedPom
Review the benchmark baseline. It should be the more recent of {previous release} or
develop/highwater
.branch
should stay asdevelop
even for release branches. Note: as the release progresses, consider creating and using a dedicatedversion/highwater
tag on the release branch.See ci/pipelines/shared/jinja.variables.yml around line 19:
Code Block language yml benchmarks: baseline_branch: develop/highwater baseline_version: '' branch: develop
Publish the release branch to origin
Code Block language bash git add . git commit -a -m "Upgraded version number for releasing {version}" pitgit push origin HEAD
Now checkout the repo for geode-examples (apache/geode-examples.git) and create a release branch.
Code Block language bash git clone git@github.com:apache/geode-examples.git git checkout develop origin/develop git checkout -b release/{version}
Update the version number in gradle.properties of geode-examples and remove -SNAPSHOT
No Format version = 1.7.0 geodeVersion = 1.7.0
- Commit the version changes and push the release branch of geode-examples
Code Block language bash git add -p git commit git push origin HEAD
- Checkout the repo for geode-native (apache/geode-native.git) and create a release branch
Code Block language bash git checkout develop git checkout -b release/{version} git push origin HEAD
Send email to dev@geode.apache.org informing the creation of the release branch and requesting feedback.
No Format Hello Geode Dev Community, We have created a new release branch for Apache Geode {version} - "release/{version}" Please do review and raise any concern with the release branch. If no concerns are raised, we will start with the voting for the release candidate soon. Regards {Release Manager}
Create the concourse release pipeline.
Code Block language bash fly -t concourse.apachegeode-ci.info login --concourse-url https://concourse.apachegeode-ci.info/ cd ci/pipelines/meta ./deploy_meta.sh
- Monitor the new release pipeline and resolve any issues that may arise.
...
If three +1's are received and no minus 1's, the release manage should confirm that the ticket is already in a resolved state on develop, confirm the exact commits on develop and , cherry pick to the release branch using git cherry-pick -x <SHA>
, do a build to ensure the cherry-pick was clean (if not, ask that a PR be submitted against the release branch), then finally send a notification to the thread:
...
If doing RC2 or later, revert the last temporary commit from geode-examples/gradle.properties and push
Code Block language bash cd geode-examples git pull git log -1 gradle.properties git revert <SHA from above> git push
From a checkout of latest geode develop, run the prepare_rc.sh script (a build dir will be created in the current directory, so you may not want to be inside geode when you run it or IntelliJ will freak out). This script assumes there is a release/X.Y.Z branch pushed to all of the geode repositories (geode, geode-native, geode-examples). It will checkout the tip of that branch for all repos, build them, and copy the artifacts to the build/dist directory. It will also tag the RC in each checkout. Run this command on a machine using with a GUI as you will be prompted to enter PGP passphrase several times and finally your ASF LDAP password (Apache password). Pay attention as the prompts look very similar.
Code Block remotes/origin/release/1.9.0 cd geode/dev-tools/release ./prepare_rc.sh -v version_with_rc -k your_8_digit_key_id -a your_apache_ldap_username
The instructions "next steps" printed out at the end of the prepare_rc script will walk you through the remaining steps to stage to nexus (pictured below), publish the release, and send an announcement email.
...
cd to the release branch for apache geode and tag the commit with the final version
Code Block git tag -s rel/v{version} -m "Apache Geode v1.0.0 release" rel/v{version}.RC{latest_rc} git push origin rel/v{version}
cd to the release branch for geode-examples and tag the commit with the final version, using same commands as above
cd to the release branch for geode-native and tag the commit with the final version, using same commands as above
Use svn to move the distributions from dev to release. Use the folders created in step 1 of "Creating the release candidate" section.
Code Block # in the directory created in step 1 of "Creating the release candidate" section. cd dist svn mv dev/geode/{version}.RC#/ release/geode/{version} svn commit -m "Releasing Apache Geode {version} distribution"
Update the keys in dist/release.
Code Block # in the directory created in step 1 of "Creating the release candidate" section. cp dev/geode/KEYS release/geode/KEYS svn commit -m "Updating Apache Geode KEYS file"
- Promote the Nexus staging repo → login to repository.apache.org→ Select Staging repositories → Find "orgapachegeode-####" → Click on the Release Button on the toolbar.
Revert the temporary commit from geode-examples/gradle.properties and push
Code Block language bash cd geode-examples git pull git log -1 gradle.properties git revert <SHA from above> git push
Apache Geode JIRA resolved → closed
...