Skip to content
This repository has been archived by the owner on Oct 28, 2022. It is now read-only.

Latest commit

 

History

History
151 lines (124 loc) · 6.1 KB

RELEASING.adoc

File metadata and controls

151 lines (124 loc) · 6.1 KB

Releasing Spring Roo

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.

Code of Conduct

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].

Before Releasing

  • 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

Release Process

  1. 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)
  2. 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)

  3. 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
  4. Build JARs:

     cd $ROO_HOME
     mvn clean package
  5. 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
  6. 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)
  7. 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.

  8. If the verifications pass, push the Git tag up to the server:

    cd $ROO_HOME
    git push --tags
  9. Deploy the JARs to Maven Central

    cd $ROO_HOME
    mvn clean deploy
  10. 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)
  11. 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
  12. Update the Apache Felix libraries and the Spring 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

Pre-notification testing

  • 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

Notifications and administration

Once the release is completed (ie all steps above) you’ll typically: