To prepare or perform a release you MUST BE at least an Camel Extra committer.
~/.m2/settings.xml
. See below.
mvn clean install -PwithRatCheck,integration
You also need to edit your ~/.m2/settings.xml to add the camel-extra servers. So your XML should look something like...
<?xml version="1.0"?> <settings> <servers> <server> <id>sonatype-nexus-staging</id> <username>MY_SONATYPE_USERNAME</username> <password>MY_SONATYPE_PASSWORD</password> </server> <server> <id>sonatype-nexus-snapshots</id> <username>MY_SONATYPE_USERNAME</username> <password>MY_SONATYPE_PASSWORD</password> </server> </servers> <profiles> <profile> <id>apache-extra-release</id> <properties> <gpg.useagent>false</gpg.executable> <gpg.passphrase>the_pass_phrase</gpg.passphrase> </properties> </profile> </profiles> </settings>
The release plugin will prompt for a release version, tag and next release version. Use a three digit release version of the form: 2.x.x and for the tag use a string of the form: camel-extra-2.x.x. The next version string should use the two digit from: 2.x-SNAPSHOT as this can be consistent for future SNAPSHOT releases.
1. Grab the latest source from Git and checkout the target branch to build from. If you build a new release from master create a new branch
git checkout BRANCH_NAME # e.g. BRANCH_NAME = camel-extra-2.16.x
2. Verify headers with rat
mvn -e org.apache.rat:apache-rat-plugin:check grep -e ' !?????' target/rat.txt # will show any files without licenses
The grep command will return a list of files that don't have correct license headers. If nothing is returned, you can proceed with the next step. Otherwise fix the license header in all listed files and invoke both commands again until no files are returned.
3. Do a release dry run to check for problems
mvn release:prepare -DdryRun=true -Psonatype-oss-release ... [INFO] Checking dependencies and plugins for snapshots ... What is the release version for "Camel Extra"? (org.apache-extras.camel-extra:camel-parent) 2.18.0: : What is SCM release tag or label for "Camel Extra"? (org.apache-extras.camel-extra:camel-parent) camel-parent-2.18.0: : camel-extra-2.18.0 What is the new development version for "Camel Extra"? (org.apache-extras.camel-extra:camel-parent) 2.18.1-SNAPSHOT: : 2.18-SNAPSHOT
Check that you are happy with the results. The poms for the proposed tags will be in pom.xml.tag. Check also the generated signature files:
ullgren$ gpg target/camel-parent-2.18.0-SNAPSHOT.pom.asc gpg: Signature made 2017-06-14T22:55:49 CEST using DSA key ID A2CF8A38 gpg: Good signature from "Pontus Ullgren"
4. Prepare the release
When you like the results, clean up:
mvn release:clean -Psonatype-oss-release
Then run prepare for real this time
mvn release:prepare -Psonatype-oss-release
NOTE: If your git doesn't remember the username and password, you need pass it to the mvn plugin, otherwise the release plugin will wait forever.
mvn release:prepare -Dusername=USERNAME -Dpassword=PASSWORD -Psonatype-oss-release
This will create the tag in git and leave various stuff around locally to direct the perform phase.
5. Perform the release to the staging repo
mvn release:perform -Psonatype-oss-release
6. Close the staging repository
Login to https://oss.sonatype.org using your Sonatype credentials. Click on "Staging Repositories". Then select "orgapache-extrascamel-extra-xxx" in the list of repositories, where xxx represents a 4 digit sequential number. Click "Close" on the tool bar above. This will close the repository from future deployments and make it available for others to view.
7. Verify staged artifacts
If you click on your repository, a tree view will appear below. You can then browse the contents to ensure the artifacts are as you expect them. Pay particular attention to the existence of *.asc (signature) files. If the you don't like the content of the repository, right click your repository and choose "Drop". You can then rollback your release and repeat the process.
Note the repository URL, you will need this in your vote email.
When folks need to test out a release candidate, the jars will not have been uploaded to the central Maven repo. This means that the example programs which use Maven will not automatically work and you need to follow the Testing a release candidate guidelines.
Afterwards send out the VOTE for this release candidate to the mailing list.
If the VOTE pass,