DUE TO SPAM, SIGN-UP IS DISABLED. Goto Selfserve wiki signup and request an account.
...
First prepare your POMs for release:
- Make sure you have correct NOTICE, DEPENDENCIES, and LICENSE files. Remember to update the copyright year.
- Make sure you have an updated change log file, typically in
doc/changelog.txtbut in the project root is also acceptable. - make sure there are no snapshots in the POMs to be released
- check that your POMs will not lose content when they are rewritten during the release process
mvn release:prepare -DdryRun=true- diff the original
pom.xmlwith the one calledpom.xml.tagto see if the license or any other info has been removed. This has been known to happen if the starting<project>tag is not on a single line. The only things that should be different between these files are the<version>and<scm>elements. If there are any other changes, you must fix the originalpom.xmlfile and commit before proceeding with the release
- publish a snapshot
Code Block $ mvn deploy ... [INFO] [deploy:deploy] [INFO] Retrieving previous build number from apache.snapshots.https ...
- if you experience an error during deployment like a HTTP 401 check your settings for the required server entries as outlined in the Prerequisites
- be sure that the generated artifacts respect the Apache release rules: NOTICE and LICENSE files should be present in the META-INF directory within the jar. For -sources artifacts, be sure that your POM does not use the maven-source-plugin:2.0.3 which is broken. The recommended version at this time is 2.0.4
- you should verify the deployment under the snapshot repository on Apache
- prepare the release
Code Block mvn release:clean mvn release:prepare
- preparing the release will create the new tag in SVN, automatically checking in on your behalf
- stage the release for a vote
Code Block mvn release:perform
- the release will automatically be inserted into a temporary staging repository for you, see the Nexus staging documentation for full details
- you can continue to use
mvn release:prepareandmvn release:performon other sub-projects as necessary on the same machine and they will be combined in the same staging repository - this is useful when making a release of the Felix framework and its associated bundles.
- close the staging repository
- login to https://repository.apache.org using your Apache SVN credentials. Click on Staging on the left. Then click on org.apache.felix in the list of repositories. In the panel below you should see an open repository that is linked to your username and IP. Right click on this repository and select Close. This will close the repository from future deployments and make it available for others to view. If you are staging multiple releases together, skip this step until you have staged everything
- verify the 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 you don't like the content of the repository, right click your repository and choose Drop. You can then rollback your release (see Canceling the Release) and repeat the process
- note the staging repository URL (especially the number at the end of the URL) you will need this in your vote email
...
| Code Block |
|---|
To: "Felix Developers List" <dev@felix.apache.org> Subject: [VOTE] Release Felix XXX version Y.Z Hi, We solved N issues in this release: http://issues.apache.org/jira/... There are still some outstanding issues: http://issues.apache.org/jira/... Staging repository: https://repository.apache.org/content/repositories/felix-stagingorgapachefelix-[YOUR REPOSITORY ID]/ You can use this UNIX script to download the release and verify the signatures: http://svn.apache.org/repos/asf/felix/trunk/check_staged_release.sh Usage: sh check_staged_release.sh [YOUR REPOSITORY ID] /tmp/felix-staging Please vote to approve this release: [ ] +1 Approve the release [ ] -1 Veto the release (please provide specific comments) This vote will be open for 72 hours. |
...
The list of binding voters is available at http://felix.apache.org/site/project-management-committecommittee-pmc.html
If the vote is successful, post the result to the dev list - for example:
...
- remove the release tag from Subversion (
svn del ...) - login to https://repository.apache.org using your Apache SVN credentials. Click on Staging on the left. Then click on org.apache.felix in the list of repositories. In the panel below you should see a closed repository that is linked to your username and IP (if it's not yet closed you need to right click and select Close). Right click on this repository and select Drop.
- rollback the version in the
pom.xmland commit any fixes you need to make
Promoting the Release
If the vote passes:
| Info |
|---|
The release manager is free to either reuse the same version when proposing a new release for vote (for example 2.1.2 after a failed 2.1.2 release attempt), or choose a different number (for example 2.1.4 after a failed 2.1.2 attempt). (cf. vote on 02/14/11). |
Promoting the Release
If the vote passes:
- copy the released artifacts to the Felix dist directory (
/x1/www/www.apache.org/dist/felix) onpeople.apache.org - delete the old release from the Felix dist directory (it
- copy the released artifacts to the Felix dist directory (
/x1/www/www.apache.org/dist/felix) onpeople.apache.org - delete the old release from the Felix dist directory (it's archived)
- login to https://repository.apache.org with your Apache SVN credentials. Click on Staging. Find your closed staging repository, right click on select it, and choose Promote. Select the Releases repository from the drop-down list and click Promoteclick the Release button.
- next click on Repositories, select the Releases repository and validate that your artifacts are all there
- if you're releasing bundles, you can also add them to the Felix Release OBR (see Appendix C).
- update the news section on the website at news
- update the download page on the website at downloads to point to the new release.
...
Create an Announcement
| Code Block |
|---|
To: "Felix DevelopersUsers List" <dev@felix<users@felix.apache.org> Subject: [ANN] Felix XXX version Y.Z Released The Felix team is pleased to announce the release of Felix XXX version Y.Z <<insert short description of the sub-project>> http://felix.apache.org/site/apache-felix-XXX.html This release is available from http://felix.apache.org/site/downloads.cgi and Maven: <dependency> <groupId>org.apache.felix</groupId> <artifactId>org.apache.felix.XXX</artifactId> <version>Y.Z</version> </dependency> Release Notes: <<insert release notes in text format from JIRA>> Enjoy! -The Felix team |
...
Appendix A: create and add your key to http://www.apache.org/dist/felix/KEYS
If you are using a *nix system with a working OpenSSH, GnuPG, and bash you can create and add your own key with the following command:
- Create a public/private pair key:
When gpg asks for e-mail linked the key you MUST USE the <committer>@apache.org oneCode Block gpg --gen-key
When gpg asks for comment linked the key you SHOULD USE "CODE SIGNING KEY" - Add the key to http://www.apache.org/dist/felix/KEYS:
type the following command replacing the word e-mail with your Apache's one (<committer>@apache.org). Code Block (gpg --list-sigs e-mail && gpg --export --armor e-mail) > toadd.key scp toadd.key people.apache.org: ssh people.apache.org "cat toadd.key >> /x1/www/www.apache.org/dist/felix/KEYS"
- You are now DONE, but to see the changes on http://www.apache.org/dist/felix/KEYS
you must wait 2 hours
...
The http://felix.apache.org/obr/releases.xml page is automatically updated during the web site synchronization.
Note: the project building the bundle must use the maven-bundle-plugin and use a version superior or equal to 1.4.2.
Note: with Maven 3, you must add an extension to your <build> providing the SCP/SSH protocol:
| Code Block |
|---|
<build>
...
<extensions>
<extension>
<groupId>org.apache.maven.wagon</groupId>
<artifactId>wagon-ssh</artifactId>
<version>1.0-beta-6</version>
</extension>
</extensions>
</build>
|