...
- create one if you haven't before
- ensure that it's listed within the contributor keys
- You must generate and publish your own personal Code Signing Key (required by Sonatype). Here are two sites that give hints on how to do that:
- Creating a Code Signing Key
- How to Generate PGP Signatures with Maven (required for all Sonatype releases)
- Make sure to publish your Key file to
hkp://pgp.mit.edu
, as this is the Key Server Sonatype uses for verification:- (e.g.)
gpg --keyserver hkp://pgp.mit.edu --send-keys [yourKeyID]
[yourKeyId]
can be found by running the following command and copying the alpha-numeric string after the "/" on the "pub" linegpg --list-keys
- You can see if your key is already on that Key Server by visiting http://pgp.mit.edu and searching on your name
- (e.g.)
Ensure you have a SSH key setup locally and in GitHub
- Create SSH Key
- <to-do>
- Setup on GitHub
- <to-do>
Prepare and distribute test plan
...
Go to
https://github.com/vivo-project/$REPO/releases/
- Click "Draft a new release", and update title to "Release $REPO-$CURR"
- Attach appropriate artifacts
- Attach artifact MD5 files (e.g. artifact = jena2tools-1.2.0.jar, MD5 = jenatools-1.2.0.jar.md5)
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 |
Because VIVO and Vitro does not use the standard mvn release:prepare you will need to create a release.properties file for both. They should be saved into the base directory of their respective projects. Be sure to update the CURR and NEXT to the ones being used for this release.
Code Block | ||||
---|---|---|---|---|
| ||||
#release configuration
projectVersionPolicyId=default
project.rel.org.vivoweb\:vivo-installer-home=1.11.0
project.dev.org.vivoweb\:vivo-home=1.11.1-SNAPSHOT
project.dev.org.vivoweb\:vivo-webapp=1.11.1-SNAPSHOT
pushChanges=false
project.rel.org.vivoweb\:vivo-project=1.11.0
project.rel.org.vivoweb\:vivo-api=1.11.0
project.dev.org.vivoweb\:vivo-installer=1.11.1-SNAPSHOT
remoteTagging=true
scm.commentPrefix=[maven-release-plugin]
project.dev.org.vivoweb\:vivo-installer-webapp=1.11.1-SNAPSHOT
project.dev.org.vivoweb\:vivo-api=1.11.1-SNAPSHOT
project.dev.org.vivoweb\:vivo-project=1.11.1-SNAPSHOT
scm.url=scm\:git\:git@github.com\:vivo-project/VIVO.git
scm.tagNameFormat=@{project.artifactId}-@{project.version}
project.rel.org.vivoweb\:vivo-installer-webapp=1.11.0
project.rel.org.vivoweb\:vivo-home=1.11.0
scm.tag=vivo-1.11.0
project.rel.org.vivoweb\:vivo-webapp=1.11.0
project.dev.org.vivoweb\:vivo-installer-home=1.11.1-SNAPSHOT
exec.snapshotReleasePluginAllowed=false
project.rel.org.vivoweb\:vivo-installer=1.11.0 |
Code Block | ||||
---|---|---|---|---|
| ||||
#release configuration
projectVersionPolicyId=default
project.rel.org.vivoweb\:vitro-installer-home=1.11.0
project.rel.org.vivoweb\:checkstyle=1.11.0
project.dev.org.vivoweb\:vitro-home=1.11.1-SNAPSHOT
project.dev.org.vivoweb\:vitro-webapp=1.11.1-SNAPSHOT
pushChanges=false
project.rel.org.vivoweb\:vitro-project=1.11.0
project.rel.org.vivoweb\:vitro-api=1.11.0
project.dev.org.vivoweb\:vitro-installer=1.11.1-SNAPSHOT
remoteTagging=true
scm.commentPrefix=[maven-release-plugin]
project.dev.org.vivoweb\:vitro-installer-webapp=1.11.1-SNAPSHOT
project.dev.org.vivoweb\:checkstyle=1.11.1-SNAPSHOT
project.dev.org.vivoweb\:vitro-api=1.11.1-SNAPSHOT
project.rel.org.vivoweb\:vitro-dependencies=1.11.0
project.dev.org.vivoweb\:vitro-project=1.11.1-SNAPSHOT
scm.url=scm\:git\:git@github.com\:vivo-project/Vitro.git
scm.tagNameFormat=@{project.artifactId}-@{project.version}
project.rel.org.vivoweb\:vitro-installer-webapp=1.11.0
project.rel.org.vivoweb\:vitro-home=1.11.0
scm.tag=vitro-1.11.0
project.rel.org.vivoweb\:vitro-webapp=1.11.0
project.dev.org.vivoweb\:vitro-installer-home=1.11.1-SNAPSHOT
project.dev.org.vivoweb\:vitro-dependencies=1.11.1-SNAPSHOT
exec.snapshotReleasePluginAllowed=false
project.rel.org.vivoweb\:vitro-installer=1.11.0 |
Currently the remaining projects can start with this step. While gpg.keyname isn't required if you have a global key setup it is recommended. You must skip checkstyle during a deploy.
Code Block |
---|
mvn release:perform -DperformRelease -Dgoals=deploy -e -Darguments="-Dgpg.keyname=XXXXYYYYXXXXYYYY -Dcheckstyle.skip=true" |
Note | |||||||
---|---|---|---|---|---|---|---|
As | |||||||
Note | |||||||
As before, your GPG passphrase may not be masked in terminal.
|
...
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.
...
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 |
---|
#For vivo and vitro the main branch is develop #For#For vivo, vitro, vivo languages, vitro languages, jenatools, and orcid-api-client the main branch is master #Needs to be completed for each project in release git checkout develop git pull git checkout rel-${CURR}-RC git rebase -i develop git push origin develop or git checkout rel-${CURR}-RC git checkout develop git pull git merge rel-${CURR}-RC git push origin develop |
Clean-up RC Tags
...