Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Minor updates for 5.x releases

...

For DSpace 6.x, you can use Java 8.
For DSpace 5.x, you should be using Java 7 . Unfortunately and running Maven with "-Dhttps.protocols=TLSv1.2" to avoid errors as described at https://stackoverflow.com/a/50924208/3750035

  • Unfortunately even disabling `doclint` on these branches seems to not be enough (See https://github.com/DSpace/DSpace/issues/6509), so you really do need to find an old version of Java 7 around somewhere.
  • If you are using a recent version of Ubuntu, OpenJDK 7 is harder and harder to find. However, there are still some PPAs that have unmaintained copies (i.e. no security patches). This is good enough for installing on something like vagrant-dspace just do perform the release. Here's a PPA that has worked (as of July 2017):

    Code Block
    # Install the add-apt-repository command (if not available)
    sudo apt install software-properties-common
    # Add a PPA that has old 7 versions of OpenJDK
    sudo add-apt-repository ppa:openjdk-r/ppa
    sudo apt-get update
    # Install OpenJDK 7
    sudo apt-get install openjdk-7-jdk
    # Switch which Java alternative is in use (and select OpenJDK 7)
    # OBVIOUSLY, YOU SHOULD MAKE SURE TO SWITCH BACK AFTER THE RELEASE IS COMPLETE
    update-alternatives --config java
    # Check that the settings are now correct
    java -version


...

Code Block
mvn {target} {-D[version-specific-option]}

# NOTE: for DSpace 7.x, you MUST use the "-Drelease" flag in all commands.  It will automatically release all modules.
# NOTE: for DSpace 6.x, make sure the "-Dmirage2.on=true" flag is specified to ensure Mirage2 is released
# NOTE: for DSpace 5.x, make sure the "-Dmirage2.on=true" flag is specified to ensure Mirage2 is release released 
#       AND the LNI module must be manually specified (-Pdspace-lni)
#       AND "-Dhttps.protocols=TLSv1.2" (needed for Maven + Java 7)

...

Code Block
mvn install -Dmirage2.on=true
# NOTE: for DSpace 5.x, the LNI module must be manually specified (-Pdspace-lni)
# Additionally, if releasing using Java 7, then you must include "-Dhttps.protocols=TLSv1.2" to avoid protocol_version errors in Maven.

Updating your local maven cache will help to ensure that the release process goes more smoothly, and should help you to avoid any errors having to do with Maven being unable to locate any particular dependencies. That being said, this step actually may not be necessary, if our release process is working correctly.

...

Code Block
# For DSpace 6.x or below
mvn release:prepare -DdryRun=true -Dmirage2.on=true
# NOTE: for DSpace 5.x, the LNI module must be manually specified (-Pdspace-lni) to ensure it is also released
.
# ForAdditionally, DSpace 7.if releasing using Java 7, then you must include "-Dhttps.protocols=TLSv1.2" to avoid protocol_version errors in Maven.

# For DSpace 7.x or above (the "-Drelease" flag is required and it selects all modules to release)
mvn release:prepare -DdryRun=true -Drelease

...

Code Block
# For DSpace 6.x or below
mvn release:prepare -Dresume=false -Dmirage2.on=true
# NOTE: for DSpace 5.x, the LNI module must be manually specified (-Pdspace-lni) to ensure it is also released
# Additionally, if releasing using Java 7, then you must include "-Dhttps.protocols=TLSv1.2" to avoid protocol_version errors in Maven.

# For DSpace 7.x or above (the "-Drelease" flag is required and it selects all modules to release)
mvn release:prepare -Dresume=false -Drelease

...

Code Block
# For DSpace 6.x or below
mvn release:perform -Dmirage2.on=true
# NOTE: for DSpace 5.x, the LNI module must be manually specified (-Pdspace-lni) to ensure it is also released
# Additionally, if releasing using Java 7, then you must include "-Dhttps.protocols=TLSv1.2" to avoid protocol_version errors in Maven.

# For DSpace 7.x or above (the "-Drelease" flag is required and it selects all modules to release)
mvn release:perform -Drelease

...

Code Block
# NOTE: for DSpace 5.x, the LNI module must be manually specified (-Pdspace-lni) to ensure it is also distributed
# Additionally, if releasing using Java 7, then you must include "-Dhttps.protocols=TLSv1.2" to avoid protocol_version errors in Maven.

localhost$ cd target/checkout/dspace/
localhost$ mvn package -Pdistributions -Dmirage2.on=true
 [INFO] Scanning for projects...
 [INFO]
 [INFO] ----------------------------------------------------------------------------
 [INFO] Building DSpace Assembly and Configuration 3.0
 [INFO] ----------------------------------------------------------------------------
 ....
 [INFO] --- maven-assembly-plugin:2.2.1:single (default) @ dspace ---
 [INFO] Reading assembly descriptor: src/main/assembly/release.xml
 [INFO] Reading assembly descriptor: src/main/assembly/src-release.xml
 [INFO] Building zip: [full-path-to-dspace-src]/dspace/target/dspace-3.0-release.zip
 [INFO] Building tar: [full-path-to-dspace-src]/dspace/target/dspace-3.0-release.tar.gz
 [INFO] Building tar: [full-path-to-dspace-src]/dspace/target/dspace-3.0-release.tar.bz2
 [INFO] Building zip: [full-path-to-dspace-src]/dspace/target/dspace-3.0-src-release.zip
 [INFO] Building tar: [full-path-to-dspace-src]/dspace/target/dspace-3.0-src-release.tar.gz
 [INFO] Building tar: [full-path-to-dspace-src]/dspace/target/dspace-3.0-src-release.tar.bz2
 [INFO] ------------------------------------------------------------------------
 [INFO] BUILD SUCCESS
 [INFO] ------------------------------------------------------------------------

...

  • Make sure all contributors to the release have been added to the Release Notes!
  • Coordinate Announcements with LYRASIS Staff:
    • You might post draft announcements to a service such as https://gist.github.com/ and send out a call to committers for review.  When finalized, DSpace releases should be announced on the dspace-community, dspace-devel and dspace-tech lists/groups.
    • Announcement on dspace.org, twitter
    • (As necessary) Ensure that the Latest Release page on dspace.org is updated.
      • Plus, ask dspace.org admins to upload latest documentation in PDF/HTML format
    • Announce on all DSpace mailing lists
    • Link announcement on Home of DSpace Wiki, change any version numbers listed on that page.
  • Update Wiki pages, particularly these pages which refer to the Current and Next Releases:
  • Also, update the Documentation Wiki area! Specifically:
  • For major releases, create a new branch in GitHub for any upcoming bug-fix releases:
    • E.g., after the 3.0 release, we created a 3.x branch for any subsequent bug fix releases.
    • To automatically create a branch, you may be able to use the release:branch command (NOTE: untested, but it should work! once we test it out, this may be the best practice way of creating a branch).
    • To manually create a branch, run commands similar to:

      Code Block
      languagebash
      git clone git@github.com:DSpace/DSpace.git branchit
      cd branchit
      git checkout -b dspace-3_x dspace-3.0
      git push --set-upstream origin dspace-3_x


    • Then, go back to your master main checkout, and make sure to update its version numbers in the pom.xml files by running the following:

      Code Block
      git checkout mastermain
      mvn release:update-versions -Dmirage2.on

      (Remember to enter in the next appropriate major version number. E.g. After releasing 3.0, master should main should be updated to "4.0-SNAPSHOT", while the new 3_x branch should be at "3.1-SNAPSHOT")

    • NOTE: the update-versions command doesn't always work perfectly. You will want to try a complete rebuild of DSpace before committing anything, as it sometimes misses updating a few version numbers.
    • Push your verified changes back to GitHub.
    • You'll also need to ensure that all version numbers and the <scm> section is appropriate in the pom.xml files of your new Branch. Remember, the <scm> configurations should point at the branch, rather than back at master.
  • Updates to GitHub: 
    • Move any uncompleted PRs to the next DSpace version tag / project board
    • Close the release milestone (adding date of the release)
  • Find the contributors (helpful data for the announcement, you are drafting an announcement, right?): 
    • For bugfix releases

      Code Block
      # This example is to find the list of contributors to 6.3 
      # It lists contributors to 6.x branch since the 6.2 tag
      git shortlog -ns dspace-6_x ^dspace-6.2


    • For major releases (or from main branch), you can use GitHub contributors pages with a date range.  

...