Updated Branches: refs/heads/master daf3518bf -> 17d844b56
Recipe/todo list for releases Project: http://git-wip-us.apache.org/repos/asf/incubator-curator/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-curator/commit/17d844b5 Tree: http://git-wip-us.apache.org/repos/asf/incubator-curator/tree/17d844b5 Diff: http://git-wip-us.apache.org/repos/asf/incubator-curator/diff/17d844b5 Branch: refs/heads/master Commit: 17d844b5638d8e6b7eed3c337c6d3ec3381b2421 Parents: daf3518 Author: randgalt <[email protected]> Authored: Sat Apr 6 16:33:43 2013 -0500 Committer: randgalt <[email protected]> Committed: Sat Apr 6 16:33:43 2013 -0500 ---------------------------------------------------------------------- src/site/confluence/committers.confluence | 114 ++++++++++++++++++- src/site/confluence/email-examples.confluence | 54 +++++++++ 2 files changed, 162 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-curator/blob/17d844b5/src/site/confluence/committers.confluence ---------------------------------------------------------------------- diff --git a/src/site/confluence/committers.confluence b/src/site/confluence/committers.confluence index ddd57a5..4d4da08 100644 --- a/src/site/confluence/committers.confluence +++ b/src/site/confluence/committers.confluence @@ -1,9 +1,34 @@ h1. Information/Recipes for Curator Committers +*Tools/Preparation* +* [Tools|#tool-chain] +* [GPG|#gpg] * [Maven Settings|#maven-settings] -* [How to Publish the Curator Website|#publish-website] * [Git Setup|#git-setup] +*Development* +* [GitHub Flow|#github-flow] +* [Jira|#use-jira] +* [Maven Checks|maven-checks] + +*Release/Publishing* +* [Prepare for Release|#release-prepare] +* [Perform the Release|#release-perform] +* [Vote On the Release|#release-vote] +* [Promote the Release|#release-promote] +* [How to Publish the Curator Website|#publish-website] + +{anchor:tool-chain} +h2. Tools +Curator is built using Maven and Git. You should be familiar with both of these tools. For publishing, +you also need to install GPG and create a key that is available from a well known public site. + +{anchor:gpg} +h2. GPG +Download GPG from [http://www.gnupg.org/download/]. Then, follow the steps described +here, [http://www.sonatype.com/people/2010/01/how-to-generate-pgp-signatures-with-maven/], to +*Generate a Key Pair* and *Distribute Your Public Key*. + {anchor:maven-settings} h2. Maven Settings @@ -29,6 +54,7 @@ website): <properties> ... <curator-website-checkout-path>path-goes-here</curator-website-checkout-path> + <gpg.keyname>id-of-your-pgp-key</gpg.keyname> ... </properties> ... @@ -39,6 +65,87 @@ website): </settings> {noformat} +{anchor:git-setup} +h2. Git Setup + +Apache has a good guide on how to prepare your environment for interacting with the Curator Git repo: [https://git-wip-us.apache.org/]. + +---- + +h2. Development + +{anchor:github-flow} +h3. GitHub Flow + +Curator loosely uses [GitHub Flow|http://scottchacon.com/2011/08/31/github-flow.html]. The short form of GitHub Flow is: + +* Anything in the master branch is deployable +* To work on something new, create a descriptively named branch off of master (ie: new-oauth2-scopes) +* Commit to that branch locally and regularly push your work to the same named branch on the server +* When you need feedback or help, or you think the branch is ready for merging, send a pull request +* After someone else has reviewed and signed off on the feature, you can merge it into master +* Once it is merged and pushed to 'master', you can and should deploy immediately + +{anchor:use-jira} +h3. Jira + +For all but minor changes, there should be a Jira "ticket" created at [https://issues.apache.org/jira/browse/CURATOR]. + +{anchor:maven-checks} +h3. Maven Checks +Regardless of which IDE you use, you should periodically perform a {{mvn clean install}} to validate that the various configured checks (such as license headers, +etc.) are passing as well as the unit tests. + +---- + +{anchor:release-prepare} +h2. Prepare the Release + +# Do a dry run of the release/prepare step by executing {{mvn release:prepare -DdryRun=true}}. The dry run will not commit any changes back to Git and gives you the opportunity to verify that the release process will complete +as expected. If you need to cancel, execute {{mvn release:clean}} and then reset via {{git reset --hard}}. +# Verify that the release process completed as expected: +** The release plugin will create {{pom.xml.tag}} files which contain the changes that would have been committed to SVN. The only differences between {{pom.xml.tag}} +and its corresponding {{pom.xml}} file should be the version number. +** If other formatting changes have been made you should review the changes and then commit and push them. +** Once any failures or required updates have been committed to svn, rollback the release prepare files: {{mvn release:rollback}} +# Execute the release/prepare step for real this time. You'll be prompted for the same version information and optionally your GPG +passphrase again: {{mvn release:prepare}}. + +{anchor:release-perform} +h2. Perform the Release + +# Execute release/perform: {{release:perform}}. +# Verify the staged artifacts in the Apache Nexus repository: +** Go to: [https://repository.apache.org/index.html] +** Enterprise > Staging +** Staging tab > Name column > curator +** Navigate through the artifact tree and double check things. +# Close the Nexus staging repo by clicking on the curator repo and clicking the "Close" button. +# Important: Do *not* release the repo at this point. Releases require voting. + +{anchor:release-vote} +h2. Initiate a Vote On the Release +# Create a VOTE email thread on [@dev|mailto:[email protected]] to record votes as replies (see [Example Emails|email-examples.html]). +# If the Vote succeeds, you can then promote the release: +** At [https://repository.apache.org] select the curator repo and click the "Release" button. +** More TBD +# Regardless of the vote result, send a RESULT VOTE email (see [Example Emails|email-examples.html]). + +{anchor:release-promote} +h2. Promote the Release +Upon a successful vote for the release, it should be promoted: +# Release the artifact: +** Go to: [https://repository.apache.org/index.html] +** Select the curator release and click the "Release" button. +# Deploy the component site: +** TBD +# Add the distribution artifacts to the distribution area: +** TBD +# Announce the Release: +** TBD + +---- + {anchor:publish-website} h2. How to Publish the Curator Website @@ -54,8 +161,3 @@ Have a look at the staged site and make sure it's good. Then: mvn site-deploy {noformat} -{anchor:git-setup} -h2. Git Setup - -Apache has a good guide on how to prepare your environment for interacting with the Curator Git repo: [https://git-wip-us.apache.org/]. - http://git-wip-us.apache.org/repos/asf/incubator-curator/blob/17d844b5/src/site/confluence/email-examples.confluence ---------------------------------------------------------------------- diff --git a/src/site/confluence/email-examples.confluence b/src/site/confluence/email-examples.confluence new file mode 100644 index 0000000..35a7024 --- /dev/null +++ b/src/site/confluence/email-examples.confluence @@ -0,0 +1,54 @@ +h1. Example Emails + +h2. Release Vote Email Example + +{noformat} +To: "Apache Curator Developers List" <[email protected]> +Subject: [VOTE] Release Curator x.y.z + +Hello, + +This is a vote to release Curator x.y.z + +Link to release notes: +https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12314425&version=12324259 + +Staging repo: +https://repository.apache.org/content/repositories/curator-[YOUR REPOSITORY ID]/etc + +Release artifact: +https://repository.apache.org/content/repositories/curator-[YOUR REPOSITORY ID]/etc + +Vote will be open for 72 hours. + +[ ] +1 +[ ] 0 +[ ] -1 (explain why) +{noformat} + +h2. Release Vote Result Email + +{noformat} +To: "Apache Curator Developers List" <[email protected]> +Subject: [RESULT] [VOTE] Release Curator x.y.z + +Hello, + +The vote to release Curator x.y.z has passed/failed. + ++1 (binding): + + Jordan Zimmerman (*) + Patrick Hunt (*) + Jay Zarfoss (*) + John Galt + +* IPMC members + ++1 (non binding): + + Ryan Giggs + Wayne Rooney + +I will promote the artifacts to the central repo. +{noformat}
