Before you can release Fluo or Fluo Recipes, you will need a GPG key. For information on generating a key look at this ASF GPG page. After generating a key, add it to the KEYS file. The KEYS files contains instructions for adding to itself. Use the following command to checkout the svn repository that contains the KEYS files. Updates to this repository will eventually sync to the website.
svn co https://dist.apache.org/repos/dist/release/incubator/fluo/
The maven release plugin will need credentials to stage artifacts. You can provide the credentials
by adding the following to your
~/.m2/settings.xml file. Maven offers documentation about securing
<servers> <server> <!-- Project using the Apache parent pom use following ID --> <id>apache.releases.https</id> <username>your-apache-id</username> <password>your-apache-password</password> </server> </servers>
Before starting the release process below, the following tasks should be complete:
- Ensure the NOTICE file has the correct year.
- Create release notes for project website using GitHub issues.
- Perform testing and document results.
Start a gpg-agent to cache your gpg key to avoid entering your passphrase multiple times. How you start this depends on your environment. The following command works in some environments. Ensure gpg-agent is configured with a sufficiently long timeout so that the cached passphrase do not expire during the build.
gpg-agent --daemon --use-standard-socket
Next, repeat the steps below until a good release candidate (RC) is found. The script in
contrib/create-release-candidate.sh automates this process. However there is no guarantee that it
works correctly. Before using the script ensure you understand the process and inspect the script.
In the following steps
RCV is short for release candidate version. For the case where you want to
make an initial release candidate available for evaluation, but nor for voting, consider using
Branch master (or the current snapshot) and call the branch
Prepare the release which will verify that all tests pass:
- Perform the release:
- This step will create a staging repository at https://repository.apache.org
release:performfinishes, login and close the staging repository to make the artifacts available for download at
- Its very important to only close the staging repository and not release or promote it at this point. Releasing publishes the artifacts to Maven central and this can not be undone. Releasing is done after a successful vote.
- When closing, add a comment like
Apache Fluo (incubating) 1.1.0-rc3
Delete the tag created by
mvn release:pepare. This tag should not be pushed to Apache until the vote passes. Also, a signed tag should be created instead of the one created by Maven. So out of an abundance of caution its best to delete it now and create the signed tag after the vote passes.
git tag -d rel/fluo-<releaseVersion>
git checkout <releaseVersion>-rc<RCV>-next git push apache-remote <releaseVersion>-rc<RCV>-next
Create the release candidate branch
<releaseVersion>-rc<RCV>and push it. This branch should be one commit behind
<releaseVersion>-rc<RCV>-nextand one commit ahead of the branch point.
git checkout -b <releaseVersion>-rc<RCV> <releaseVersion>-rc<RCV>-next~1 git push -u apache-remote <releaseVersion>-rc<RCV>
- Send a message to the devs to let them know a release is staged. This example
for the Fluo 1.0.0 release can be used as template. The script
contrib/create-release-candidate.shcan be used to generate this email.
When the vote passes on a release candidate, follow the steps below to complete the release using the chosen RC:
Merge your RC branch into the correct branch and push those commits upstream. The example below assume
masteris the correct branch. Afterwards, you can delete your RC branch.
git checkout master git merge <releaseVersion>-rc<RCV>-next git push apache-remote master
Release the artifacts at https://repository.apache.org so that they get published in Maven Central. You can drop any staging repos for RCs that were not chosen. Add a comment like
Vote failed for Apache Fluo 1.1.0-rc3when dropping or
Apache Fluo 1.1.0when releasing.
Create a signed tag for the release from the chosen RC tag and push to upstream repo:
# This step is optional. Some systems that have gpg and gpg2 may not function correctly. # See https://bugzilla.redhat.com/show_bug.cgi?id=568406 git config --global --get gpg.program || git config --global --add gpg.program gpg2
# Create signed tag. # You may need to use -u <key-id> to specify GPG key git tag -f -m 'Apache Fluo <releaseVersion>' -s rel/fluo-<releaseVersion> <releaseVersion>-rc<RCV> # Verify the tag is the expected commit git log -1 rel/fluo-<releaseVersion> # Push signed tag to upstream repo git push apache-remote rel/fluo-<releaseVersion>
Delete all RC branches.
git push apache-remote --delete <releaseVersion>-rc<RCV>-next git branch -d <releaseVersion>-rc<RCV>-next git push apache-remote --delete <releaseVersion>-rc<RCV> git branch -d <releaseVersion>-rc<RCV>
View the website README for instructions on how to generate Javadocs and documentation using the released tag. Submit PR to the website repo to publish.
Place the source and binary tarballs in the svn distribution repo under
fluo/<releaseVersion>. This is the same svn repo mentioned earlier for the KEYS file. Follow the ASF guidance for hashes and signatures. This step publishes the files to the ASF mirrors.
Send an email to
email@example.com new release.