Spring Roo is released on a regular basis by the Roo project team. To perform releases and make the associated announcements you require appropriate permissions to many systems (as listed below). As such these notes are intended to assist developers with such permissions complete releases.
This project adheres to the Contributor Covenant code of conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to [email protected].
-
GPG setup (probably already setup if you followed notes above)
-
Git push privileges (if you can commit, you have this)
-
s3cmd setup (so "s3cmd ls" lists spring-roo-repository.springsource.org)
-
~/.m2/settings.xml for spring-roo-repository-release and spring-roo-repository-snapshot IDs with S3 username/password
-
@SpringRoo twitter account credentials
-
spring.io/projects/spring-roo editor privileges. Note you need editor privileges for source pages at https://github.com/spring-projects/spring-roo/tree/gh-pages
-
JIRA project administrator privileges
-
Close down your IDE before proceeding
-
Complete a thorough testing build and assembly ZIP:
cd $ROO_HOME git pull --rebase cd $ROO_HOME/runtime/deployment-support ./roo-deploy-dist.sh -c next -n 4.5.6.RELEASE (use -v for logging) cd $ROO_HOME mvn clean install cd $ROO_HOME/runtime/deployment-support ./roo-deploy-dist.sh -c assembly -tv (use -t for extra tests)
-
Verify the assembly ZIP ($ROO_HOME/target/roo-deploy/dist/*.zip) looks good:
-
Assembly ZIP unzips and is of a sensible size
-
Assembly ZIP runs correctly when installed on major platforms
-
Create Jira Task ticket "Release Spring Roo x.y.z.aaaaaa"
-
Run the "reference guide" command in the Roo shell, copy the resulting XML file into $ROO_HOME/deployment-support/src/site/docbook/reference, git commit and then git push (so the appendix is updated)
-
-
Tag the release (update the key ID, Jira ID and tag ID):
cd $ROO_HOME git tag -a -m "ROO-XXXX: Release Spring Roo 4.5.6.RELEASE" 4.5.6.RELEASE
-
Build JARs:
cd $ROO_HOME mvn clean package
-
Build the reference guide and deploy to the static staging server. You must be connected to the VPN for deployment to work. Note that https://projects.spring.io/spring-roo/ is updated bi-hourly from staging:
cd $ROO_HOME/deployment-support mvn clean site site:deploy
-
Create the final assembly ZIP (must happen after site built). We run full tests here, even ensuring all the Maven artifacts used by user projects are available. This takes a lot of time, but it is very helpful for our users:
cd $ROO_HOME/deployment-support ./roo-deploy-dist.sh -c assembly -Tv (-T means Maven tests with empty repo)
-
Repeat the verification tests on the assembly ZIP (see above). See note below if coordinating a release with the STS team.
Typically after this step you’ll send the tested assembly ZIP to the STS team for a concurrent release. Allow time for them to test the ZIP before starting step 8. This allows verification of STS embeddeding. Keep your ROO_HOME intact during this time, as you need the **/target and /.git directories for steps 8 and 9 to be completed.
-
If the verifications pass, push the Git tag up to the server:
cd $ROO_HOME git push --tags
-
Deploy the JARs to Maven Central
cd $ROO_HOME mvn clean deploy
-
Deploy assembly ZIP (binaries) to the production download servers (it takes up to an hour for these to be made fully downloadable):
cd $ROO_HOME/deployment-support ./roo-deploy-dist.sh -c deploy (use -dv for a dry-run and verbose logging)
-
Increment the version number to the next BUILD-SNAPSHOT number:
cd $ROO_HOME/deployment-support ./roo-deploy-dist.sh -c next -n 4.5.6.BUILD-SNAPSHOT (use -v for logging) cd $ROO_HOME mvn clean install eclipse:clean eclipse:eclipse cd ~/new-project-directory; roo-dev script clinic.roo; mvn test cd $ROO_HOME git diff git commit -a -m "ROO-XXXX: Update to next version" git push
-
Update the
Apache Felix
libraries and theSpring Roo
libraries included in the Spring Roo STS Plugin. These libraries are located in https://github.com/spring-projects/spring-ide/tree/master/plugins/org.springframework.ide.eclipse.roo.core/lib. After include the new libraries, send a pull-request with the applied changes.
Note
|
If any problems are detected before step 8, simply fix, push and start from step 1 again. You have not deployed anything substantial (ie only the reference guide) until step 8, so some corrections and re-tagging can be performed without any difficulty. The critical requirement is to defer step 8 (and beyond) until you’re sure everything is fine |
-
Visit https://projects.spring.io/spring-roo/, click "Download!"
-
Ensure it unzips OK and the sha1sum matches the downloaded .sha
-
rm -rf ~/.m2/repository/org/springframework/roo
-
Use "roo script clinic.roo" to build a new Roo project
-
Use "mvn clean test" to verify Roo’s annotation JAR downloads
Once the release is completed (ie all steps above) you’ll typically:
-
Mark the version as "released" in JIRA (Admin > JIRA Admin…)
-
Publish a https://spring.io/blog/ entry explaining what’s new
-
Update https://en.wikipedia.org/wiki/Spring_Roo with the version
-
Edit project page https://projects.spring.io/spring-roo/
-
Tweet from @SpringRoo (NB: ensure #SpringRoo is in the message)
-
Tweet from your personal account
-
Email dev list
-
Resolve the "release ticket" in JIRA