This page describes the steps that a Cayenne Release Manager needs to perform to prepare a release. The specifics of Cayenne release process is that we are publishing both downloadable assemblies and Maven artifacts, so we have to build and publish things twice. Both forms of Cayenne release are also available for evaluation during the vote.
{{% gap %}}
{{% gap %}}
UPGRADE-NOTES.txt
if there is anything to add there.RELEASE-NOTES.txt
with actual release name and current date as a release date.cd cayenne ./rat.sh ~/Desktop/apache-rat-0.14-SNAPSHOT.jar > report.txtAs an alternative you could use Apache RAT maven plugin already configured in the Cayenne:
mvn apache-rat:check
{{% gap %}}
Create a Git tag and Create Maven Staging Repository:
cd cayenne mvn release:clean mvn release:prepare -DpreparationGoals="clean install" -DautoVersionSubmodules=true mvn release:perform -P gpg [-Dgpg.keyname=B8AF90BF]
Close the staging repo. Login to https://repository.apache.org/ with Apache ID/password, go to “Staging Repositories” page. Select a staging repository that was just created during “mvn release:perform”, click “Close”. Take a note of the freshly created staging repository URL. It will be used by the people voting on Cayenne. It may look like this: https://repository.apache.org/content/repositories/orgapachecayenne-052/
{{% gap %}}
Switch to the release tag created above.
git clone https://github.com/apache/cayenne.git --branch "XXX" --depth 1
Build source package (it will be the basis for the binary packages built in the next steps) :
mvn clean install -Passembly,src
Build binary assemblies. Release manager may skip running unit tests from here, as shown below, although release evaluators should use the src assembly for unit testing and other kinds of testing. For further details on a general Cayenne build process check this page.
Take “assembly/target/cayenne-XXX-src.tar.gz”, unpack it somewhere, and perform binary builds from the unpacked directory (NOT FROM GIT CHECKOUT).
Per Apache release guidelines there shouldn't be any binaries in a release, so you need manually copy Gradle wrapper. Just copy cayenne-gradle-plugin/gradle folder to the corresponding folder in unpacked sources.
cp -r ./cayenne-gradle-plugin/gradle ./assembly/target/cayenne-XXX-src/cayenne-gradle-plugin/
Build binary artifacts
mvn clean package -Passembly,generic -DskipTests # You will need to do this on OS X mvn clean package -Passembly,mac -DskipTests # You will need to do this on Windows mvn clean package -Passembly,windows -DskipTests
Signing assemblies
You can find additional information in official Apache Release Distribution policy and on this page. Release manager key must be in the project KEYS file. Signing is a manual procedure not included in the Ant or Maven script. Here is how it might work (“-u” option can be omitted if you have only one GPG key):
gpg -a -b -u B8AF90BF cayenne-X.X.tar.gz gpg --print-md SHA512 cayenne-X.X.tar.gz > cayenne-X.X.tar.gz.sha512
Assemblies, signature and checksum files are committed to the special SVN repo used for staging development releases: https://dist.apache.org/repos/dist/dev/cayenne/. Use a separate folder for each release. For more info on this repository check the infrastructure docs.
{{% gap %}}
{{% gap %}}
Publish Maven artifacts. Go back to https://repository.apache.org/, select the staging repo and click “Release”.
Publish downloadable assemblies by moving them to the release repo:
svn mv https://dist.apache.org/repos/dist/dev/cayenne/X.X \ https://dist.apache.org/repos/dist/release/cayenne/
{{% gap %}}
Delete a previous version of Cayenne release of the same branch from the dist server. It should be already [archived by Apache] (http://www.apache.org/dev/release.html#when-to-archive). Do this with an svn command like this:
svn rm https://dist.apache.org/repos/dist/release/cayenne/Y.Y
Tell Jira that the release has been released. Ensure there is another milestone or release target already created for further work, but this was probably already done when a branch was created in preparation for release.
If the release is significant, consider press releases to relevant news sources
Review the main website pages (front page and why-cayenne especially) to add any new features
Add new cayenne version and a news item to the Cayenne web site (see [CMS Guide]({{< ref “cms-guide.md#content-modifications” >}}))
Send an email to the Cayenne user and developer lists
Send a notification email to announce(at)apache.org
{{% gap %}}