Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Jclouds Wiki" for 
change notification.

The "Releasing jclouds" page has been changed by AndrewBayer:
https://wiki.apache.org/jclouds/Releasing%20jclouds?action=diff&rev1=1&rev2=2

  = How to release (and test RCs) for Apache jclouds (incubating) =
+ 
+ == Prerequisites for doing a release ==
+ 
+ === Apache Nexus Account and Local Configuration ===
+ See [[http://www.apache.org/dev/publishing-maven-artifacts.html]] for the 
details. You should already have a Nexus account created for you automatically. 
If you aren't able to log in to [[https://repository.apache.org]], and you're a 
jclouds committer, you should probably open a JIRA with INFRA.
+ 
+ === GPG Signing Key ===
+  * Make sure you've got a GPG signing key set up. See 
[[http://www.apache.org/dev/release-signing.html]] for details.
+  * Associate your key with your ASF account by adding the fingerprint at 
[[https://id.apache.org/]].
+  * At least for now, also make sure your key is in 
people.apache.org:/www/www.apache.org/dist/incubator/jclouds/KEYS.
+  * If/when you can, get linked into the 
[[http://www.apache.org/dev/release-signing.html#web-of-trust|Apache Web of 
Trust]]. 
+  * Optionally, you can also add your GPG passphrase to your 
~/.m2/settings.xml, or enable gpg-agent for the maven-gpg-plugin, by doing 
something like this:
+ {{{
+ <profile>
+   <id>apache-release</id>
+   <properties>
+     <gpg.useagent>true</gpg.useagent>
+     <gpg.passphrase>[GPG_PASSWORD]</gpg.passphrase>
+   </properties>
+ </profile>
+ }}}
+   * But remember that this is not particularly secure, so you probably should 
just suck it up and enter your passphrase when you kick off the build, though 
you can leave gpg.useagent set to true to avoid having to re-enter it for each 
repo.
  
  == Cutting an RC ==
  
@@ -15, +37 @@

    * Check out the branch you're going to be releasing from - e.g., 1.6.x
    * Check the (repo)/pom.xml and/or (repo)/project/pom.xml for any properties 
referencing the SNAPSHOT version we're leaving, and replace those with the 
release version.
    * Prepare the release. e.g.:
+ {{{
- {{{mvn release:clean release:prepare -DreleaseVersion=1.6.1-incubating 
-Dtag=jclouds-1.6.1-incubating-rcX -DdevelopmentVersion=1.6.2-SNAPSHOT 
-DpushChanges=false}}}
+ mvn release:clean release:prepare -DreleaseVersion=1.6.1-incubating 
-Dtag=jclouds-1.6.1-incubating-rcX -DdevelopmentVersion=1.6.2-SNAPSHOT 
-DpushChanges=false
+ }}}
     * Remember to replace "jclouds-1.6.1-incubating-rcX" and the versions with 
the correct tag/version for the repo/release/RC you're building.
     * Some repositories (most notably labs and karaf) may have strange build 
problems with the new version when you run release:prepare. If that happens, 
run {{{mvn clean install -DskipTests}}} with the POMs set to the release 
version, and then try running the prepare command again.
     * Note that this will explicitly and specifically *not* push the tag or 
branch to the remote incubator-(whatever).git. That is by design, to make it 
easier to recover from errors and to speed up the release build. You will need 
to push the tag and branch upon completion of the build.
    * Perform the release build. e.g.,: 
+ {{{
- {{{mvn clean release:perform -DconnectionUrl=scm:git:file://`pwd`/.git 
-Dtag=jclouds-1.6.1-incubating-rcX -Darguments="-DskipTests"}}}
+ mvn clean release:perform -DconnectionUrl=scm:git:file://`pwd`/.git 
-Dtag=jclouds-1.6.1-incubating-rcX -Darguments="-DskipTests"
+ }}}
     * We deliberately do not run the tests in the release build, since we 
already just ran them for the prepare build, and that just seems redundant.
     * Jars will be deployed to repository.apache.org, in a new staging repo 
(if this is the first of the repos you're building) or the existing one used 
for the previous repos (if you've already built incubating-jclouds.git). 
Remember that you need to have an account on repository.apache.org and your GPG 
key set up (as described above) or the build will fail.
    * Push the tag and the current branch to the remote repo.
     * For 1.6.1-incubating, we didn't push the second commit the release 
plugin applies, changing the version to 1.6.2-SNAPSHOT. Going forward, we 
should still do that. If we need to spin a second release candidate, we'll do 
by creating a new 1.6.2 (or whatever) branch from the last commit before the 
version changed to the release version, and re-run subsequent RCs there.
-  
+   * Go to [[https://git-wip-us.apache.org/repos/asf?p=incubator-jclouds.git]] 
(or equivalent) and find the link to the tag you just pushed - copy that aside, 
since you'll need it for the vote email. 
+  * Once you've finished building all of the repos, go to 
[[https://repository.apache.org]], log in, and go to Staging Repositories. Find 
the open org.apache.jclouds repository, which your builds have been uploading 
to. Select it and close it. That'll take a little while. Then copy the URL for 
the repo - you'll need that shortly.
  
+ === Starting the Vote ===
+  * First, create a candidate directory - for 1.6.1-incubating, we did this in 
the release manager's home directory 
(~/public_html/jclouds-1.6.1-incubating-candidate-X on people.apache.org) but 
this may change to using a more standard location.
+  * Go to the candidate directory and run the following, substituting the 
correct version and the now-closed staging repository accordingly. This will 
copy down all the source tarballs, their signatures and their checksums. 
+ {{{
+ ~abayer/bin/fetch_jclouds_rc.sh 1.6.1-incubating 
https://repository.apache.org/content/repositories/orgapachejclouds-016
+ }}}
+  * It's not a bad idea to try taking each of the tarballs, blowing them up 
and then building, with a standard {{{mvn clean install}}}. Remember that RAT 
checks are done as part of the Maven build, so you don't need to run those 
separately.
+  * Get the JIRA release notes for the release by going to 
[[https://issues.apache.org/jira/secure/ConfigureReleaseNote.jspa?projectId=12314430]]
 and choosing HTML and the version you're releasing. Save that link for 
inclusion in the vote/discuss emails.
+  * Send two emails to [email protected], a [VOTE] thread and 
a [DISCUSS] thread. Set an end time for the vote, generally 72 hours from when 
you're sending it (but it's generally considerate to round up, and not a bad 
idea to give an extra day if the release vote window goes over the weekend). 
Example templates for the emails are below. Replace links, versions, RC 
numbers, release note link, etc.
+   * [VOTE] email:
+ {{{
+ Subject: [VOTE] Release Apache jclouds-1.6.1-incubating RC3
+ Body:
+ Hello,
+ 
+ This is the third release candidate for Apache jclouds 1.6.1-incubating, the 
first jclouds release at Apache. 
+ 
+ This is a PPMC vote - if this passes, we'll move it onward to an IPMC vote. 
Please use the separate [DISCUSS] thread for anything but votes.
+ 
+ It fixes the following issues:
+ 
https://issues.apache.org/jira/secure/ReleaseNote.jspa?version=12324412&styleName=Html&projectId=12314430
+ 
+ *** Please download, test and vote by Saturday, June 15th, 7pm PDT.
+ 
+ Note that we are voting upon the source (tag), binaries are provided for 
convenience.
+ 
+ Source and binary files:
+ http://people.apache.org/~abayer/jclouds-1.6.1-incubating-candidate-3
+ 
+ Maven staging repo:
+ https://repository.apache.org/content/repositories/orgapachejclouds-016
+ 
+ The tags to be voted upon:
+ - jclouds - 
https://git-wip-us.apache.org/repos/asf?p=incubator-jclouds.git;a=tag;h=8ed5571b0ecf7d79c64bc16642264684882f0311
+ - jclouds-labs - 
https://git-wip-us.apache.org/repos/asf?p=incubator-jclouds-labs.git;a=tag;h=54b084e474e0c22b539ed7cce0b0ebbc82b310cb
+ - jclouds-chef - 
https://git-wip-us.apache.org/repos/asf?p=incubator-jclouds-chef.git;a=tag;h=4adced11f4e74513c06023d6b3cde0642fd4017f
+ - jclouds-karaf - 
https://git-wip-us.apache.org/repos/asf?p=incubator-jclouds-karaf.git;a=tag;h=9e1f0d14285c8edeb35499f313aa7dbfab4a86f6
+ - jclouds-cli - 
https://git-wip-us.apache.org/repos/asf?p=incubator-jclouds-cli.git;a=tag;h=2e3575f56de2bf67469782d94d72ce8e621ddda5
+ 
+ jclouds KEYS file containing PGP keys we use to sign the release:
+ http://www.apache.org/dist/incubator/jclouds/KEYS
+ 
+ [ ] +1
+ [ ] 0
+ [ ] -1 (explain why)
+ }}}
+   * [DISCUSS] email
+ {{{
+ Subject: [DISCUSS] Release Apache jclouds-1.6.1-incubating RC3
+ Body:
+ This thread is for discussion of the third release candidate for Apache 
jclouds-1.6.1-incubating. Please use this thread for discussion of issues 
uncovered in the RC, questions you may have about the RC, etc. Thank you.
+ }}}
+ 
+ === Finishing the PPMC Vote ===
+  * If, after the voting window is closed, there are at least three binding 
+1s (at least three of which should be from mentors, ideally), and no binding 
-1s, the PPMC has signed off on the release and it's ready to go to the IPMC. 
+  * Reply to the [VOTE] thread announcing the closure of the vote, regardless 
of its outcome.
+  * Send an email to [email protected] titled "[RESULT] [VOTE] 
Apache jclouds 1.6.1-incubating RC3" and give the vote counts. Be sure to note 
the number of mentor +1s.
+  * Write similar emails to the [VOTE] and [DISCUSS] emails above, but 
remember to change the line in the [VOTE] email that starts with "This is a 
PPMC vote..." to something like "This is the IPMC vote. The PPMC vote passed, 
with three +1s from mentors (David Nalley, Olivier Lamy, and Suresh Marru)." - 
be sure to list the mentors who have +1'd the release here. Also, don't forget 
to reset the vote window time - this is a new vote, with a new 72 hour window!
+  * Send these emails to [email protected], cc'ing 
[email protected] for reference purposes.
+  * Wait for the voting window to end! Or if sufficient issues are uncovered 
before the end of the voting window, you can cancel the vote (by replying to 
the [VOTE] thread with an altered subject (i.e., "[CANCEL] [VOTE] ...") and an 
explanation of why the vote is being cancelled in the body.
+   * Note that just because IPMC members find issues does not mean that the 
release candidate must be replaced with a new one. Wait to see whether they 
vote -1 before abandoning the RC. It's distinctly possible that issues raised 
by IPMC members may not block the current RC, but will need to be addressed for 
subsequent releases.
+ 
+ === Finishing the IPMC Vote ===
+  * If, after the voting window is closed, there are at least three binding 
+1s from IPMC members (including the mentor +1s we already got in the PPMC 
vote) and no binding -1s from IPMC members, the vote has passed and we can 
release.
+  * First, regardless of whether the vote has passed, reply to the [VOTE] 
thread announcing the closure of the vote.
+  * Also regardless of whether the vote has passed, send an email to 
[email protected] and [email protected] with the 
subject "[RESULT] [VOTE] ...", and give the vote results in that email.
+  * Assuming the vote has passed, it's time to release!
+ 
+ === Actually Releasing ===
+  * First, in each of the repos, create and push a new tag, like 
jclouds-1.6.1-incubating, pointing at the same commit as the RC tag we included 
in the vote emails. Push those tags to the remote.
+  * On people.apache.org, in /www/www.apache.org/dist/incubator/jclouds, 
create a directory for the release, i.e., jclouds-1.6.1-incubating. Copy the 
release artifacts from the RC into that directory. In 
/www/www.apache.org/dist/incubator/jclouds, remove the "stable" symlink if it 
already exists, and run "ln -s jclouds-1.6.1-incubating stable".
+  * Wait up to 24 hours for the release artifacts to propagate to the mirrors.
+  * While waiting, go to [[https://repository.apache.org]], log in, and go to 
Staging Repositories. Select the staging repo for the RC, and click Release - 
this will move the artifacts into the releases repo, and from there they'll be 
synced to Maven Central as well.
+  * If you've got admin access to JIRA, mark the version you just released as, 
well, released, and if the next version in the train doesn't already exist, 
create it. If you're not in the JIRA admins for jclouds, drop an email to the 
dev list asking for someone to do this.
+  * Once the release bits have shown up on the mirrors, send the following 
email, updating the content accordingly, to [email protected], 
[email protected], [email protected] and 
[email protected]:
+ {{{
+ Subject: [ANNOUNCE] Apache jclouds 1.6.1-incubating released
+ Body:
+ The Apache jclouds team is pleased to announce the release of jclouds 
1.6.1-incubating.
+ 
+ This is the first Apache release of jclouds. Apache jclouds is a cloud 
+ agnostic library that enables developers to access a variety of supported
+ cloud providers using one API.
+ 
+ The release is available here:
+ http://www.apache.org/dyn/closer.cgi/incubator/jclouds
+ 
+ The full change log is available here:
+ https://issues.apache.org/jira/browse/JCLOUDS/fixforversion/12324412
+ 
+ We welcome your help and feedback. For more information on how to
+ report problems, and to get involved, visit the project website at
+ http://jclouds.incubator.apache.org/
+ 
+ The Apache jclouds Team
+ }}}
+ 
+  * And you're done!
+ 

Reply via email to