- Generate a GPG key pair and distribute the public key as per this blog post. Add the following entries to
~/.gradle/gradle.properties:- signing.keyId=«key id»
- signing.password=«key password»
- signing.secretKeyRingFile=«path to the secure gpg keyring (not public)»
- Create an account at https://central.sonatype.org/register/legacy/. Do not use Github or other social logins. Add your Sonatype credentials to
~/.gradle/gradle.properties:- sonatypeOssUsername=«Jira@Sontype username»
- sonatypeOssPassword=«Jira@Sontype password»
- Ensure that the revision you're about to promote has been successfully built on CI.
- Checkout the release branch for the version you're building (e.g.
git checkout GEB_8_0_X) - Update the version to the required one (usually just dropping -SNAPSHOT) in
buildSrc/src/main/groovy/geb.coordinates.gradlefile. - Change
{geb-version}expression used inHistorysection in140-project.adocto a fixed version (the one that you're about to release). - Commit with message "Version «number»" (don't push yet)
- Tag commit with name "v«number»" (still don't push yet)
- Run
./gradlew distSrc signDistSrc - If you haven't already, checkout or update a local copy of the groovy-dev subversion repository from https://dist.apache.org/repos/dist/release/groovy-dev to a local directory of your choice.
- For example,
svn checkout https://dist.apache.org/repos/dist/dev/groovy ~/groovy-devto check it out for the first time. - If you have already checked it out,
cdinto that directory and update it withsvn update.
- For example,
- Copy the artifacts from build/distributions to the appropriate subdirectory of your groovy-dev checkout (from the command above).
- For example:
cp build/distributions/apache-groovy-geb* ~/groovy-dev/geb/${GEB_VERSION}
- For example:
- Update the subversion repository with the appropriate subversion commands. For example:
cd ~/work/groovy-devsvn add geb/${GEB_VERSION}svn commit --username yourusernamegoeshere@apache.org -m "New Geb version ${GEB_VERSION} added to staging area"
git pushthe version branch and tag to GitHubread -s APACHE_PWand enter your password at the prompt- Run
./gradlew --no-build-cache publishJarsAndManual -x :integration:geb-gradle:publishPlugins -PapacheUser=jonnybot -PapachePassword="${APACHE_PW}" - Start the vote process on the groovy-dev mailing list. It will need at least 72 hours of remaining open and receive at least three affirmative votes from the Groovy PMC. See the Apache Voting process for more detail. Mention significant breaking changes if there are any.
- Assuming the vote passes (at least three +1 votes from the PMC), you can take the following steps to finalize the release.
- Email the vote thread to note that the vote has passed, with a final tally of the votes.
- Ask a member of the PMC to copy the artifacts from the staging directory in subversion to
groovy-release/geb/${VERSION}and commit them to subversion, as above. - Ask a member of the PMC to release the staging repository at https://repository.apache.org/#stagingRepositories
- Release the Gradle plugins with
./gradlew :integration:geb-gradle:publishPlugins
- Bump the version to a snapshot of the next planned version.
- Remove the oldest version from
manuals.include()call insite.gradleand append the newly released one. - Add a placeholder above the newest version in
Historysection in140-project.adocusing{geb-version}expression. - Commit with message 'Begin version «version»'
- Push (make sure you push the tag as well).
- Merge the release branch back into the master branch.
- Bump Geb versions in example projects:
- Update issues and milestones in GitHub tracker:
- Find all unresolved issues in the tracker that have the fix version set to the recently released version and bulk edit them to have the fix version set to the next version.
- Find the recently released milestone, change the version number if it's different from the one that was released and close it.
- Wait for the build of the next version to pass and the site including manual for the released version to be published.
- Send an email to the mailing list announcing the release. You can use this one as a template.