| <?xml version="1.0" encoding="UTF-8"?> |
| <!-- |
| Licensed to the Apache Software Foundation (ASF) under one or more |
| contributor license agreements. See the NOTICE file distributed with |
| this work for additional information regarding copyright ownership. |
| The ASF licenses this file to You under the Apache License, Version 2.0 |
| (the "License"); you may not use this file except in compliance with |
| the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| --> |
| <document xmlns="http://maven.apache.org/XDOC/2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" |
| xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd"> |
| |
| <properties> |
| <title>Apache Any23 - Release HowTo</title> |
| <author email="any23-dev@apache.org">Apache Any23 Team</author> |
| </properties> |
| |
| <body> |
| <section name="HowTo Release Apache Any23"> |
| <p>This short guide is for volunteers that intend to cover the role of Release Manager</p> |
| </section> |
| |
| <section name="Prerequisites"> |
| <ul> |
| <li>Install/Configure <code>GPG</code> - The artifacts that are deployed to the ASF central repository need to |
| be signed. To do this you will need to have a public and private keypair. There is a very good |
| <a href="http://www.sonatype.com/people/2010/01/how-to-generate-pgp-signatures-with-maven/">guide</a> that will |
| walk you though this.</li> |
| |
| <li>Install Apache Maven 2.2.1 or higher. 2.2.0 has a bug that will produce invalid checksums; we strongly |
| encourage our committers to install Apache Maven 3.0.4.</li> |
| </ul> |
| </section> |
| |
| <section name="Configuration"> |
| <subsection name="Apache Maven"> |
| <p>As of Maven 2.1.0 you can now encrypt your servers passwords. We highly recommend that you follow this |
| <a href="http://maven.apache.org/guides/mini/guide-encryption.html">guide</a> to set your master password and |
| use it to encrypt your ASF password in the next section.</p> |
| </subsection> |
| |
| <subsection name="ASF settings"> |
| <p>Using the instructions from the previous step encrypt your Sonatype password and add the following servers to |
| your <code>~/.m2/settings.xml</code> file. You may already have other servers in this file. If not just create |
| the file.</p> |
| |
| <source><![CDATA[<?xml version="1.0" encoding="UTF-8"?> |
| <settings> |
| ... |
| <servers> |
| <server> |
| <id>apache.snapshots.https</id> |
| <username>simonetripodi</username> |
| <password>{put your encrypted password here}</password> |
| </server> |
| <server> |
| <id>apache.releases.https</id> |
| <username>simonetripodi</username> |
| <password>{put your encrypted password here}</password> |
| </server> |
| </servers> |
| ... |
| <profiles> |
| <profile> |
| <id>apache</id> |
| <activation> |
| <activeByDefault>false</activeByDefault> |
| </activation> |
| <properties> |
| <mavenExecutorId>forked-path</mavenExecutorId> |
| <gpg.keyname>19FEA27D</gpg.keyname>\ |
| <!-- optional --> |
| <gpg.passphrase>your-gpg-passphrase</gpg.passphrase> |
| </properties> |
| </profile> |
| </profiles> |
| ... |
| </settings>]]></source> |
| |
| <p>You can find a <a href="https://svn.apache.org/repos/asf/any23/committers/maven/settings.xml"><code>settings.xml</code></a> |
| template in our SVN committers space</p> |
| </subsection> |
| </section> |
| |
| <section name="Release steps"> |
| <subsection name="Prepare the source for release"> |
| <ol> |
| <li>Clean up JIRA so the <b>Fix Version</b> in issues resolved since the last release includes this release |
| version correctly. Also, transition any <b>Resolved</b> issues to the <b>Closed</b> state. |
| </li> |
| <li> Update the text files in a working copy of the project root: |
| <ol> |
| <li>Update the <tt>CHANGES</tt> based on the Text release reports from JIRA.</li> |
| <li>Review and update <tt>README</tt> if needed.</li> |
| <li>Commit any changes back to Git: <pre>git add -A && git commit -m "updating files for release"</pre>.</li> |
| </ol> |
| </li> |
| <li>Perform a full build and deploy the SNAPSHOT artifacts: <pre>mvn clean deploy</pre></li> |
| </ol> |
| </subsection> |
| |
| <subsection name="Get source tree"> |
| <ol> |
| <li><strong><em>Only for new major releases (like 1.0.0 to 1.1.0):</em></strong> |
| <br/> |
| Create a sub-branch from which to make the release. |
| <br/> |
| Releasing from a branch will allow any cosmetic changes that need to be made for the release to be |
| approved to be done without preventing other more disruptive advances in the trunk from potentially |
| causing problems with the release. It also provides a future maintenance branch (like 1.0.x.) |
| <br/> |
| A branch can be made by running: |
| <pre>mvn release:branch -DbranchName=1.0.x</pre></li> |
| <li>Checkout a clean copy of the trunk/branch to release using command line Git: |
| <pre>git clone https://git-wip-us.apache.org/repos/asf/any23.git</pre></li> |
| </ol> |
| </subsection> |
| |
| <subsection name="Prepare the release"> |
| <ol> |
| <li>Do a dry run of the <tt>release:prepare</tt> step. |
| <pre>mvn release:prepare -DdryRun=true</pre> |
| |
| The dry run will not commit any changes back to SVN and gives you the opportunity to verify that the |
| release process will complete as expected. |
| |
| <p><em>If you cancel a <tt>release:prepare</tt> before it updates the pom.xml versions, then use the |
| <tt>release:clean</tt> goal to just remove the extra files that were created.</em></p></li> |
| |
| <li>Verify that the release process completed as expected: |
| <ol> |
| <li>The release plugin will create <code>pom.xml.tag</code> files which contain the changes that would |
| have been committed to SVN. The only differences between <code>pom.xml.tag</code> and its corresponding |
| <code>pom.xml</code> file should be the version |
| number.</li> |
| |
| <li>If other formatting changes have been made you should review the changes and then commit them: |
| <pre>git add -A && git commit -m "fixing formatting for release"</pre></li> |
| |
| <li>Assuming the <code>.tag</code> files look OK you may proceed and do any other validation you feel |
| necessary. The following list may be helpful: |
| <ol> |
| <li>Check <tt>release.properties</tt> and make sure that the scm properties have the right version. |
| Sometimes the scm location can be the previous version not the next version.</li> |
| |
| <li>Verify signatures: On Un*x platforms the following command can be executed: |
| <source>for file in `find . -type f -iname '*.asc'` |
| do |
| gpg --verify ${file} |
| done</source> |
| |
| You'll need to look at the output to ensure it contains only good signatures: |
| <source>gpg: Good signature from ... |
| gpg: Signature made ...</source> |
| </li> |
| </ol> |
| </li> |
| |
| <li>Once any failures or required updates have been committed to git, rollback the release prepare files: |
| <source>mvn release:rollback</source></li> |
| </ol> |
| </li> |
| |
| <li>Run the <tt>release:prepare</tt> step for real this time. You'll be prompted for the same version |
| information and optionally your GPG passphrase again. <pre>mvn release:prepare</pre> |
| </li> |
| </ol> |
| </subsection> |
| |
| <subsection name="Perform the release"> |
| <ol> |
| <li> |
| From the directory where you have launched <tt>release:prepare</tt> execute (this step will create a maven staging repository): |
| <source>mvn release:perform [-Duser.name=<your_apache_uid>]</source> |
| |
| <p> |
| <em>If your local OS userid doesn't match your Apache userid, then you'll have to also override the value |
| provided by the OS to Maven for the site-deploy step to work. This is known to work for Linux, |
| but not for Mac and unknown for Windows. |
| </em> |
| </p> |
| |
| <ol> |
| <li>Verify the staged artifacts in the Nexus repository: |
| <ol> |
| <li><a href="https://repository.apache.org/index.html">https://repository.apache.org/</a></li> |
| <li><strong>Enterprise --> Staging</strong></li> |
| <li><strong>Staging tab --> Name column --> org.apache.any23</strong></li> |
| <li>Navigate through the artifact tree and make sure that all binary, |
| <code>javadoc</code>, |
| <code>sources</code>, and |
| <code>tests</code> jars, as well as |
| <code>pom</code>s, ... have |
| <code>.asc</code> (GPG signature) and checksum files (see |
| <a href="http://people.apache.org/~henkp/repo/faq.html">Repository FAQ</a> and |
| <a href="http://www.apache.org/dev/release-signing.html#openpgp-ascii-detach-sig">Detached Signatures</a>). |
| The <code>any23-sources-dist-X.Y.tar.gz</code> and |
| <code>any23-sources-dist-X.Y.zip</code> files shall likewise have signature and checksum files. |
| </li> |
| </ol> |
| </li> |
| |
| <li>Close the Nexus staging repo: |
| <ol> |
| <li><a href="https://repository.apache.org/index.html">https://repository.apache.org/</a></li> |
| <li><strong>Enterprise --> Staging</strong></li> |
| <li><strong>Staging tab --> Name column --> org.apache.any23</strong></li> |
| <li>Right click on the open <code>org.apache.any23-XXX</code> staging repo and select |
| <strong>Close</strong>.</li> |
| </ol> |
| </li> |
| |
| <li>Add the distribution artifacts to the dev staging area at <a href="https://dist.apache.org/repos/dist/dev/any23/">https://dist.apache.org/repos/dist/dev/any23/</a> ensuring that you provide SHA512 and ASC signatures all relevant artifacts. |
| </li> |
| </ol> |
| </li> |
| |
| </ol> |
| </subsection> |
| |
| <subsection name="Vote the Release"> |
| <ol> |
| <li>Create a <code>VOTE</code> email thread on <a href="mailto:dev@any23.apache.org">dev@any23.apache.org</a> and <a href="mailto:user@any23.apache.org">user@any23.apache.org</a> |
| to record votes as replies, e.g.: |
| <pre><![CDATA[To: "Apache Any23 Developers List" <dev@any23.apache.org>, "Apache Any23 Users List" <user@any23.apache.org> |
| Subject: [VOTE] Release Apache Any23 X.Y |
| |
| Hi, |
| |
| Please VOTE on the release candidate for Apache Any23 ${latestStableRelease} |
| |
| We solved N issues: |
| http://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12312323&styleName=Html&version=X.Y |
| |
| Git source tag (r9999999): |
| https://gitbox.apache.org/repos/asf/any23.git ... |
| |
| Staging repo: |
| https://repository.apache.org/content/repositories/orgapacheany23-[YOUR REPOSITORY ID]/ |
| |
| Staging binaries: |
| https://dist.apache.org/repos/dist/dev/any23/${latestStableRelease} |
| |
| PGP release keys (signed using ABCDEFG): |
| https://dist.apache.org/repos/dist/release/any23/KEYS |
| |
| Vote will be open for 72 hours. |
| |
| [ ] +1, let's get it ruuuumbleeeeee!!! |
| [ ] +/-0, fine, but consider to fix few issues before... |
| [ ] -1, nope, because... (and please explain why)]]></pre> |
| </li> |
| |
| <li>Perform a review of the release and cast your vote. For more details on Apache releases see |
| <a href="http://www.apache.org/legal/release-policy.html">http://www.apache.org/legal/release-policy.html</a>.</li> |
| |
| <li>A <code>-1</code> vote does not necessarily mean that the vote must be redone, however it is usually a |
| good idea to rollback the release if a <code>-1</code> vote is received |
| (see "Recovering from a vetoed release" below).</li> |
| |
| <li>After the vote has been open for at least 72 hours, has at least three +1 PMC votes and no -1 votes, then |
| post the results to the vote thread, replying to the initial email prepending <code>[RESULT]</code> to the |
| original subject and include a list of every binding <code>+1</code>, <code>0</code> and <code>-1</code> vote. |
| <pre><![CDATA[To: "Apache Any23 Developers List" <dev@any23.apache.org> |
| CC: "Apache Any23 PMC List" <private@any23.apache.org> |
| Subject: [RESULT] [VOTE] Release Apache Any23 X.Y |
| |
| Hi, |
| The vote has passed with the following result : |
| |
| +1 (binding): |
| |
| Chris Mattmann |
| Lewis John Mcgibbney |
| Michele Mostarda |
| Simone Tripodi |
| |
| +1 (non binding): |
| |
| Mario Rossi |
| John Doe |
| |
| I will promote the artifacts to the central repo.]]></pre> |
| </li> |
| </ol> |
| </subsection> |
| |
| <subsection name="Finalize the Release"> |
| <ol> |
| <li>Promote the staged nexus artifacts: |
| <ol> |
| <li><a href="https://repository.apache.org/index.html">https://repository.apache.org/</a></li> |
| <li><strong>Enterprise --> Staging</strong></li> |
| <li><strong>Staging tab --> Name column --> org.apache.any23</strong></li> |
| <li>Right click on the closed <code>org.apache.any23-XXX</code> staging repo and select <strong>Release</strong>. |
| </li> |
| </ol> |
| </li> |
| |
| <li>Move the distribution artifacts from the dev staging area at <a href="https://dist.apache.org/repos/dist/dev/any23/">https://dist.apache.org/repos/dist/dev/any23/</a> to the release area at <a href="https://dist.apache.org/repos/dist/release/any23/">https://dist.apache.org/repos/dist/release/any23/</a> ensuring that you provide SHA512 and ASC signatures all relevant artifacts.</li> |
| |
| <li>Update the |
| <a href="https://issues.apache.org/jira/plugins/servlet/project-config/ANY23/versions">JIRA versions</a> |
| page to mark the version as <strong>Released</strong>, and set the date to the date that |
| the release was approved. You may also need to make a new release entry for the next release.</li> |
| </ol> |
| </subsection> |
| |
| <subsection name="Announce the Release"> |
| <p>Make an announcement about the release on the |
| <a href="mailto:user@any23.apache.org">any23-user</a>, |
| <a href="mailto:dev@any23.apache.org">any23-dev</a>, |
| <a href="https://groups.google.com/d/forum/web-data-commons">Web Data Commons - Google Group</a>, |
| maybe some other relevant W3C and/or OGC groups, and |
| <a href="mailto:announce@apache.org">announce@apache.org</a> lists as per |
| <a href="http://www.apache.org/foundation/mailinglists.html#foundation-announce">the Apache Announcement Mailing Lists page</a> |
| </p> |
| |
| <pre><![CDATA[From: YOUR_APACHE_USERNAME@apache.org |
| To: "ASF Announcements" <announce@apache.org>, "Apache Any23 Users List" <user@any23.apache.org> |
| CC: "Apache Any23 Developers List" <dev@any23.apache.org> |
| Subject: [ANNOUNCE] Apache Any23 X.Y |
| |
| The Apache Any23 Team is pleased to announce the release of Apache Any23 ${latestStableRelease}. |
| |
| Apache Anything To Triples (Any23) is a library, a web service and a command line tool that |
| extracts structured data in RDF format from a variety of Web documents. |
| |
| Release Notes: https://github.com/apache/any23/blob/any23-${latestStableRelease}/RELEASE-NOTES.txt |
| |
| Download: http://any23.apache.org/download.html |
| |
| Maven Artifacts: https://s.apache.org/mwOE |
| |
| DOAP: https://github.com/apache/any23-committers/blob/master/doap_Any23.rdf |
| |
| Have Fun, |
| (Lewis), on behalf of the Apache Any23 PMC |
| N.B. The release artifacts can take a bit of time to reach the distribution servers, please be patient.]]></pre> |
| </subsection> |
| </section> |
| |
| <section name="Recovering from a vetoed release"> |
| <ol> |
| <li>Reply to the initial vote email prepending <code>[CANCELED]</code> to the original subject.</li> |
| <li>Rollback the version upgrades in trunk by <em>either</em>: |
| <ol> |
| <li>Restore the 0.1-rc1.tar.gz and run <source>mvn release:rollback</source> <em>or</em> |
| manually revert the versions in trunk to the prior version and commit</li> |
| </ol> |
| </li> |
| |
| <li>Delete the git tag created by the <code>release:perform</code> step (N.B. replace ${tag_name} with the actual tag name): |
| <pre>git tag -d ${tag_name} && git push origin :refs/tags/${tag_name}</pre></li> |
| |
| <li>Drop the Nexus staging repo: |
| <ol> |
| <li><a href="https://repository.apache.org/index.html">https://repository.apache.org/</a></li> |
| <li><strong>Enterprise --> Staging</strong></li> |
| <li><strong>Staging tab --> Name column --> org.apache.any23</strong></li> |
| <li>Right click on the closed <code>org.apache.any23-XXX</code> staging repo and select <strong>Drop</strong>. |
| </li> |
| </ol> |
| </li> |
| |
| <li>Make the required updates that caused the vote to be canceled.</li> |
| |
| <li>Spin another release attempt!</li> |
| </ol> |
| </section> |
| </body> |
| |
| </document> |