...
Create a new tab in the VIVO modules release plan spreadsheet.
- Follow the release order of the spreadsheet plan
Variables Used
These variables will be used in the examples that follow. The exact values of $ORG
and $REPO
will vary depending on which module is being released.
No Format |
---|
ORG=vivo-project
REPO=VIVO
CURR=1.10.0
NEXT=1.11.0-SNAPSHOT |
Github Release
Perform a clean checkout of the code from Github and prepare the release.
Code Block |
---|
git clone git@github.com:$ORG/$REPO.git
cd $REPO
git checkout -b rel-${CURR}-RC origin/rel-${CURR}-RC # or the release branch if named differently
mvn release:clean |
If release:clean fails, you may need to revert the RC commit with git revert HEAD
. If the parent snapshot is not available, build an old version of VIVO to populate it locally.
Resolve dependencies and set main versions to $CURR
and dev versions to $NEXT
Code Block |
---|
mvn release:prepare -DreleaseVersion=$CURR -DdevelopmentVersion=$NEXT -DautoVersionSubmodules=true -DpushChanges=false |
Note | |||||||
---|---|---|---|---|---|---|---|
Your GPG passphrase may not be masked in terminal.
|
Inspect/Verify local updates:
Code Block |
---|
git diff HEAD~1
git diff HEAD~2 HEAD~1 |
These diffs should only contain changes of version numbers (from ${CURR}-SNAPSHOT to $CURR or $CURR to $NEXT) or occasionally HEAD to the current tag name ($REPO-$CURR)
Remove your local copies of VIVO artifacts to be sure of a clean build, and build the release.
Code Block |
---|
rm -rf ~/.m2/repository/org/vivoweb
git checkout $REPO-$CURR # detached head state
mvn clean install |
Warning |
---|
Up until this point, all of the changes made are strictly in your local repository and working directory. From this point on, the changes you make will be visible to the world and in some cases difficult to back-out of. |
Push the changes to Github.
Code Block |
---|
git push origin --tags # mvn task relies on the tag, make sure it does not collide with a branch name |
Go to
https://github.com/vivo-project/$REPO/releases/tag/rel-$CURR
- Click Edit tag, and update title to "Release $CURR"
If appropriate, attach binaries and checksums that have been published to Maven Central- Click Publish Release
Sonatype Release
Release the build artifacts to the Sonatype repository.
Code Block |
---|
mvn release:perform -DperformRelease -Dgoals=deploy |
Note | |||||||
---|---|---|---|---|---|---|---|
As before, your GPG passphrase may not be masked in terminal.
|
Warning | ||
---|---|---|
| ||
The following steps, once completed are final. They cannot be undone, revoked or altered. Only proceed if you've completed all the above steps and are absolutely certain the release is ready for publication. |
- Go to https://oss.sonatype.org/index.html and log in
Click Staging Repositories in left navigation
Search for "vivoweb" in upper right search box (project will not have $REPO in title)
- Select repository and verify that $REPO is present in the Content tab
- Click Close, then Refresh, then Release
This will publish the artifacts to the Sonatype releases repository and start the process of syncing them with Maven Central, which may take several hours. When finished, they'll be available at http://repo1.maven.org/maven2/org/vivoweb.
Push Release Branch to develop and Maintenance
The release branch has changes made since code freeze. It also contains the update to the version numbers for future development.
Code Block |
---|
git checkout rel-${CURR}-RC # this is your local copy of the release branch
git log |
Ensure that your commit history matches the release branch's commit history, except for the two additional commits.
- Changing from SNAPSHOT version to release version. Something like [maven-release-plugin] prepare release $REPO-$CURR
- Changing from release version to next development version. Something like [maven-release-plugin] prepare for next development iteration
If this appears correct, you can push your release branch on to the maintenance branch.
Merge into 'develop' branch
Code Block |
---|
git checkout develop
git pull
git checkout rel-${CURR}-RC
git rebase -i develop |
Push to Maintenance branch
Code Block |
---|
git push origin rel-${CURR}-RC:rel-${CURR[major.minor]}-maintenance |
Close the release in Jira, and create the next one
- Go to the release management page.
- For the release you just made (there should be an open package icon to the left of it)
- click the gear icon on the left and choose "release"
- enter the date you finished the release
- the package should be closed
- if you are not already listed as the release manager in the description, enter "Release Manager: your-name-here"
- Create the next release
- enter a name (ie, VIVO 4.x.y) in the form at the top, and click Add. If the release manager is known, enter that in the note.
Announce release
Let Mike Conlon know that the release is complete and can be announced.