- Ensure you have an empty just checked out folder out of git. Optionally you could apply git clean:
git clean -xdf- Compile the native binaries by using the docker image.
You will of course need docker installed and running for this:
MyComputer activemq-artemis-native myuser$ ./scripts/compile-using-docker.sh- Build the release locally: mvn clean install -Prelease
If you don't have a key to sign the release artifacts you can generate one using this command:
gpg --gen-key
Ensure that your key is listed at https://dist.apache.org/repos/dist/release/activemq/KEYS. If not, generate the key information, e.g.:
gpg --list-sigs username@apache.org > /tmp/key; gpg --armor --export username@apache.org >> /tmp/key
Then send the key information in /tmp/key to private@activemq.apache.org so it can be added.
Add your key id (available via gpg --fingerprint <key>) to the OpenPGP Public Key Primary Fingerprint field at
https://id.apache.org/. Note: this is just the key id, not the whole fingerprint.
Before starting make sure you clone a brand new git as follows as the release plugin will use the upstream for pushing the tags:
git clone git://github.com/apache/activemq-artemis-native.git
cd activemq-artemis-native
git remote add upstream https://gitbox.apache.org/repos/asf/activemq-artemis-native.gitIf your git user.email and/or user.name are not set globally then you'll need to set these on the newly clone
repository as they will be used during the release process to make commits to the upstream repository, e.g.:
git config user.email "username@apache.org"
git config user.name "FirstName LastName"
This should be the same user.email and user.name you use on your main repository.
You will have to use this following maven command to perform the release:
mvn clean release:prepare -DautoVersionSubmodules=true -Prelease -PdockerYou could optionally set pushChanges=false so the version commit and tag won't be pushed upstream (you would have to do it yourself):
mvn clean release:prepare -DautoVersionSubmodules=true -DpushChanges=false -Prelease -PdockerWhen prompted make sure the next is a major release. Example:
[INFO] Checking dependencies and plugins for snapshots ...
What is the release version for "ActiveMQ Artemis Parent"? (org.apache.activemq:artemis-pom) 1.4.0: :
What is SCM release tag or label for "ActiveMQ Artemis Parent"? (org.apache.activemq:artemis-pom) artemis-pom-1.4.0: : 1.4.0
What is the new development version for "ActiveMQ Artemis Parent"? (org.apache.activemq:artemis-pom) 1.4.1-SNAPSHOT: : 1.5.0-SNAPSHOT
Otherwise snapshots will be created at 1.4.1 and forgotten. (Unless we ever release 1.4.1 on that example).
For more information look at the prepare plugin:
If you set pushChanges=false then you will have to push the changes manually. The first command is to push the commits
which are for changing the <version> in the pom.xml files, and the second push is for the tag, e.g.:
git push upstream
git push upstream <version>To upload it to nexus, perform this command:
mvn release:perform -Prelease -PdockerNote: this can take quite awhile depending on the speed for your Internet connection.
If something happened during the release upload to nexus, you may need to eventually redo the upload.
There is a release.properties file that is generated at the root of the project during the release. In case you want to upload a previously tagged release, add this file as follows:
- release.properties
scm.url=scm:git:https://github.com/apache/activemq-artemis.git
scm.tag=1.4.0
Use the closed staging repo contents to populate the the dist dev svn area with the official release artifacts for voting. Use the script already present in the repo to download the files and populate a new ${CURRENT-RELEASE} dir:
svn co https://dist.apache.org/repos/dist/dev/activemq/activemq-artemis-native/
cd activemq-artemis
./prepare-release.sh https://repository.apache.org/content/repositories/orgapacheactivemq-${NEXUS-REPO-ID} ${CURRENT-RELEASE}Give the files a check over and commit the new dir and start a vote if all looks well.
svn add <version>
svn commit
## Commit the download source
After the release is VOTED and aproved, you can release the maven repo on nexus,
and you can use this script to move the prepared release into the official place:
```sh
svn cp -m "add files for activemq-artemis-native-${CURRENT-RELEASE}" https://dist.apache.org/repos/dist/dev/activemq/activemq-artemis-native/${CURRENT-RELEASE} https://dist.apache.org/repos/dist/release/activemq/activemq-artemis-native/${CURRENT-RELEASE}For more information consult the apache guide at this address: