Repository: incubator-guacamole-website Updated Branches: refs/heads/asf-site 2705de245 -> a214eefe9
Deploy release procedure documentation. Project: http://git-wip-us.apache.org/repos/asf/incubator-guacamole-website/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-guacamole-website/commit/a214eefe Tree: http://git-wip-us.apache.org/repos/asf/incubator-guacamole-website/tree/a214eefe Diff: http://git-wip-us.apache.org/repos/asf/incubator-guacamole-website/diff/a214eefe Branch: refs/heads/asf-site Commit: a214eefe9354f326687b54e08d79f80ee6311bea Parents: 2705de2 Author: Michael Jumper <[email protected]> Authored: Mon Mar 13 22:46:13 2017 -0700 Committer: Michael Jumper <[email protected]> Committed: Mon Mar 13 22:46:13 2017 -0700 ---------------------------------------------------------------------- content/api-documentation/index.html | 8 + content/guac-style/index.html | 8 + content/index.html | 8 + content/open-source/index.html | 17 + content/pull-requests/index.html | 8 + content/release-procedures-part1/index.html | 319 ++++++++++++ content/release-procedures-part2/index.html | 558 +++++++++++++++++++++ content/release-procedures-part3/index.html | 305 +++++++++++ content/release-procedures-part4/index.html | 285 +++++++++++ content/releases/0.8.3/index.html | 8 + content/releases/0.8.4/index.html | 8 + content/releases/0.9.0/index.html | 8 + content/releases/0.9.1/index.html | 8 + content/releases/0.9.10-incubating/index.html | 8 + content/releases/0.9.11-incubating/index.html | 8 + content/releases/0.9.2/index.html | 8 + content/releases/0.9.3/index.html | 8 + content/releases/0.9.4/index.html | 8 + content/releases/0.9.5/index.html | 8 + content/releases/0.9.6/index.html | 8 + content/releases/0.9.7/index.html | 8 + content/releases/0.9.8/index.html | 8 + content/releases/0.9.9/index.html | 8 + content/releases/index.html | 8 + content/support/index.html | 8 + 25 files changed, 1644 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-guacamole-website/blob/a214eefe/content/api-documentation/index.html ---------------------------------------------------------------------- diff --git a/content/api-documentation/index.html b/content/api-documentation/index.html index e01ee8d..2f5eb2a 100644 --- a/content/api-documentation/index.html +++ b/content/api-documentation/index.html @@ -27,6 +27,14 @@ + + + + + + + + <li><a href="/releases/" http://git-wip-us.apache.org/repos/asf/incubator-guacamole-website/blob/a214eefe/content/guac-style/index.html ---------------------------------------------------------------------- diff --git a/content/guac-style/index.html b/content/guac-style/index.html index 20525b7..5afd984 100644 --- a/content/guac-style/index.html +++ b/content/guac-style/index.html @@ -27,6 +27,14 @@ + + + + + + + + <li><a href="/releases/" http://git-wip-us.apache.org/repos/asf/incubator-guacamole-website/blob/a214eefe/content/index.html ---------------------------------------------------------------------- diff --git a/content/index.html b/content/index.html index 9a77bb4..f0fea04 100644 --- a/content/index.html +++ b/content/index.html @@ -27,6 +27,14 @@ + + + + + + + + <li><a href="/releases/" http://git-wip-us.apache.org/repos/asf/incubator-guacamole-website/blob/a214eefe/content/open-source/index.html ---------------------------------------------------------------------- diff --git a/content/open-source/index.html b/content/open-source/index.html index c4f001b..cae97ef 100644 --- a/content/open-source/index.html +++ b/content/open-source/index.html @@ -27,6 +27,14 @@ + + + + + + + + <li><a href="/releases/" @@ -189,6 +197,15 @@ a committer not otherwise directly involved in those changes.</p> <li><a href="/guac-style/">Style guidelines</a></li> </ul> +<h3 id="release-procedures">Release procedures:</h3> + +<ul> + <li><a href="/release-procedures-part1/">Beginning the release process</a></li> + <li><a href="/release-procedures-part2/">Producing a release candidate</a></li> + <li><a href="/release-procedures-part3/">Promoting a release candidate to release</a></li> + <li><a href="/release-procedures-part4/">Announcing the release</a></li> +</ul> + <h2 id="ppmc-members">PPMC members</h2> <p>The Apache Guacamole PPMC is responsible for project oversight. PPMC members http://git-wip-us.apache.org/repos/asf/incubator-guacamole-website/blob/a214eefe/content/pull-requests/index.html ---------------------------------------------------------------------- diff --git a/content/pull-requests/index.html b/content/pull-requests/index.html index 000ade7..6284bef 100644 --- a/content/pull-requests/index.html +++ b/content/pull-requests/index.html @@ -27,6 +27,14 @@ + + + + + + + + <li><a href="/releases/" http://git-wip-us.apache.org/repos/asf/incubator-guacamole-website/blob/a214eefe/content/release-procedures-part1/index.html ---------------------------------------------------------------------- diff --git a/content/release-procedures-part1/index.html b/content/release-procedures-part1/index.html new file mode 100644 index 0000000..7a22ca5 --- /dev/null +++ b/content/release-procedures-part1/index.html @@ -0,0 +1,319 @@ +<!DOCTYPE html> +<html xmlns="http://www.w3.org/1999/xhtml"> + + <head> + <link rel="stylesheet" href="/styles/main.css"> + <link rel="icon" type="image/png" href="/images/guacamole-logo-64.png"/> + <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no, target-densitydpi=device-dpi"/> + <meta charset="UTF-8"/> + <title>Apache Guacamole (incubating): Beginning the release process</title> +</head> + + + <body> + + <!-- Header --> +<div id="header"> + <h1><a href="/">Apache Guacamole (incubating)</a></h1> + <ul id="navigation" class="menu"> + + + + + + + + + + + + + + + + + + + + <li><a + + href="/releases/" + + + class="download" + >Downloads</a></li> + + + + <li><a + + href="https://github.com/search?utf8=%E2%9C%93&q=repo%3Aapache%2Fincubator-guacamole-server+repo%3Aapache%2Fincubator-guacamole-client+repo%3Aapache%2Fincubator-guacamole-website&type=Repositories&ref=searchresults" + + + class="github" + >GitHub</a></li> + + + + <li><a + + href="/api-documentation/" + + >API</a></li> + + + + <li><a + + href="https://issues.apache.org/jira/browse/GUACAMOLE/" + + >JIRA</a></li> + + + + <li><a + + href="/doc/gug/" + + >Manual</a></li> + + + + <li><a + + href="/open-source/" + + >Contributing</a></li> + + + + <li><a + + href="/support/" + + >Help / Support</a></li> + + + </ul> +</div> + + + <!-- Content --> + <div id="page"> + <div id="content"> + <h1>Beginning the release process</h1> + +<ul id="markdown-toc"> + <li><a href="#discuss-thread" id="markdown-toc-discuss-thread">Create a discussion thread for the release</a></li> + <li><a href="#release-branch" id="markdown-toc-release-branch">Create the release branch</a></li> + <li><a href="#bump-version" id="markdown-toc-bump-version">Bump version numbers</a> <ul> + <li><a href="#bumping-the-version-of-incubator-guacamole-server" id="markdown-toc-bumping-the-version-of-incubator-guacamole-server">Bumping the version of <code class="highlighter-rouge">incubator-guacamole-server</code></a></li> + <li><a href="#bumping-the-version-of-incubator-guacamole-client" id="markdown-toc-bumping-the-version-of-incubator-guacamole-client">Bumping the version of <code class="highlighter-rouge">incubator-guacamole-client</code></a></li> + <li><a href="#updating-incubator-guacamole-manual-accordingly" id="markdown-toc-updating-incubator-guacamole-manual-accordingly">Updating <code class="highlighter-rouge">incubator-guacamole-manual</code> accordingly</a></li> + </ul> + </li> +</ul> + +<h2 id="discuss-thread">Create a discussion thread for the release</h2> + +<p>Beginning a new release candidate should not be a unilateral decision. There is +no requirement that an official vote be held prior to starting a release +candidate, but there needs to be some discussion via a <code class="highlighter-rouge">[DISCUSS]</code> thread on +<a href="mailto:dev@guacamole.incubator.apache.org">dev@guacamole.incubator.apache.org</a> to gauge whether the time is right for a +release.</p> + +<p>Development of Apache Guacamole is not halted when a release is being prepared, +but the main development tree is forked. With this in mind, it is best to only +begin the release process when:</p> + +<ul> + <li>The development community agrees (or, more likely, doesnât disagree) that +the scope of the release can be finalized (no new features/fixes/etc. will +be considered for the release).</li> + <li>The non-release development line is unlikely to diverge so far from the +release development line that it is detrimental to the project.</li> +</ul> + +<p>All issues which should be part of the release must be tagged as such within +JIRA (their âFix Versionâ field should point to the release).</p> + +<p>Example: <a href="http://mail-archives.apache.org/mod_mbox/incubator-guacamole-dev/201701.mbox/%3CCALKeL-OO7MMpvtZkFXbkrkRKVokKHgdANTpMVceaH41MnUu7Eg%40mail.gmail.com%3E">the [DISCUSS] thread for 0.9.11-incubating</a></p> + +<h2 id="release-branch">Create the release branch</h2> + +<p>When a release has been decided, release-specific branches need to be created +to isolate the development line of the release from that of the main <code class="highlighter-rouge">master</code> +branch. This allows development on <code class="highlighter-rouge">master</code> to continue, while allowing the +contents of the release to remain within the agreed scope.</p> + +<p>Create a new <code class="highlighter-rouge">staging/[VERSION]</code> branch for each of the following repositories, +where <code class="highlighter-rouge">[VERSION]</code> is the version of the upcoming release, such as +â0.9.11-incubatingâ:</p> + +<ul> + <li><a href="https://github.com/apache/incubator-guacamole-client"><code class="highlighter-rouge">incubator-guacamole-client</code></a></li> + <li><a href="https://github.com/apache/incubator-guacamole-server"><code class="highlighter-rouge">incubator-guacamole-server</code></a></li> + <li><a href="https://github.com/apache/incubator-guacamole-manual"><code class="highlighter-rouge">incubator-guacamole-manual</code></a></li> +</ul> + +<p>Note that <em>the +<a href="https://github.com/apache/incubator-guacamole-website"><code class="highlighter-rouge">incubator-guacamole-website</code></a> +repository does not get a release branch</em>. The website points to release +artifacts, etc. but is not itself part of the release.</p> + +<p>Once the release branch is made, all release-specific changes must be made +against the release branch <em>only</em>. Pull requests for changes related to the +release must be merged directly to the release branch, with the release branch +continually merged back to <code class="highlighter-rouge">master</code> with each such change.</p> + +<h2 id="bump-version">Bump version numbers</h2> + +<p>The version numbers of Apache Guacamoleâs various components do not get bumped +until a release is being prepared. With the exception of any in-scope changes +which are in-progress (which should usually be minimal), bumping the version +numbers is one of the final development steps before the first release +candidate.</p> + +<p>Only the version numbers of modified components should be bumped. That said, +bumping the version numbers of some components will result in their +dependencies being modified, and thus bumped as well. For example:</p> + +<ul> + <li>If <code class="highlighter-rouge">guacamole-ext</code> is modified, all extensions and <code class="highlighter-rouge">guacamole</code> itself will +need to depend on the new version of <code class="highlighter-rouge">guacamole-ext</code>.</li> + <li>If <code class="highlighter-rouge">guacamole</code> is modified (this has been the case for all past releases), +all extensions will need to be modified to specify the correct version +number in their <code class="highlighter-rouge">guac-manifest.json</code>.</li> +</ul> + +<h3 id="bumping-the-version-of-incubator-guacamole-server">Bumping the version of <code class="highlighter-rouge">incubator-guacamole-server</code></h3> + +<p>The main locations which need modification within <code class="highlighter-rouge">incubator-guacamole-server</code> +are:</p> + +<ul> + <li><code class="highlighter-rouge">configure.ac</code></li> + <li><code class="highlighter-rouge">doc/Doxyfile</code> (if libguac has been modified)</li> + <li>libtool version-info within <code class="highlighter-rouge">src/libguac/Makefile.am</code> (if libguac has been +modified)</li> + <li><code class="highlighter-rouge">bin/guacctl</code></li> + <li>The manpages for <code class="highlighter-rouge">guacd</code>, <code class="highlighter-rouge">guacenc</code>, and <code class="highlighter-rouge">guacd.conf</code>.</li> +</ul> + +<p>Example: <a href="https://github.com/apache/incubator-guacamole-server/pull/34">the pull request for bumping <code class="highlighter-rouge">incubator-guacamole-server</code> to 0.9.11-incubating</a></p> + +<h3 id="bumping-the-version-of-incubator-guacamole-client">Bumping the version of <code class="highlighter-rouge">incubator-guacamole-client</code></h3> + +<p>The main locations which need modification within <code class="highlighter-rouge">incubator-guacamole-client</code> +are:</p> + +<ul> + <li>The <code class="highlighter-rouge">pom.xml</code> of any modified project, as well as any project which depends +on a modified project (and is thus modified itself). <strong>Donât forget the +example project in <code class="highlighter-rouge">doc/guacamole-example</code>!</strong></li> + <li>The <code class="highlighter-rouge">guac-manifest.json</code> of any extension.</li> + <li>The <code class="highlighter-rouge">Guacamole.API_VERSION</code> value declared within <code class="highlighter-rouge">Version.js</code> (if +<code class="highlighter-rouge">guacamole-common-js</code> has been modified).</li> +</ul> + +<p>Example: <a href="https://github.com/apache/incubator-guacamole-client/pull/103">the pull request for bumping <code class="highlighter-rouge">incubator-guacamole-client</code> to 0.9.11-incubating</a></p> + +<h3 id="updating-incubator-guacamole-manual-accordingly">Updating <code class="highlighter-rouge">incubator-guacamole-manual</code> accordingly</h3> + +<p>The manual (<code class="highlighter-rouge">incubator-guacamole-manual</code>) will also need to be updated to point +to the latest versions of everything. In most cases, this involves simply +replacing the old version number with the new version number wherever it +occurs, but the process needs to be selective if not all components have been +modified. In particular, watch out for:</p> + +<ul> + <li>The need to document new database schema upgrade scripts.</li> + <li>The need to update the webapp, authentication, and protocol plugin +tutorials.</li> +</ul> + +<p>Example: <a href="https://github.com/apache/incubator-guacamole-manual/pull/23">the pull request for bumping <code class="highlighter-rouge">incubator-guacamole-manual</code> to 0.9.11-incubating</a></p> + + + + + </div> + </div> + + <!-- Footer --> +<div id="footer"> + + <!-- Copyrights --> + <p class="copyright"> + Copyright © 2016 <a href="http://www.apache.org/">The Apache + Software Foundation</a>, Licensed under the <a + href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, + Version 2.0</a>. The HTML5 shield logo has been modified from the + original work of the <a + href="http://www.w3.org/">World Wide Web Constortium (W3C)</a>, + which is licensed under the <a + href="http://creativecommons.org/licenses/by/3.0/">Creative + Commons Attribution 3.0</a> license. + </p> + + <!-- Trademarks --> + <p class="trademarks"> + Apache and the Apache feather logo are trademarks of The Apache + Software Foundation. + </p> + + <!-- Incubation disclaimer --> + <p class="disclaimer"> + Apache Guacamole is an effort undergoing Incubation at The Apache + Software Foundation (ASF), sponsored by the Incubator. Incubation is + required of all newly accepted projects until a further review + indicates that the infrastructure, communications, and decision making + process have stabilized in a manner consistent with other successful + ASF projects. While incubation status is not necessarily a reflection + of the completeness or stability of the code, it does indicate that the + project has yet to be fully endorsed by the ASF. + </p> + +</div> + + + <!-- Google Analytics --> + <script type="text/javascript"> + (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ + (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), + m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) + })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); + + ga('create', 'UA-75289145-1', 'auto'); + ga('send', 'pageview'); + </script> + + <!-- Download tracking helper function --> + <script type="text/javascript"> + + /** + * Signals Google Analytics that a file is being downloaded (or, at + * least, we expect that it is). Note that it is not possible to + * determine this with 100% certainty without grepping server logs, + * but this should still at least help gauge interest/usage. + * + * @param {String} action + * A human-readable string describing the user event which + * occurred to initiate the download. + * + * @param {String} filename + * The filename of the file being downloaded. + */ + function trackDownload(action, filename) { + ga('send', 'event', { + eventCategory : 'Download', + eventAction : action, + eventLabel : filename, + transport : 'beacon' + }); + } + + </script> + + </body> +</html> http://git-wip-us.apache.org/repos/asf/incubator-guacamole-website/blob/a214eefe/content/release-procedures-part2/index.html ---------------------------------------------------------------------- diff --git a/content/release-procedures-part2/index.html b/content/release-procedures-part2/index.html new file mode 100644 index 0000000..4879426 --- /dev/null +++ b/content/release-procedures-part2/index.html @@ -0,0 +1,558 @@ +<!DOCTYPE html> +<html xmlns="http://www.w3.org/1999/xhtml"> + + <head> + <link rel="stylesheet" href="/styles/main.css"> + <link rel="icon" type="image/png" href="/images/guacamole-logo-64.png"/> + <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no, target-densitydpi=device-dpi"/> + <meta charset="UTF-8"/> + <title>Apache Guacamole (incubating): Producing a release candidate</title> +</head> + + + <body> + + <!-- Header --> +<div id="header"> + <h1><a href="/">Apache Guacamole (incubating)</a></h1> + <ul id="navigation" class="menu"> + + + + + + + + + + + + + + + + + + + + <li><a + + href="/releases/" + + + class="download" + >Downloads</a></li> + + + + <li><a + + href="https://github.com/search?utf8=%E2%9C%93&q=repo%3Aapache%2Fincubator-guacamole-server+repo%3Aapache%2Fincubator-guacamole-client+repo%3Aapache%2Fincubator-guacamole-website&type=Repositories&ref=searchresults" + + + class="github" + >GitHub</a></li> + + + + <li><a + + href="/api-documentation/" + + >API</a></li> + + + + <li><a + + href="https://issues.apache.org/jira/browse/GUACAMOLE/" + + >JIRA</a></li> + + + + <li><a + + href="/doc/gug/" + + >Manual</a></li> + + + + <li><a + + href="/open-source/" + + >Contributing</a></li> + + + + <li><a + + href="/support/" + + >Help / Support</a></li> + + + </ul> +</div> + + + <!-- Content --> + <div id="page"> + <div id="content"> + <h1>Producing a release candidate</h1> + +<ul id="markdown-toc"> + <li><a href="#tag-rc" id="markdown-toc-tag-rc">Tag the release candidate</a></li> + <li><a href="#upload-rc" id="markdown-toc-upload-rc">Sign and upload release artifacts</a> <ul> + <li><a href="#artifacts" id="markdown-toc-artifacts">Normal source / binary artifacts</a></li> + <li><a href="#staging-maven" id="markdown-toc-staging-maven">Maven artifacts</a></li> + <li><a href="#docker-images" id="markdown-toc-docker-images">Docker images</a></li> + </ul> + </li> + <li><a href="#upload-docs" id="markdown-toc-upload-docs">Upload documentation and release notes</a></li> + <li><a href="#ppmc-vote" id="markdown-toc-ppmc-vote">Create the PPMC <code class="highlighter-rouge">[VOTE]</code> thread</a></li> + <li><a href="#ipmc-vote" id="markdown-toc-ipmc-vote">Create the IPMC <code class="highlighter-rouge">[VOTE]</code> thread</a></li> +</ul> + +<h2 id="tag-rc">Tag the release candidate</h2> + +<p>Once <a href="/release-procedures-part1/">the release process has begun</a> and the +release has been <strong>thoroughly tested</strong>, the git repositories must be tagged for +a new release candidate. These tags are made off the release branch (<em>not</em> off +<code class="highlighter-rouge">master</code>), and are in the format <code class="highlighter-rouge">[VERSION]-RC[N]</code>, where <code class="highlighter-rouge">[VERSION]</code> is the +version of the upcoming release and <code class="highlighter-rouge">[N]</code> is the number of the release +candidate:</p> + +<div class="highlighter-rouge"><pre class="highlight"><code>$ git tag -m "Release 0.9.11-incubating - RC1." 0.9.11-incubating-RC1 +$ git push upstream 0.9.11-incubating-RC1 +</code></pre> +</div> + +<p>Each repository relevant to the release must be tagged. At this point, this +will be every repository that has a release branch. This <em>never</em> includes +<code class="highlighter-rouge">incubator-guacamole-website</code>, which is not part of the release.</p> + +<p>Example: <a href="https://git1-us-west.apache.org/repos/asf?p=incubator-guacamole-server.git;a=tag;h=6c2bc47a93899cf00a869e7a2a5416fd5b081ed3">the +â0.9.10-incubating-RC3â tag on +incubator-guacamole-server</a></p> + +<h2 id="upload-rc">Sign and upload release artifacts</h2> + +<p>Create and sign release artifacts for all modified components, uploading to +Apacheâs dev dist via SVN (<em>NOT</em> the release dist), grouping the artifacts +within <code class="highlighter-rouge">binary/</code> and <code class="highlighter-rouge">source/</code> subdirectories of a top-level, RC-specific +subdirectory (named in the same <code class="highlighter-rouge">[VERSION]-RC[N]</code> format as the <a href="#tag-rc">repository +tag</a>).</p> + +<p>Creating the source and binary artifacts involves building the components of +Guacamole normally. The process for producing signatures and uploading the +artifacts will depend on whether the artifacts are being deployed to a Maven +repository.</p> + +<p><strong>If your PGP key is not already present in the <code class="highlighter-rouge">KEYS</code> file, you will need to +add it prior to signing artifacts.</strong></p> + +<h3 id="artifacts">Normal source / binary artifacts</h3> + +<p>There are currently two source artifacts:</p> + +<ul> + <li><code class="highlighter-rouge">guacamole-client-[VERSION].tar.gz</code></li> + <li><code class="highlighter-rouge">guacamole-server-[VERSION].tar.gz</code></li> +</ul> + +<p><code class="highlighter-rouge">guacamole-client-[VERSION].tar.gz</code> is created automatically when +<code class="highlighter-rouge">incubator-guacamole-client</code> is built with <code class="highlighter-rouge">mvn clean install</code>. +<code class="highlighter-rouge">guacamole-server-[VERSION].tar.gz</code> can be built manually by running <code class="highlighter-rouge">make +dist</code> within <code class="highlighter-rouge">incubator-guacamole-server</code>. The <code class="highlighter-rouge">Makefile</code>, etc. will need to +have been generated first by running <code class="highlighter-rouge">autoreconf -fi</code> followed by +<code class="highlighter-rouge">./configure</code>.</p> + +<p><code class="highlighter-rouge">incubator-guacamole-server</code> does not provide any convenience binaries, but +<code class="highlighter-rouge">incubator-guacamole-client</code> does:</p> + +<ul> + <li><code class="highlighter-rouge">guacamole-[VERSION].war</code></li> + <li><code class="highlighter-rouge">guacamole-auth-duo-[VERSION].tar.gz</code></li> + <li><code class="highlighter-rouge">guacamole-auth-header-[VERSION].tar.gz</code></li> + <li><code class="highlighter-rouge">guacamole-auth-jdbc-[VERSION].tar.gz</code></li> + <li><code class="highlighter-rouge">guacamole-auth-ldap-[VERSION].tar.gz</code></li> + <li><code class="highlighter-rouge">guacamole-auth-noauth-[VERSION].tar.gz</code></li> +</ul> + +<p>Each of the above can be found within the <code class="highlighter-rouge">incubator-guacamole-client</code> source +tree once it has been built with <code class="highlighter-rouge">mvn clean install</code>.</p> + +<p>Producing the required MD5 and SHA256 checksums for a given artifact is very +straightforward:</p> + +<div class="highlighter-rouge"><pre class="highlight"><code>$ md5sum FILENAME > FILENAME.md5 +$ sha256sum FILENAME > FILENAME.sha +</code></pre> +</div> + +<p>To produce the PGP signature for a given artifact, use <code class="highlighter-rouge">gpg</code>, as documented in +Apacheâs own <a href="https://www.apache.org/dev/release-signing.html#openpgp-ascii-detach-sig">release signing documentation</a>:</p> + +<div class="highlighter-rouge"><pre class="highlight"><code>$ gpg --armor --output FILENAME.asc --detach-sig FILENAME +</code></pre> +</div> + +<p>Example: <a href="https://dist.apache.org/repos/dist/dev/incubator/guacamole/?p=17053">the SVN commit uploading RC1 of 0.9.10-incubating (r17053)</a></p> + +<h3 id="staging-maven">Maven artifacts</h3> + +<p>The following Maven subprojects of <code class="highlighter-rouge">incubator-guacamole-client</code> must be +uploaded to Apacheâs Nexus:</p> + +<ul> + <li><code class="highlighter-rouge">guacamole-common</code> (<code class="highlighter-rouge">.jar</code>, source, and javadoc)</li> + <li><code class="highlighter-rouge">guacamole-common-js</code> (<code class="highlighter-rouge">.zip</code> only)</li> + <li><code class="highlighter-rouge">guacamole-ext</code> (<code class="highlighter-rouge">.jar</code>, source, and javadoc)</li> +</ul> + +<p>Uploading to <a href="https://repository.apache.org/">Apacheâs Nexus repository</a> +requires that your username and password be stored within your Maven +<code class="highlighter-rouge">~/.m2/settings.xml</code>:</p> + +<div class="highlighter-rouge"><pre class="highlight"><code><settings> + <servers> + <server> + <id>apache</id> + <username>YOUR-USERNAME</username> + <password>YOUR-PASSWORD</password> + </server> + </servers> +</settings> +</code></pre> +</div> + +<p>The ID of the server is arbitrary but must match the <code class="highlighter-rouge">repositoryId</code> value given +to Maven. The examples here use <code class="highlighter-rouge">apache</code>. Most artifacts are Java <code class="highlighter-rouge">.jar</code> files +with corresponding JavaDoc and source jars. Each of these must be signed and +uploaded individually using the <code class="highlighter-rouge">gpg:sign-and-deploy-file</code> mojo:</p> + +<div class="highlighter-rouge"><pre class="highlight"><code>$ mvn gpg:sign-and-deploy-file \ + -Durl=https://repository.apache.org/service/local/staging/deploy/maven2 \ + -DrepositoryId=apache -DpomFile=guacamole-common/pom.xml \ + -Dfile=guacamole-common/target/guacamole-common-0.9.10-incubating.jar + +$ mvn gpg:sign-and-deploy-file \ + -Durl=https://repository.apache.org/service/local/staging/deploy/maven2 \ + -DrepositoryId=apache -DpomFile=guacamole-common/pom.xml \ + -Dfile=guacamole-common/target/guacamole-common-0.9.10-incubating-javadoc.jar \ + -Dclassifier=javadoc + +$ mvn gpg:sign-and-deploy-file \ + -Durl=https://repository.apache.org/service/local/staging/deploy/maven2 \ + -DrepositoryId=apache -DpomFile=guacamole-common/pom.xml \ + -Dfile=guacamole-common/target/guacamole-common-0.9.10-incubating-sources.jar \ + -Dclassifier=sources +</code></pre> +</div> + +<p>The above will need to be done for both <code class="highlighter-rouge">guacamole-common</code> and <code class="highlighter-rouge">guacamole-ext</code>, +assuming both have been modified for the release. For JavaScript artifacts like +<code class="highlighter-rouge">guacamole-common-js</code> which produce a single <code class="highlighter-rouge">.zip</code> file, only the <code class="highlighter-rouge">.zip</code> file +needs to be uploaded. The command for this is slightly different:</p> + +<div class="highlighter-rouge"><pre class="highlight"><code>$ mvn gpg:sign-and-deploy-file \ + -Durl=https://repository.apache.org/service/local/staging/deploy/maven2 \ + -DrepositoryId=apache \ + -DpomFile=guacamole-common-js/pom.xml \ + -Dfile=guacamole-common-js/target/guacamole-common-js-0.9.10-incubating.zip \ + -Dpackaging=zip +</code></pre> +</div> + +<p>Once everything has been uploaded, log into Apacheâs Nexus at +https://repository.apache.org/, locate the staging repository which was +automatically created, and verify things look as expected. Assuming everything +looks good, select close staging repository to make it publicly available; the +URL of the repository will need to be provided in the various VOTE emails.</p> + +<h3 id="docker-images">Docker images</h3> + +<p>Both guacamole-client and guacamole-server have associated Docker images which +are produced along with releases as a form of convenience binaries. These +images are <code class="highlighter-rouge">guacamole/guacamole</code> and <code class="highlighter-rouge">guacamole/guacd</code> respectively, both +hosted under the Apache Guacamole projectâs <a href="http://guacamole.incubator.apache.org/releases/">Docker Hub +account</a>.</p> + +<p>When building the Docker images, keep in mind:</p> + +<ol> + <li>You should run <code class="highlighter-rouge">git clean -xfd .</code> first, to ensure the build context +uploaded to the Docker daemon is minimal, and that future builds of the +exact same source will not result in different images (this serves as a +pre-release sanity check).</li> + <li>You <strong>MUST NOT</strong> update the <code class="highlighter-rouge">latest</code> tag on Docker Hub, as this must only +point to the latest stable release.</li> + <li>When building a Docker image with the intent of pushing to a specific tag, +the Docker image must be built with that tag.</li> +</ol> + +<p>For example, to build the <code class="highlighter-rouge">guacamole/guacamole</code> Docker image for the current +release candidate, from within the top-level <code class="highlighter-rouge">incubator-guacamole-client</code> +directory:</p> + +<div class="highlighter-rouge"><pre class="highlight"><code>$ git clean -xfd . +$ sudo docker build -t guacamole/guacamole:0.9.11-incubating-RC1 . +$ sudo docker push guacamole/guacamole:0.9.11-incubating-RC1 +</code></pre> +</div> + +<h2 id="upload-docs">Upload documentation and release notes</h2> + +<p>The draft release notes and updated documentation both need to be uploaded to +the website prior to <a href="#ppmc-vote">calling the PPMC vote</a>. These changes should +be handled like any other website changes - via pull requests against the +<code class="highlighter-rouge">incubator-guacamole-website</code> repository. <strong>DO NOT UPDATE THE TOP-LEVEL +DOCUMENTATION SYMBOLIC LINKS!</strong> The top-level symbolic links in the <code class="highlighter-rouge">doc/</code> +directory of <code class="highlighter-rouge">incubator-guacamole-website</code> point to the documentation for the +latest release, and are thus only updated once the release is complete.</p> + +<p>Take a look at past release notes to get an idea for the expected format. There +is no hard-set requirement for the format of release notes, but things should +be as consistent as possible. Use JIRA to query the issues which have been +completed for the release, manually excluding issues which relate only to +other issues already in the release (bug fixes for a release-specific change, +for example).</p> + +<p>Because the script that handles updating project websites often fails to update +for large commits (see <a href="https://issues.apache.org/jira/browse/INFRA-10751">INFRA-10751</a>), uploading documentation first, waiting a bit, and <em>then</em> uploading +the release notes has a greater chance of working. Splitting the two uploads +also helps facilitate code review, as the release notes will be buried in a sea +of auto-generated HTML otherwise.</p> + +<p>Examples:</p> + +<ul> + <li><a href="https://github.com/apache/incubator-guacamole-website/blob/67adf0802701d696f9dc1a90229da694f4cebbaa/_releases/0.9.10-incubating.md">The draft +release notes for 0.9.10-incubating-RC3</a></li> + <li><a href="https://github.com/apache/incubator-guacamole-website/tree/master/doc/0.9.10-incubating">The updated documentation for 0.9.10-incubating</a></li> +</ul> + +<h2 id="ppmc-vote">Create the PPMC <code class="highlighter-rouge">[VOTE]</code> thread</h2> + +<p>Once the above has been completed, request a vote with an email to +<a href="mailto:dev@guacamole.incubator.apache.org">dev@guacamole.incubator.apache.org</a> titled <code class="highlighter-rouge">[VOTE] Release Apache Guacamole +[VERSION] (RC[N])</code>, containing the following:</p> + +<div class="highlighter-rouge"><pre class="highlight"><code>Hello all, + +The [NTH] release candidate for Apache Guacamole [VERSION] has been +uploaded and is ready for VOTE. The draft release notes (along with links +to artifacts, signatures/checksums, and updated documentation) can be found +here: + +http://guacamole.incubator.apache.org/releases/[VERSION]/ + +The git tag for all relevant repositories is "[VERSION]-RC[N]": + +https://github.com/apache/incubator-guacamole-client/tree/[VERSION]-RC[N] +https://github.com/apache/incubator-guacamole-server/tree/[VERSION]-RC[N] +https://github.com/apache/incubator-guacamole-manual/tree/[VERSION]-RC[N] + +Build instructions are included in the manual, which is part of the updated +documentation referenced above. For convenience: + +http://guacamole.incubator.apache.org/doc/[VERSION]/gug/installing-guacamole.html + +Maven artifacts for guacamole-common, guacamole-common-js, and +guacamole-ext can be found in the following staging repository: + +[STAGING REPOSITORY URL] + +Source and binary distributions (also linked within the release notes): + +https://dist.apache.org/repos/dist/dev/incubator/guacamole/[VERSION]-RC[N]/ + +Artifacts have been signed with the "[EMAIL]" key listed in: + +https://dist.apache.org/repos/dist/dev/incubator/guacamole/KEYS + +Please review and vote: + +[ ] +1 Approve the release +[ ] -1 Don't approve the release (please provide specific comments) + +This vote will be open for at least 72 hours. + +Here is my +1. + +Thanks, + +[YOU] +</code></pre> +</div> + +<p>Where <code class="highlighter-rouge">[VERSION]</code> is the release version, <code class="highlighter-rouge">[N]</code> and <code class="highlighter-rouge">[NTH]</code> are the number of +the release candidate, <code class="highlighter-rouge">[STAGING REPOSITORY URL]</code> is the URL of <a href="#staging-maven">the staging +repository created earlier</a>, <code class="highlighter-rouge">[EMAIL]</code> is the email address +associated with the PGP key used to sign the release artifacts, and <code class="highlighter-rouge">[YOU]</code> is +your name. Obviously, alter the email as necessary if the scope of the release +is different.</p> + +<p>Please note that, though community input is welcome, <em>only PPMC votes count +toward the required three â+1â votes</em>.</p> + +<p>Example: <a href="http://mail-archives.apache.org/mod_mbox/incubator-guacamole-dev/201612.mbox/%3CCALKeL-PKQxOYqZCvhH6_ZF33Zo_LUZjLVZzTh%2B0VRipgsNxQ1g%40mail.gmail.com%3E">the 0.9.10-incubating-RC3 PPMC VOTE email</a></p> + +<p>If any release-blocking issues are discovered, the vote must be canceled and +development must resume, followed by another release candidate (prepared as +above) intended to address those issues.</p> + +<h2 id="ipmc-vote">Create the IPMC <code class="highlighter-rouge">[VOTE]</code> thread</h2> + +<p>If/when the PPMC vote passes, another vote must be started for the IPMC. Only +IPMC votes are binding here. Send an email to <a href="mailto:general@incubator.apache.org">general@incubator.apache.org</a> +titled <code class="highlighter-rouge">[VOTE] Release Apache Guacamole [VERSION] (RC[N])</code> containing the +following:</p> + +<div class="highlighter-rouge"><pre class="highlight"><code>Hello Incubator PMC, + +The Apache Guacamole community has voted on and approved a proposal to +release Apache Guacamole [VERSION]. + +We now kindly request that the Incubator PMC members review and vote +on this incubator release. + +The VOTE RESULT is here: + +[LINK TO VOTE RESULT] + +The draft release notes (along with links to artifacts, +signatures/checksums, and updated documentation) can be found here: + +http://guacamole.incubator.apache.org/releases/[VERSION]/ + +The git tag for all relevant repositories is "[VERSION]-RC[N]": + +https://github.com/apache/incubator-guacamole-client/tree/[VERSION]-RC[N] +https://github.com/apache/incubator-guacamole-server/tree/[VERSION]-RC[N] +https://github.com/apache/incubator-guacamole-manual/tree/[VERSION]-RC[N] + +Build instructions are included in the manual, which is part of the +updated documentation referenced above. For convenience: + +http://guacamole.incubator.apache.org/doc/[VERSION]/gug/installing-guacamole.html + +Maven artifacts for guacamole-common, guacamole-common-js, and +guacamole-ext can be found in the following staging repository: + +[STAGING REPOSITORY URL] + +Source and binary distributions (also linked within the release notes): + +https://dist.apache.org/repos/dist/dev/incubator/guacamole/[VERSION-RC[N]/ + +Artifacts have been signed with the "[EMAIL]" key listed in: + +https://dist.apache.org/repos/dist/dev/incubator/guacamole/KEYS + +Please review and vote: + +[ ] +1 Approve the release +[ ] -1 Don't approve the release (please provide specific comments) + +This vote will be open for at least 72 hours. + +Thanks, + +[YOU] +</code></pre> +</div> + +<p>Where <code class="highlighter-rouge">[LINK TO VOTE RESULT]</code> the permalink to the specific email calling the +result of <a href="#ppmc-vote">the PPMC vote</a> on the <a href="http://mail-archives.apache.org/mod_mbox/incubator-guacamole-dev/">public archive of [email protected]</a>, +and all other fields are as described for <a href="#ppmc-vote">the PPMC vote email</a>.</p> + +<p>Example: <a href="http://mail-archives.apache.org/mod_mbox/incubator-general/201612.mbox/%3CCALKeL-MQmTi1fW%2BGsvFvN21D-ECfHEpf7hwQN5rB-U1JmfAXtQ%40mail.gmail.com%3E">the 0.9.10-incubating-RC3 IPMC VOTE email</a></p> + + + + + </div> + </div> + + <!-- Footer --> +<div id="footer"> + + <!-- Copyrights --> + <p class="copyright"> + Copyright © 2016 <a href="http://www.apache.org/">The Apache + Software Foundation</a>, Licensed under the <a + href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, + Version 2.0</a>. The HTML5 shield logo has been modified from the + original work of the <a + href="http://www.w3.org/">World Wide Web Constortium (W3C)</a>, + which is licensed under the <a + href="http://creativecommons.org/licenses/by/3.0/">Creative + Commons Attribution 3.0</a> license. + </p> + + <!-- Trademarks --> + <p class="trademarks"> + Apache and the Apache feather logo are trademarks of The Apache + Software Foundation. + </p> + + <!-- Incubation disclaimer --> + <p class="disclaimer"> + Apache Guacamole is an effort undergoing Incubation at The Apache + Software Foundation (ASF), sponsored by the Incubator. Incubation is + required of all newly accepted projects until a further review + indicates that the infrastructure, communications, and decision making + process have stabilized in a manner consistent with other successful + ASF projects. While incubation status is not necessarily a reflection + of the completeness or stability of the code, it does indicate that the + project has yet to be fully endorsed by the ASF. + </p> + +</div> + + + <!-- Google Analytics --> + <script type="text/javascript"> + (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ + (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), + m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) + })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); + + ga('create', 'UA-75289145-1', 'auto'); + ga('send', 'pageview'); + </script> + + <!-- Download tracking helper function --> + <script type="text/javascript"> + + /** + * Signals Google Analytics that a file is being downloaded (or, at + * least, we expect that it is). Note that it is not possible to + * determine this with 100% certainty without grepping server logs, + * but this should still at least help gauge interest/usage. + * + * @param {String} action + * A human-readable string describing the user event which + * occurred to initiate the download. + * + * @param {String} filename + * The filename of the file being downloaded. + */ + function trackDownload(action, filename) { + ga('send', 'event', { + eventCategory : 'Download', + eventAction : action, + eventLabel : filename, + transport : 'beacon' + }); + } + + </script> + + </body> +</html> http://git-wip-us.apache.org/repos/asf/incubator-guacamole-website/blob/a214eefe/content/release-procedures-part3/index.html ---------------------------------------------------------------------- diff --git a/content/release-procedures-part3/index.html b/content/release-procedures-part3/index.html new file mode 100644 index 0000000..e55c437 --- /dev/null +++ b/content/release-procedures-part3/index.html @@ -0,0 +1,305 @@ +<!DOCTYPE html> +<html xmlns="http://www.w3.org/1999/xhtml"> + + <head> + <link rel="stylesheet" href="/styles/main.css"> + <link rel="icon" type="image/png" href="/images/guacamole-logo-64.png"/> + <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no, target-densitydpi=device-dpi"/> + <meta charset="UTF-8"/> + <title>Apache Guacamole (incubating): Promoting a release candidate to release</title> +</head> + + + <body> + + <!-- Header --> +<div id="header"> + <h1><a href="/">Apache Guacamole (incubating)</a></h1> + <ul id="navigation" class="menu"> + + + + + + + + + + + + + + + + + + + + <li><a + + href="/releases/" + + + class="download" + >Downloads</a></li> + + + + <li><a + + href="https://github.com/search?utf8=%E2%9C%93&q=repo%3Aapache%2Fincubator-guacamole-server+repo%3Aapache%2Fincubator-guacamole-client+repo%3Aapache%2Fincubator-guacamole-website&type=Repositories&ref=searchresults" + + + class="github" + >GitHub</a></li> + + + + <li><a + + href="/api-documentation/" + + >API</a></li> + + + + <li><a + + href="https://issues.apache.org/jira/browse/GUACAMOLE/" + + >JIRA</a></li> + + + + <li><a + + href="/doc/gug/" + + >Manual</a></li> + + + + <li><a + + href="/open-source/" + + >Contributing</a></li> + + + + <li><a + + href="/support/" + + >Help / Support</a></li> + + + </ul> +</div> + + + <!-- Content --> + <div id="page"> + <div id="content"> + <h1>Promoting a release candidate to release</h1> + +<ul id="markdown-toc"> + <li><a href="#delete-branch" id="markdown-toc-delete-branch">Delete the release branch</a></li> + <li><a href="#final-tag" id="markdown-toc-final-tag">Tag the final version of the release</a></li> + <li><a href="#final-upload" id="markdown-toc-final-upload">Upload final release artifacts</a> <ul> + <li><a href="#artifacts-in-dist-svn" id="markdown-toc-artifacts-in-dist-svn">Artifacts in dist SVN</a></li> + <li><a href="#maven-artifacts" id="markdown-toc-maven-artifacts">Maven artifacts</a></li> + <li><a href="#docker-images" id="markdown-toc-docker-images">Docker images</a></li> + </ul> + </li> +</ul> + +<h2 id="delete-branch">Delete the release branch</h2> + +<p>Once <a href="/release-procedures-part2/#ppmc-vote">the PPMC vote</a> and <a href="/release-procedures-part2/#ipmc-vote">IPMC +vote</a> for the release have passed, the +release branches <a href="/release-procedures-part1/#release-branch">which were created +previously</a> must be deleted. +Assuming they were properly merged back to <code class="highlighter-rouge">master</code> as release-specific changes +were made, deleting these branches with <code class="highlighter-rouge">git branch -d</code> will succeed without +warnings. If git refuses to delete the branches because commits are missing +from <code class="highlighter-rouge">master</code>, <strong>something is horribly wrong, and the release needs to be +rechecked</strong>.</p> + +<div class="highlighter-rouge"><pre class="highlight"><code>$ git checkout master +$ git branch -d staging/0.9.11-incubating +$ git push upstream :staging/0.9.11-incubating +</code></pre> +</div> + +<h2 id="final-tag">Tag the final version of the release</h2> + +<p>The specific point in the git history that the release was made must be marked +with a new tag, pointing to the exact same commit as the last <a href="/release-procedures-part2/#tag-rc">tagged release +candidate</a>. This tag must be made in the +format <code class="highlighter-rouge">[VERSION]</code>, where <code class="highlighter-rouge">[VERSION]</code> is the version of the release:</p> + +<div class="highlighter-rouge"><pre class="highlight"><code>$ git tag -m "Release 0.9.11-incubating." 0.9.11-incubating +$ git push upstream 0.9.11-incubating +</code></pre> +</div> + +<p>Just as with release candidates, each repository relevant to the release must +be tagged. This will be every repository that had a release branch (the release +branch having been <a href="#delete-branch">deleted earlier</a>) and <em>never</em> includes +<code class="highlighter-rouge">incubator-guacamole-website</code>, which is not part of the release.</p> + +<p>Example: <a href="https://git1-us-west.apache.org/repos/asf?p=incubator-guacamole-server.git;a=tag;h=0875ca8f4e86b942b466cfebf84cc33c47095130">the â0.9.10-incubatingâ tag on +incubator-guacamole-server</a></p> + +<h2 id="final-upload">Upload final release artifacts</h2> + +<h3 id="artifacts-in-dist-svn">Artifacts in dist SVN</h3> + +<p>The release artifacts and their signatures come from the release candidate +which was approved via the various VOTEs. These artifacts are already present +in the SVN dist area under <code class="highlighter-rouge">dev/</code>, and need to be moved to the analogous area +under <code class="highlighter-rouge">release/</code>. <em>This must be done using <code class="highlighter-rouge">svn mv</code></em>, with the directory +containing the artifacts and signatures being renamed from <code class="highlighter-rouge">[VERSION]-RC[N]</code> to +<code class="highlighter-rouge">[VERSION</code>] in the process.</p> + +<div class="highlighter-rouge"><pre class="highlight"><code>$ svn mv dev/incubator/guacamole/0.9.11-incubating-RC1 release/incubator/guacamole/0.9.11-incubating +$ svn commit -m "Promote Apache Guacamole 0.9.11-incubating-RC1 artifacts to 0.9.11-incubating release." +</code></pre> +</div> + +<p>Note that, once this has finished, <strong>YOU MUST STILL WAIT AT LEAST 24 HOURS TO +ALLOW THE <a href="https://www.apache.org/mirrors/">MIRRORS</a> TIME TO SYNC</strong> before +announcing the release.</p> + +<h3 id="maven-artifacts">Maven artifacts</h3> + +<p>For the Maven artifacts to become generally available at +<a href="https://repository.apache.org/">https://repository.apache.org/</a>, and for those artifacts to be synced with +<a href="https://search.maven.org/">Maven Central</a>, the staging repository <a href="/release-procedures-part2/#staging-maven">created and +closed earlier</a> needs to be +explicitly released using <a href="https://repository.apache.org/">Apacheâs Nexus +instance</a>. Doing this involves simply selecting +the repository, clicking the âreleaseâ button, and typing a reasonable log +message noting the release.</p> + +<p>Note that it may take a day or so for Maven Central to contain the new +artifacts, just like the mirrors, but absence of artifacts from Maven Central +does not block announcement of the release as long as they are confirmed to be +present on <a href="https://repository.apache.org/">https://repository.apache.org/</a>.</p> + +<h3 id="docker-images">Docker images</h3> + +<p>Both the <code class="highlighter-rouge">guacamole/guacamole</code> and <code class="highlighter-rouge">guacamole/guacd</code> images should now be +updated with a new version-specific tag, duplicated to the <code class="highlighter-rouge">latest</code> tag. Since +the images deployed for past release candidates were first cleaned with +<code class="highlighter-rouge">git clean</code>, nothing should be actually rebuilt as a consequence of running +<code class="highlighter-rouge">docker build</code> unless something has gone wrong and source changes were made +in the absence of an RC.</p> + +<p>For example, to build the <code class="highlighter-rouge">guacamole/guacamole</code> Docker image for the current +release candidate, from within the top-level <code class="highlighter-rouge">incubator-guacamole-client</code> +directory:</p> + +<div class="highlighter-rouge"><pre class="highlight"><code>$ git clean -xfd . +$ sudo docker build -t guacamole/guacamole:0.9.11-incubating . +$ sudo docker build -t guacamole/guacamole:latest . +</code></pre> +</div> + +<p>Each of the above commands should finish virtually instantaneously, and the +hash of the built images should match each other and the previous RC. Assuming +all looks well, it should be safe to push the images:</p> + +<div class="highlighter-rouge"><pre class="highlight"><code>$ sudo docker push guacamole/guacamole:0.9.11-incubating +$ sudo docker push guacamole/guacamole:latest +</code></pre> +</div> + +<p>Again, this should finish virtually instantaneously, as no new data will need +to be pushed. Docker Hub already has the images/layers from the previous RC +builds.</p> + + + + + </div> + </div> + + <!-- Footer --> +<div id="footer"> + + <!-- Copyrights --> + <p class="copyright"> + Copyright © 2016 <a href="http://www.apache.org/">The Apache + Software Foundation</a>, Licensed under the <a + href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, + Version 2.0</a>. The HTML5 shield logo has been modified from the + original work of the <a + href="http://www.w3.org/">World Wide Web Constortium (W3C)</a>, + which is licensed under the <a + href="http://creativecommons.org/licenses/by/3.0/">Creative + Commons Attribution 3.0</a> license. + </p> + + <!-- Trademarks --> + <p class="trademarks"> + Apache and the Apache feather logo are trademarks of The Apache + Software Foundation. + </p> + + <!-- Incubation disclaimer --> + <p class="disclaimer"> + Apache Guacamole is an effort undergoing Incubation at The Apache + Software Foundation (ASF), sponsored by the Incubator. Incubation is + required of all newly accepted projects until a further review + indicates that the infrastructure, communications, and decision making + process have stabilized in a manner consistent with other successful + ASF projects. While incubation status is not necessarily a reflection + of the completeness or stability of the code, it does indicate that the + project has yet to be fully endorsed by the ASF. + </p> + +</div> + + + <!-- Google Analytics --> + <script type="text/javascript"> + (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ + (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), + m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) + })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); + + ga('create', 'UA-75289145-1', 'auto'); + ga('send', 'pageview'); + </script> + + <!-- Download tracking helper function --> + <script type="text/javascript"> + + /** + * Signals Google Analytics that a file is being downloaded (or, at + * least, we expect that it is). Note that it is not possible to + * determine this with 100% certainty without grepping server logs, + * but this should still at least help gauge interest/usage. + * + * @param {String} action + * A human-readable string describing the user event which + * occurred to initiate the download. + * + * @param {String} filename + * The filename of the file being downloaded. + */ + function trackDownload(action, filename) { + ga('send', 'event', { + eventCategory : 'Download', + eventAction : action, + eventLabel : filename, + transport : 'beacon' + }); + } + + </script> + + </body> +</html> http://git-wip-us.apache.org/repos/asf/incubator-guacamole-website/blob/a214eefe/content/release-procedures-part4/index.html ---------------------------------------------------------------------- diff --git a/content/release-procedures-part4/index.html b/content/release-procedures-part4/index.html new file mode 100644 index 0000000..b9d6654 --- /dev/null +++ b/content/release-procedures-part4/index.html @@ -0,0 +1,285 @@ +<!DOCTYPE html> +<html xmlns="http://www.w3.org/1999/xhtml"> + + <head> + <link rel="stylesheet" href="/styles/main.css"> + <link rel="icon" type="image/png" href="/images/guacamole-logo-64.png"/> + <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no, target-densitydpi=device-dpi"/> + <meta charset="UTF-8"/> + <title>Apache Guacamole (incubating): Announcing the release</title> +</head> + + + <body> + + <!-- Header --> +<div id="header"> + <h1><a href="/">Apache Guacamole (incubating)</a></h1> + <ul id="navigation" class="menu"> + + + + + + + + + + + + + + + + + + + + <li><a + + href="/releases/" + + + class="download" + >Downloads</a></li> + + + + <li><a + + href="https://github.com/search?utf8=%E2%9C%93&q=repo%3Aapache%2Fincubator-guacamole-server+repo%3Aapache%2Fincubator-guacamole-client+repo%3Aapache%2Fincubator-guacamole-website&type=Repositories&ref=searchresults" + + + class="github" + >GitHub</a></li> + + + + <li><a + + href="/api-documentation/" + + >API</a></li> + + + + <li><a + + href="https://issues.apache.org/jira/browse/GUACAMOLE/" + + >JIRA</a></li> + + + + <li><a + + href="/doc/gug/" + + >Manual</a></li> + + + + <li><a + + href="/open-source/" + + >Contributing</a></li> + + + + <li><a + + href="/support/" + + >Help / Support</a></li> + + + </ul> +</div> + + + <!-- Content --> + <div id="page"> + <div id="content"> + <h1>Announcing the release</h1> + +<ul id="markdown-toc"> + <li><a href="#update-website" id="markdown-toc-update-website">Update website announcing the release</a></li> + <li><a href="#update-jira" id="markdown-toc-update-jira">Update JIRA version information</a></li> + <li><a href="#email-announce" id="markdown-toc-email-announce">Email announcement</a></li> +</ul> + +<h2 id="update-website">Update website announcing the release</h2> + +<p>Once the full 24 hours has elapsed since <a href="/release-procedures-part3/#final-upload">the final release artifacts were +uploaded</a>, the website must be updated +to point to the new release. There are three specific things which must be +updated:</p> + +<ol> + <li> + <p>The top-level symbolic links within <code class="highlighter-rouge">/doc</code> must be updated to point to the +documentation of the latest release.</p> + </li> + <li> + <p>The <code class="highlighter-rouge">released: false</code> field at the top of the release notes needs to be +updated to <code class="highlighter-rouge">released: true</code> to allow the release to be listed with the rest +in the <a href="/releases/">release archives</a>. The <code class="highlighter-rouge">date</code> field should also be +updated to note the actual date and time of release.</p> + </li> + <li> + <p>The <code class="highlighter-rouge">artifact-root</code>, <code class="highlighter-rouge">checksum-root</code>, and <code class="highlighter-rouge">download-path</code> must be updated +to use the release directory (rather than the RC directory) and to <em>not</em> +use <code class="highlighter-rouge">dist.apache.org</code>.</p> + </li> +</ol> + +<p>Example: <a href="https://github.com/apache/incubator-guacamole-website/pull/31">the pull request for incubator-guacamole-website announcing 0.9.11-incubating</a></p> + +<h2 id="update-jira">Update JIRA version information</h2> + +<p>JIRA must be updated as well, as each version is listed for the sake of tagging +issues. At this point, there should already be a version created for the recent +release, but it will not be marked as released. Mark the version as âreleasedâ +within JIRA, making sure a version number for the next release has been created +as a placeholder:</p> + +<p><a href="https://issues.apache.org/jira/plugins/servlet/project-config/GUACAMOLE/versions">https://issues.apache.org/jira/plugins/servlet/project-config/GUACAMOLE/versions</a></p> + +<h2 id="email-announce">Email announcement</h2> + +<p>Finally, send an email with the subject <code class="highlighter-rouge">[ANNOUNCE] Apache Guacamole [VERSION] +released</code> to <a href="mailto:announce@apache.org">announce@apache.org</a>, <a href="mailto:general@incubator.apache.org">general@incubator.apache.org</a>, +<a href="mailto:dev@guacamole.incubator.apache.org">dev@guacamole.incubator.apache.org</a>, and +<a href="mailto:user@guacamole.incubator.apache.org">user@guacamole.incubator.apache.org</a>. <strong>This email MUST be sent from an +apache.org email address</strong>, and should contain an announcement like the +following:</p> + +<div class="highlighter-rouge"><pre class="highlight"><code>The Apache Guacamole community is proud to announce the release of Apache +Guacamole [VERSION]. + +Apache Guacamole (incubating) is a clientless remote desktop gateway which +supports standard protocols like VNC, RDP, and SSH. We call it "clientless" +because no plugins or client software are required; once Guacamole is +installed on a server, all you need to access your desktops is a web +browser. + +[VERSION] features [RELEASE HIGHLIGHTS]. + +A full list of the changes in this release, along with links to downloads +and updated documentation, can be found in the release notes: + +http://guacamole.incubator.apache.org/releases/[VERSION]/ + +For more information on Apache Guacamole, please see: + +http://guacamole.incubator.apache.org/ + +Thanks! + +The Apache Guacamole (incubating) Community + +---- + +DISCLAIMER: + +Apache Guacamole is an effort undergoing Incubation at The Apache Software +Foundation (ASF), sponsored by the Incubator. Incubation is required of all +newly accepted projects until a further review indicates that the +infrastructure, communications, and decision making process have stabilized +in a manner consistent with other successful ASF projects. While incubation +status is not necessarily a reflection of the completeness or stability of +the code, it does indicate that the project has yet to be fully endorsed by +the ASF. +</code></pre> +</div> + +<p>Where <code class="highlighter-rouge">[VERSION]</code> is the version that was just released and <code class="highlighter-rouge">[RELEASE +HIGHLIGHTS]</code> is a brief description of the key features, improvements, and bug +fixes of the release.</p> + +<p>Example: <a href="http://mail-archives.apache.org/mod_mbox/www-announce/201612.mbox/%3CCALKeL-PxDiixdCkpLcVE9XN07aRUVx1aPR%3D5ysaAJjKdU1ZnNg%40mail.gmail.com%3E">the 0.9.10-incubating announcement email</a></p> + + + + + </div> + </div> + + <!-- Footer --> +<div id="footer"> + + <!-- Copyrights --> + <p class="copyright"> + Copyright © 2016 <a href="http://www.apache.org/">The Apache + Software Foundation</a>, Licensed under the <a + href="http://www.apache.org/licenses/LICENSE-2.0">Apache License, + Version 2.0</a>. The HTML5 shield logo has been modified from the + original work of the <a + href="http://www.w3.org/">World Wide Web Constortium (W3C)</a>, + which is licensed under the <a + href="http://creativecommons.org/licenses/by/3.0/">Creative + Commons Attribution 3.0</a> license. + </p> + + <!-- Trademarks --> + <p class="trademarks"> + Apache and the Apache feather logo are trademarks of The Apache + Software Foundation. + </p> + + <!-- Incubation disclaimer --> + <p class="disclaimer"> + Apache Guacamole is an effort undergoing Incubation at The Apache + Software Foundation (ASF), sponsored by the Incubator. Incubation is + required of all newly accepted projects until a further review + indicates that the infrastructure, communications, and decision making + process have stabilized in a manner consistent with other successful + ASF projects. While incubation status is not necessarily a reflection + of the completeness or stability of the code, it does indicate that the + project has yet to be fully endorsed by the ASF. + </p> + +</div> + + + <!-- Google Analytics --> + <script type="text/javascript"> + (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ + (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), + m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) + })(window,document,'script','//www.google-analytics.com/analytics.js','ga'); + + ga('create', 'UA-75289145-1', 'auto'); + ga('send', 'pageview'); + </script> + + <!-- Download tracking helper function --> + <script type="text/javascript"> + + /** + * Signals Google Analytics that a file is being downloaded (or, at + * least, we expect that it is). Note that it is not possible to + * determine this with 100% certainty without grepping server logs, + * but this should still at least help gauge interest/usage. + * + * @param {String} action + * A human-readable string describing the user event which + * occurred to initiate the download. + * + * @param {String} filename + * The filename of the file being downloaded. + */ + function trackDownload(action, filename) { + ga('send', 'event', { + eventCategory : 'Download', + eventAction : action, + eventLabel : filename, + transport : 'beacon' + }); + } + + </script> + + </body> +</html> http://git-wip-us.apache.org/repos/asf/incubator-guacamole-website/blob/a214eefe/content/releases/0.8.3/index.html ---------------------------------------------------------------------- diff --git a/content/releases/0.8.3/index.html b/content/releases/0.8.3/index.html index 75d7a50..b34d864 100644 --- a/content/releases/0.8.3/index.html +++ b/content/releases/0.8.3/index.html @@ -27,6 +27,14 @@ + + + + + + + + <li><a href="/releases/" http://git-wip-us.apache.org/repos/asf/incubator-guacamole-website/blob/a214eefe/content/releases/0.8.4/index.html ---------------------------------------------------------------------- diff --git a/content/releases/0.8.4/index.html b/content/releases/0.8.4/index.html index 5cf33fa..0c934b9 100644 --- a/content/releases/0.8.4/index.html +++ b/content/releases/0.8.4/index.html @@ -27,6 +27,14 @@ + + + + + + + + <li><a href="/releases/" http://git-wip-us.apache.org/repos/asf/incubator-guacamole-website/blob/a214eefe/content/releases/0.9.0/index.html ---------------------------------------------------------------------- diff --git a/content/releases/0.9.0/index.html b/content/releases/0.9.0/index.html index 6775e9c..5a8e4c7 100644 --- a/content/releases/0.9.0/index.html +++ b/content/releases/0.9.0/index.html @@ -27,6 +27,14 @@ + + + + + + + + <li><a href="/releases/" http://git-wip-us.apache.org/repos/asf/incubator-guacamole-website/blob/a214eefe/content/releases/0.9.1/index.html ---------------------------------------------------------------------- diff --git a/content/releases/0.9.1/index.html b/content/releases/0.9.1/index.html index 70ca3be..15fd3af 100644 --- a/content/releases/0.9.1/index.html +++ b/content/releases/0.9.1/index.html @@ -27,6 +27,14 @@ + + + + + + + + <li><a href="/releases/" http://git-wip-us.apache.org/repos/asf/incubator-guacamole-website/blob/a214eefe/content/releases/0.9.10-incubating/index.html ---------------------------------------------------------------------- diff --git a/content/releases/0.9.10-incubating/index.html b/content/releases/0.9.10-incubating/index.html index 1ad77d3..e0dac7d 100644 --- a/content/releases/0.9.10-incubating/index.html +++ b/content/releases/0.9.10-incubating/index.html @@ -27,6 +27,14 @@ + + + + + + + + <li><a href="/releases/" http://git-wip-us.apache.org/repos/asf/incubator-guacamole-website/blob/a214eefe/content/releases/0.9.11-incubating/index.html ---------------------------------------------------------------------- diff --git a/content/releases/0.9.11-incubating/index.html b/content/releases/0.9.11-incubating/index.html index 6466c64..c0aacdd 100644 --- a/content/releases/0.9.11-incubating/index.html +++ b/content/releases/0.9.11-incubating/index.html @@ -27,6 +27,14 @@ + + + + + + + + <li><a href="/releases/" http://git-wip-us.apache.org/repos/asf/incubator-guacamole-website/blob/a214eefe/content/releases/0.9.2/index.html ---------------------------------------------------------------------- diff --git a/content/releases/0.9.2/index.html b/content/releases/0.9.2/index.html index 9334733..616c52b 100644 --- a/content/releases/0.9.2/index.html +++ b/content/releases/0.9.2/index.html @@ -27,6 +27,14 @@ + + + + + + + + <li><a href="/releases/" http://git-wip-us.apache.org/repos/asf/incubator-guacamole-website/blob/a214eefe/content/releases/0.9.3/index.html ---------------------------------------------------------------------- diff --git a/content/releases/0.9.3/index.html b/content/releases/0.9.3/index.html index d82afdf..f62d122 100644 --- a/content/releases/0.9.3/index.html +++ b/content/releases/0.9.3/index.html @@ -27,6 +27,14 @@ + + + + + + + + <li><a href="/releases/" http://git-wip-us.apache.org/repos/asf/incubator-guacamole-website/blob/a214eefe/content/releases/0.9.4/index.html ---------------------------------------------------------------------- diff --git a/content/releases/0.9.4/index.html b/content/releases/0.9.4/index.html index fadc685..2af5add 100644 --- a/content/releases/0.9.4/index.html +++ b/content/releases/0.9.4/index.html @@ -27,6 +27,14 @@ + + + + + + + + <li><a href="/releases/" http://git-wip-us.apache.org/repos/asf/incubator-guacamole-website/blob/a214eefe/content/releases/0.9.5/index.html ---------------------------------------------------------------------- diff --git a/content/releases/0.9.5/index.html b/content/releases/0.9.5/index.html index c8273d0..3ea8851 100644 --- a/content/releases/0.9.5/index.html +++ b/content/releases/0.9.5/index.html @@ -27,6 +27,14 @@ + + + + + + + + <li><a href="/releases/" http://git-wip-us.apache.org/repos/asf/incubator-guacamole-website/blob/a214eefe/content/releases/0.9.6/index.html ---------------------------------------------------------------------- diff --git a/content/releases/0.9.6/index.html b/content/releases/0.9.6/index.html index 02a4223..3e4126a 100644 --- a/content/releases/0.9.6/index.html +++ b/content/releases/0.9.6/index.html @@ -27,6 +27,14 @@ + + + + + + + + <li><a href="/releases/" http://git-wip-us.apache.org/repos/asf/incubator-guacamole-website/blob/a214eefe/content/releases/0.9.7/index.html ---------------------------------------------------------------------- diff --git a/content/releases/0.9.7/index.html b/content/releases/0.9.7/index.html index 98a5d07..648f6f9 100644 --- a/content/releases/0.9.7/index.html +++ b/content/releases/0.9.7/index.html @@ -27,6 +27,14 @@ + + + + + + + + <li><a href="/releases/" http://git-wip-us.apache.org/repos/asf/incubator-guacamole-website/blob/a214eefe/content/releases/0.9.8/index.html ---------------------------------------------------------------------- diff --git a/content/releases/0.9.8/index.html b/content/releases/0.9.8/index.html index be6448e..0688c5e 100644 --- a/content/releases/0.9.8/index.html +++ b/content/releases/0.9.8/index.html @@ -27,6 +27,14 @@ + + + + + + + + <li><a href="/releases/" http://git-wip-us.apache.org/repos/asf/incubator-guacamole-website/blob/a214eefe/content/releases/0.9.9/index.html ---------------------------------------------------------------------- diff --git a/content/releases/0.9.9/index.html b/content/releases/0.9.9/index.html index df94666..19d8f95 100644 --- a/content/releases/0.9.9/index.html +++ b/content/releases/0.9.9/index.html @@ -27,6 +27,14 @@ + + + + + + + + <li><a href="/releases/" http://git-wip-us.apache.org/repos/asf/incubator-guacamole-website/blob/a214eefe/content/releases/index.html ---------------------------------------------------------------------- diff --git a/content/releases/index.html b/content/releases/index.html index 1ec226e..f2b3459 100644 --- a/content/releases/index.html +++ b/content/releases/index.html @@ -27,6 +27,14 @@ + + + + + + + + <li><a href="/releases/" http://git-wip-us.apache.org/repos/asf/incubator-guacamole-website/blob/a214eefe/content/support/index.html ---------------------------------------------------------------------- diff --git a/content/support/index.html b/content/support/index.html index 0cc0d0f..3c7638e 100644 --- a/content/support/index.html +++ b/content/support/index.html @@ -27,6 +27,14 @@ + + + + + + + + <li><a href="/releases/"
