blob: 73632fb65d8e87cc69121e2b184b997a2a42f835 [file] [log] [blame]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<title>Post Release (Successful) :: Apache Isis</title>
<link rel="canonical" href="https://isis.apache.org/comguide/2.0.0-M3/post-release-successful.html">
<meta name="generator" content="Antora 2.2.0">
<link rel="stylesheet" href="../../_/css/site.css">
<link rel="stylesheet" href="../../_/css/site-custom.css">
<link href="https://fonts.googleapis.com/css?family=Open+Sans:300,300i,400,400i,700,700i|Raleway:300,400,500,700,800|Montserrat:300,400,700" rel="stylesheet">
<link rel="home" href="https://isis.apache.org" title="Apache Isis">
<link rel="next" href="post-release-unsuccessful.html" title="Post Release (Unsuccessful)">
<link rel="prev" href="verifying-releases.html" title="Verifying Releases">
</head>
<body class="article">
<header class="header">
<nav class="navbar">
<div class="navbar-brand">
<a class="navbar-item" href="https://isis.apache.org">
<span class="icon">
<img src="../../_/img/isis-logo-48x48.png"></img>
</span>
<span>Apache Isis</span>
</a>
<button class="navbar-burger" data-target="topbar-nav">
<span></span>
<span></span>
<span></span>
</button>
</div>
<div id="topbar-nav" class="navbar-menu">
<a class="navbar-end">
<div class="navbar-item has-dropdown is-hoverable">
<a class="navbar-link" href="#">Quick Start</a>
<div class="navbar-dropdown">
<span class="navbar-item navbar-heading">Starter Apps</span>
<a class="navbar-item" href="../../docs/latest/starters/helloworld.html">Hello World</a>
<a class="navbar-item" href="../../docs/latest/starters/simpleapp.html">Simple App</a>
<hr class="navbar-divider"/>
<span class="navbar-item navbar-heading">Demos &amp; Tutorials</span>
<a class="navbar-item" href="../../docs/latest/demo/about.html">Demo App</a>
<a class="navbar-item" href="https://danhaywood.gitlab.io/isis-petclinic-tutorial-docs/petclinic/1.16.2/intro.html">Petclinic (tutorial)</a>
<hr class="navbar-divider"/>
<span class="navbar-item navbar-heading">Resources</span>
<a class="navbar-item" href="../../docs/latest/resources/cheatsheet.html">Cheatsheet</a>
<a class="navbar-item" href="../../docs/latest/resources/icons.html">Icons</a>
</div>
</div>
<div class="navbar-item has-dropdown is-hoverable">
<a class="navbar-link" href="#">Guides</a>
<div class="navbar-dropdown">
<span class="navbar-item navbar-heading">Development</span>
<a class="navbar-item" href="../../setupguide/latest/about.html">Setup Guide</a>
<hr class="navbar-divider"/>
<span class="navbar-item navbar-heading">Core</span>
<a class="navbar-item" href="../../userguide/latest/about.html">User Guide</a>
<a class="navbar-item" href="../../refguide/latest/about.html">Reference Guide</a>
<a class="navbar-item" href="../../testing/latest/about.html">Testing Guide</a>
</div>
</div>
<div class="navbar-item has-dropdown is-hoverable">
<a class="navbar-link" href="#">Libraries</a>
<div class="navbar-dropdown">
<span class="navbar-item navbar-heading">For Use in Apps</span>
<a class="navbar-item" href="../../subdomains/latest/about.html">Subdomain Libraries</a>
<a class="navbar-item" href="../../valuetypes/latest/about.html">Value Types</a>
<hr class="navbar-divider"/>
<span class="navbar-item navbar-heading">Integrate between Apps</span>
<a class="navbar-item" href="../../mappings/latest/about.html">Bounded Context Mapping Libraries</a>
<hr class="navbar-divider"/>
<span class="navbar-item navbar-heading">Other</span>
<a class="navbar-item" href="../../incubator/latest/about.html">Incubator</a>
<a class="navbar-item" href="../../legacy/latest/about.html">Legacy</a>
</div>
</div>
<div class="navbar-item has-dropdown is-hoverable">
<a class="navbar-link" href="#">Components</a>
<div class="navbar-dropdown">
<span class="navbar-item navbar-heading">Viewers</span>
<a class="navbar-item" href="../../vw/latest/about.html">Wicket UI</a>
<a class="navbar-item" href="../../vro/latest/about.html">Restful Objects (REST)</a>
<hr class="navbar-divider"/>
<span class="navbar-item navbar-heading">Security</span>
<a class="navbar-item" href="../../security/latest/about.html">Security Guide</a>
<hr class="navbar-divider"/>
<span class="navbar-item navbar-heading">Persistence</span>
<a class="navbar-item" href="../../pjdo/latest/about.html">DataNucleus (JDO)</a>
<hr class="navbar-divider"/>
<span class="navbar-item navbar-heading">Extensions</span>
<a class="navbar-item" href="../../extensions/latest/about.html">Extensions Catalog</a>
</div>
</div>
<div class="navbar-item has-dropdown is-hoverable">
<a class="navbar-link" href="#">Support</a>
<div class="navbar-dropdown">
<span class="navbar-item navbar-heading">Contact</span>
<a class="navbar-item" href="../../docs/latest/support/slack-channel.html">Slack</a>
<a class="navbar-item" href="../../docs/latest/support/mailing-list.html">Mailing Lists</a>
<a class="navbar-item" href="https://issues.apache.org/jira/browse/ISIS">JIRA</a>
<a class="navbar-item" href="https://stackoverflow.com/questions/tagged/isis">Stack Overflow</a>
<hr class="navbar-divider"/>
<span class="navbar-item navbar-heading">Releases</span>
<a class="navbar-item" href="../../docs/latest/downloads/how-to.html">Downloads</a>
<a class="navbar-item" href="../../relnotes/latest/about.html">Release Notes</a>
<a class="navbar-item" href="../../docs/latest/archive/1-x.html">Archive (1.x)</a>
<hr class="navbar-divider"/>
<span class="navbar-item navbar-heading">Framework</span>
<a class="navbar-item" href="../../conguide/latest/about.html">Contributors' Guide</a>
<a class="navbar-item" href="../../comguide/latest/about.html">Committers' Guide</a>
<a class="navbar-item" href="../../core/latest/about.html">Core Design</a>
</div>
</div>
<div class="navbar-item has-dropdown is-hoverable">
<a class="navbar-link" href="#">ASF</a>
<div class="navbar-dropdown">
<a class="navbar-item" href="http://www.apache.org/">Apache Homepage</a>
<a class="navbar-item" href="https://www.apache.org/events/current-event">Events</a>
<a class="navbar-item" href="https://www.apache.org/licenses/">Licenses</a>
<a class="navbar-item" href="https://www.apache.org/security/">Security</a>
<a class="navbar-item" href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a>
<a class="navbar-item" href="https://www.apache.org/foundation/thanks.html">Thanks</a>
<hr class="navbar-divider"/>
<a class="navbar-item" href="https://whimsy.apache.org/board/minutes/Isis.html">PMC board minutes</a>
</div>
</div>
<a class="navbar-item" href="../../docs/latest/about.html">
<span class="icon">
<img src="../../_/img/home.png"></img>
</span>
</a>
</div>
</div>
</nav>
</header>
<div class="body ">
<div class="nav-container" data-component="comguide" data-version="2.0.0-M3">
<aside class="nav">
<div class="panels">
<div class="nav-panel-pagination">
<a class="page-previous" rel="prev" href="verifying-releases.html" title="Verifying Releases"><span></span></a>
<a class="page-next" rel="next"
href="post-release-unsuccessful.html" title="Post Release (Unsuccessful)"><span></span></a>
<!--
page.parent doesn't seem to be set...
<a class="page-parent disabled" rel="prev" href="" title="Verifying Releases"><span></span></a>
-->
</div>
<div class="nav-panel-menu is-active" data-panel="menu">
<nav class="nav-menu">
<h3 class="title"><a href="about.html">Committers&#x27; Guide</a></h3>
<ul class="nav-list">
<li class="nav-item" data-depth="0">
<ul class="nav-list">
<li class="nav-item" data-depth="1">
<a class="nav-link" href="merging-a-pull-request.html">Merging a Pull Request</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="applying-patches.html">Applying Patches</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="cutting-a-release.html">Cutting a Release</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="verifying-releases.html">Verifying Releases</a>
</li>
<li class="nav-item is-current-page" data-depth="1">
<a class="nav-link" href="post-release-successful.html">Post Release (Successful)</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="post-release-unsuccessful.html">Post Release (Unsuccessful)</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="release-process-for-interim-releases.html">Interim Releases</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="key-generation.html">Key Generation</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="release-process-prereqs.html">Appendix: Release Process Prereqs</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="policies.html">Appendix: Policies</a>
</li>
<li class="nav-item" data-depth="1">
<a class="nav-link" href="pmc-notes.html">Appendix: PMC Notes</a>
</li>
</ul>
</li>
</ul>
</nav>
</div>
<div class="nav-panel-explore" data-panel="explore">
<div class="context">
<span class="title">Committers&#x27; Guide</span>
<span class="version">2.0.0-M3</span>
</div>
<ul class="components">
<li class="component">
<span class="title"> </span>
<ul class="versions">
<li class="version is-latest">
<a href="../../docs/2.0.0-M3/about.html">2.0.0-M3</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">BC Mappings Catalog</span>
<ul class="versions">
<li class="version is-latest">
<a href="../../mappings/2.0.0-M3/about.html">2.0.0-M3</a>
</li>
</ul>
</li>
<li class="component is-current">
<span class="title">Committers' Guide</span>
<ul class="versions">
<li class="version is-current is-latest">
<a href="about.html">2.0.0-M3</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">Contributors' Guide</span>
<ul class="versions">
<li class="version is-latest">
<a href="../../conguide/2.0.0-M3/about.html">2.0.0-M3</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">Design Docs</span>
<ul class="versions">
<li class="version is-latest">
<a href="../../core/2.0.0-M3/about.html">2.0.0-M3</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">Extensions Catalog</span>
<ul class="versions">
<li class="version is-latest">
<a href="../../extensions/2.0.0-M3/about.html">2.0.0-M3</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">Incubator Catalog</span>
<ul class="versions">
<li class="version is-latest">
<a href="../../incubator/2.0.0-M3/about.html">2.0.0-M3</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">JDO/DataNucleus</span>
<ul class="versions">
<li class="version is-latest">
<a href="../../pjdo/2.0.0-M3/about.html">2.0.0-M3</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">Legacy Catalog</span>
<ul class="versions">
<li class="version is-latest">
<a href="../../legacy/2.0.0-M3/about.html">2.0.0-M3</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">Reference Guide</span>
<ul class="versions">
<li class="version is-latest">
<a href="../../refguide/2.0.0-M3/about.html">2.0.0-M3</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">Release Notes</span>
<ul class="versions">
<li class="version is-latest">
<a href="../../relnotes/2.0.0-M3/about.html">2.0.0-M3</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">Restful Objects Viewer</span>
<ul class="versions">
<li class="version is-latest">
<a href="../../vro/2.0.0-M3/about.html">2.0.0-M3</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">Security Guide</span>
<ul class="versions">
<li class="version is-latest">
<a href="../../security/2.0.0-M3/about.html">2.0.0-M3</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">Setup Guide</span>
<ul class="versions">
<li class="version is-latest">
<a href="../../setupguide/2.0.0-M3/about.html">2.0.0-M3</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">Subdomains Catalog</span>
<ul class="versions">
<li class="version is-latest">
<a href="../../subdomains/2.0.0-M3/about.html">2.0.0-M3</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">Testing Guide</span>
<ul class="versions">
<li class="version is-latest">
<a href="../../testing/2.0.0-M3/about.html">2.0.0-M3</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">User Guide</span>
<ul class="versions">
<li class="version is-latest">
<a href="../../userguide/2.0.0-M3/about.html">2.0.0-M3</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">Value Types Catalog</span>
<ul class="versions">
<li class="version is-latest">
<a href="../../valuetypes/2.0.0-M3/about.html">2.0.0-M3</a>
</li>
</ul>
</li>
<li class="component">
<span class="title">Wicket Viewer</span>
<ul class="versions">
<li class="version is-latest">
<a href="../../vw/2.0.0-M3/about.html">2.0.0-M3</a>
</li>
</ul>
</li>
</ul>
</div>
</div>
</aside>
</div>
<main role="main">
<div class="toolbar" role="navigation">
<button class="nav-toggle"></button>
<a href="../../docs/2.0.0-M3/about.html" class="home-link"></a>
<nav class="breadcrumbs" aria-label="breadcrumbs">
<ul>
<li><a href="about.html">Committers' Guide</a></li>
<li><a href="post-release-successful.html">Post Release (Successful)</a></li>
</ul>
</nav>
<div class="edit-this-page"><a href="https://github.com/apache/isis/edit/2.0.0-M3/antora/components/comguide/modules/ROOT/pages/post-release-successful.adoc">Edit</a></div>
</div>
<article class="doc">
<a name="section-top"></a>
<h1 class="page">Post Release (Successful)</h1>
<div id="preamble">
<div class="sectionbody">
<div class="paragraph">
<p>The release process consists of:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>the release manager <a href="cutting-a-release.html" class="page">cutting the release</a></p>
</li>
<li>
<p>members of the Apache Isis PMC <a href="verifying-releases.html" class="page">verifying</a> and voting on the release</p>
</li>
<li>
<p>the release manager performing post-release tasks, for either a successful or an <a href="post-release-unsuccessful.html" class="page">unsuccessful</a> vote (former documented below)</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>For a vote to succeed, there must be +3 votes from PMC members, and the vote must have been open at least 72 hours.
If there are not +3 votes after this time then it is perfectly permissible to keep the vote open longer.</p>
</div>
<div class="paragraph">
<p>This section describes the steps to perform if the vote has been successful.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="inform-dev-ml"><a class="anchor" href="#inform-dev-ml"></a>Inform dev ML</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Post the results to the <code>dev@isis.a.o</code> mailing list:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code>[RESULT] [VOTE] Apache Isis Core release 2.0.0-M3</code></pre>
</div>
</div>
<div class="paragraph">
<p>using the body (alter last line as appropriate):</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code>The vote has completed with the following result :
+1 (binding): ... list of names ...
+1 (non binding): ... list of names ...
-1 (binding): ... list of names ...
-1 (non binding): ... list of names ...
The vote is SUCCESSFUL.
I\'ll now go ahead and complete the post-release activities.</code></pre>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="release-to-maven-central"><a class="anchor" href="#release-to-maven-central"></a>Release to Maven Central</h2>
<div class="sectionbody">
<div class="admonitionblock caution">
<table>
<tr>
<td class="icon">
<i class="fa icon-caution" title="Caution"></i>
</td>
<td class="content">
We release from Maven Central before anything else; we don&#8217;t want to push the git tags (an irreversible action) until we know that this has worked ok.
</td>
</tr>
</table>
</div>
<div class="paragraph">
<p>From the <a href="http://repository.apache.org">ASF Nexus repository</a>, select the staging repository and select 'release' from the top menu.</p>
</div>
<div class="imageblock">
<div class="content">
<a class="image" href="_images/release-process/nexus-release-1.png"><img src="_images/release-process/nexus-release-1.png" alt="nexus release 1" width="600px"></a>
</div>
</div>
<div class="paragraph">
<p>This moves the release artifacts into an Apache releases repository; from there they will be automatically moved to the Maven repository.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="set-environment-variables"><a class="anchor" href="#set-environment-variables"></a>Set environment variables</h2>
<div class="sectionbody">
<div class="paragraph">
<p>As we did for the cutting of the release, we set environment variables to parameterize the following steps:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">export ISISJIRA=ISIS-9999 <i class="conum" data-value="1"></i><b>(1)</b>
export ISISTMP=/c/tmp <i class="conum" data-value="2"></i><b>(2)</b>
export ISISREL=2.0.0-M3 <i class="conum" data-value="3"></i><b>(3)</b>
export ISISRC=RC1 <i class="conum" data-value="4"></i><b>(4)</b>
export ISISBRANCH=release-$ISISREL-$ISISRC
export ISISART=isis
env | grep ISIS | sort</code></pre>
</div>
</div>
<div class="colist arabic">
<table>
<tr>
<td><i class="conum" data-value="1"></i><b>1</b></td>
<td>set to an "umbrella" ticket for all release activities.
(One should exist already, <a href="#create-new-jira">created at</a> the beginning of the development cycle now completing).</td>
</tr>
<tr>
<td><i class="conum" data-value="2"></i><b>2</b></td>
<td>adjust by platform</td>
</tr>
<tr>
<td><i class="conum" data-value="3"></i><b>3</b></td>
<td>adjust as required</td>
</tr>
<tr>
<td><i class="conum" data-value="4"></i><b>4</b></td>
<td>adjust as necessary if there was more than one attempt to release</td>
</tr>
</table>
</div>
<div class="paragraph">
<p>Open up a terminal, and switch to the correct release branch:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">git checkout $ISISBRANCH</code></pre>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="update-tags"><a class="anchor" href="#update-tags"></a>Update tags</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Replace the <code>-RCn</code> tag with another without the qualifier.</p>
</div>
<div class="paragraph">
<p>You can do this using the <code>scripts/promoterctag.sh</code> script; for example:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">sh scripts/promoterctag.sh $ISISART-$ISISREL $ISISRC</code></pre>
</div>
</div>
<div class="paragraph">
<p>This script pushes the tag under <code>refs/tags/rel</code>.
As per Apache policy (communicated on 10th Jan 2016 to Apache PMCs), this path is 'protected' and is unmodifiable (guaranteeing the provenance that the ASF needs for releases).</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="update-jira"><a class="anchor" href="#update-jira"></a>Update JIRA</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="close-tickets"><a class="anchor" href="#close-tickets"></a>Close tickets</h3>
<div class="paragraph">
<p>Close all JIRA tickets for the release, or moved to future releases if not yet addressed.
Any tickets that were partially implemented should be closed, and new tickets created for the functionality on the ticket not yet implemented.</p>
</div>
</div>
<div class="sect2">
<h3 id="generate-release-notes"><a class="anchor" href="#generate-release-notes"></a>Generate Release Notes</h3>
<div class="paragraph">
<p>From the root directory, generate the release notes for the current release, in Asciidoc format; eg:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">sh scripts/jira-release-notes.sh ISIS $ISISREL &gt; /tmp/1</code></pre>
</div>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
<div class="paragraph">
<p>This script uses 'jq' to parse JSON.
See the script itself for details of how to install this utility.</p>
</div>
</td>
</tr>
</table>
</div>
</div>
<div class="sect2">
<h3 id="mark-the-version-as-released"><a class="anchor" href="#mark-the-version-as-released"></a>Mark the version as released</h3>
<div class="paragraph">
<p>In JIRA, go to the <a href="https://issues.apache.org/jira/plugins/servlet/project-config/ISIS/versions">administration section</a> for the Apache Isis project and update the version as being released.</p>
</div>
<div class="paragraph">
<p>In the <a href="https://issues.apache.org/jira/secure/RapidBoard.jspa?rapidView=87">Kanban view</a> this will have the effect of marking all tickets as released (clearing the "done" column).</p>
</div>
</div>
<div class="sect2">
<h3 id="create-new-jira"><a class="anchor" href="#create-new-jira"></a>Create new JIRA</h3>
<div class="paragraph">
<p>Create a new JIRA ticket as a catch-all for the <em>next</em> release.</p>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="update-release-notes"><a class="anchor" href="#update-release-notes"></a>Update Release Notes</h2>
<div class="sectionbody">
<div class="paragraph">
<p>In the main <code>isis</code> repo (ie containing the asciidoc source):</p>
</div>
<div class="ulist">
<ul>
<li>
<p>Create a new <code>relnotes.adoc</code> file to hold the JIRA-generated release notes generated above.</p>
<div class="paragraph">
<p>This should live in <code>antora/components/relnotes/modules/ROOT/pages/yyyy/vvv/relnotes.adoc</code></p>
</div>
<div class="ulist">
<ul>
<li>
<p>where <code>yyyy</code> is the year</p>
</li>
<li>
<p>where <code>vvv</code> is the version number</p>
</li>
</ul>
</div>
</li>
<li>
<p>Update the <code>nav.adoc</code> file to reference these release notes</p>
<div class="paragraph">
<p>In <code>antora/components/relnotes/ROOT/nav.adoc</code></p>
</div>
</li>
<li>
<p>Update the table in the <code>about.adoc</code> summary</p>
<div class="paragraph">
<p>In <code>antora/components/relnotes/ROOT/pages/about.adoc</code></p>
</div>
</li>
<li>
<p>update the <code>doap_isis.rdf</code> file (which provides a machine-parseable description of the project) with details of the new release.
Validate using the <a href="http://www.w3.org/RDF/Validator/">W3C RDF Validator</a> service.</p>
<div class="admonitionblock tip">
<table>
<tr>
<td class="icon">
<i class="fa icon-tip" title="Tip"></i>
</td>
<td class="content">
For more on DOAP files, see these <a href="http://projects.apache.org/doap.html">Apache policy docs</a>.
</td>
</tr>
</table>
</div>
</li>
<li>
<p>Update the <a href="https://github.com/apache/isis/blob/master/STATUS">STATUS</a> file (in root of Apache Isis' source) should be updated with details of the new release.</p>
</li>
<li>
<p>commit the changes</p>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">git add .
git commit -m "$ISISJIRA: updates release notes, STATUS and doap_isis.rdf"</code></pre>
</div>
</div>
</li>
</ul>
</div>
</div>
</div>
<div class="sect1">
<h2 id="release-source-zip"><a class="anchor" href="#release-source-zip"></a>Release Source Zip</h2>
<div class="sectionbody">
<div class="paragraph">
<p>As described in the <a href="http://www.apache.org/dev/release-publishing.html#distribution_dist">Apache documentation</a>, each Apache TLP has a <code>release/TLP-name</code> directory in the distribution Subversion repository at <a href="https://dist.apache.org/repos/dist">https://dist.apache.org/repos/dist</a>.
Once a release vote passes, the release manager should <code>svn add</code> the artifacts (plus signature and hash files) into this location.
The release is then automatically pushed to <a href="http://www.apache.org/dist/">http://www.apache.org/dist/</a> by <code>svnpubsub</code>.
Only the most recent release of each supported release line should be contained here, old versions should be deleted.</p>
</div>
<div class="paragraph">
<p>Each project is responsible for the structure of its directory.
The directory structure of Apache Isis reflects the directory structure in our git source code repo:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code>isis/
core/</code></pre>
</div>
</div>
<div class="paragraph">
<p>If necessary, checkout this directory structure:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">svn co https://dist.apache.org/repos/dist/release/isis isis-dist</code></pre>
</div>
</div>
<div class="paragraph">
<p>Next, add the new release into the appropriate directory, and delete any previous release.
The <code>upd.sh</code> script can be used to automate this:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">old_ver=$1
new_ver=$2
# constants
repo_root=https://repository.apache.org/content/repositories/releases/org/apache/isis
zip="source-release.zip"
asc="$zip.asc"
md5="$zip.md5"
#
# isis-core
#
type="core"
fullname="isis"
pushd isis-core
curl -O $repo_root/$type/$fullname/$new_ver/$fullname-$new_ver-$asc
svn add $fullname-$new_ver-$asc
curl -O $repo_root/$type/$fullname/$new_ver/$fullname-$new_ver-$md5
svn add $fullname-$new_ver-$md5
curl -O $repo_root/$type/$fullname/$new_ver/$fullname-$new_ver-$zip
svn add $fullname-$new_ver-$zip
svn delete $fullname-$old_ver-$asc
svn delete $fullname-$old_ver-$md5
svn delete $fullname-$old_ver-$zip
popd</code></pre>
</div>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">sh upd.sh [previous_release] 2.0.0-M3</code></pre>
</div>
</div>
<div class="paragraph">
<p>The script downloads the artifacts from the Nexus release repository, adds the artifacts to subversion and deletes the previous version.</p>
</div>
<div class="paragraph">
<p>Double check that the files are correct; there is sometimes a small delay in the files becoming available in the release repository.
It should be sufficient to check just the <code>md5</code> or <code>.asc</code> files that these look valid (aren&#8217;t HTML 404 error pages):</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">vi `find . -name *.md5`</code></pre>
</div>
</div>
<div class="paragraph">
<p>Assuming all is good, commit the changes:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code>svn commit -m "publishing isis source releases to dist.apache.org"</code></pre>
</div>
</div>
<div class="paragraph">
<p>If the files are invalid, then revert using <code>svn revert . --recursive</code> and try again in a little while.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="final-website-updates"><a class="anchor" href="#final-website-updates"></a>Final website updates</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Apply any remaining documentation updates:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>If there have been documentation changes made in other branches since the release branch was created, then merge these in.</p>
</li>
<li>
<p>If there have been updates to any of the schemas, copy them over:</p>
<div class="ulist">
<ul>
<li>
<p>copy the new schema(s) from <code>api/schema/src/main/resources/o.a.i.s.xxx</code></p>
<div class="paragraph">
<p>to its versioned:</p>
</div>
<div class="paragraph">
<p><code>antora/supplemental-ui/schema/xxx/xxx-ver.xsd</code></p>
</div>
</li>
<li>
<p>ensure the non-versioned is same as the highest versioned</p>
<div class="paragraph">
<p><code>antora/supplemental-ui/schema/xxx/xxx.xsd</code></p>
</div>
</li>
</ul>
</div>
</li>
<li>
<p>Commit the changes:</p>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">git add .
git commit -m "$ISISJIRA: merging in final changes to docs"</code></pre>
</div>
</div>
</li>
</ul>
</div>
<div class="paragraph">
<p>We are now ready to <a href="#generate-website">generate the website</a>.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="generate-website"><a class="anchor" href="#generate-website"></a>Generate website</h2>
<div class="sectionbody">
<div class="paragraph">
<p>We use Antora to generate the site, not only the version being release but also any previous versions listed in <code>site.yml</code>.
This is done using the <code>content.sources.url[].branches</code> properties.
We use branches for all cases - note that the branch name appears in the generated UI.
If there are patches to the documentation, we move the branches.</p>
</div>
<div class="paragraph">
<p>We therefore temporarily modify all of the <code>antora.yml</code> files (and update <code>index.html</code>) file and create a branch for this change; then we update <code>site.yml</code> with a reference to that new branch.
All of this is changed afterwards.</p>
</div>
<div class="sect2">
<h3 id="create-doc-branch"><a class="anchor" href="#create-doc-branch"></a>Create doc branch</h3>
<div class="paragraph">
<p>First, we prepare a doc branch to reference:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>Update all <code>antora.yml</code> files, eg using an IDE:</p>
<div class="ulist">
<ul>
<li>
<p><code>version: latest</code> &#8594; <code>version: 2.0.0-M3</code></p>
</li>
</ul>
</div>
</li>
<li>
<p>Commit all these changes:</p>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">git add .
git commit -m "$ISISJIRA: bumps antora.yml and index.html to $ISISREL"</code></pre>
</div>
</div>
</li>
</ul>
</div>
<div class="paragraph">
<p>We now create a branch to reference in the <code>site.yml</code>, later on.</p>
</div>
<div class="ulist">
<ul>
<li>
<p>We create the <code>2.0.0-M3</code> branch.</p>
<div class="paragraph">
<p>This mirrors the "rel/isis-2.0.0-M3" used for the formal (immutable) release tag, but is a branch because it allows us to move it, and must have this simplified name as it is used in the "edit page" link of the site template.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">git branch 2.0.0-M3
git push origin 2.0.0-M3</code></pre>
</div>
</div>
</li>
</ul>
</div>
<div class="paragraph">
<p>Finally, revert the last commit (backing out changes to <code>antora.yml</code> files):</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">git revert HEAD</code></pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="update-index-html-site-yml-generate"><a class="anchor" href="#update-index-html-site-yml-generate"></a>Update <code>index.html</code> &amp; site.yml` &amp; generate</h3>
<div class="paragraph">
<p>Lastly, we update <code>index.html</code> and then <code>site.yml</code></p>
</div>
<div class="ulist">
<ul>
<li>
<p>Update the home page of the website, <code>antora/supplemental-ui/index.html</code></p>
<div class="paragraph">
<p>Note that this isn&#8217;t performed in the docs branch (<a href="#create-doc-branch">previous section</a>) because the supplemental files are <em>not</em> versioned as a doc component:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>update any mention of <code>master</code> &#8594; <code>2.0.0-M3</code></p>
<div class="paragraph">
<p>This should be the two sets of starter app instructions for helloworld and simpleapp.</p>
</div>
</li>
<li>
<p>update any mention of <code>latest</code> &#8594; <code>2.0.0-M3</code></p>
<div class="paragraph">
<p>This should be in hyperlinks, <code>&lt;a href="docs/&#8230;&#8203;"&gt;</code></p>
</div>
</li>
</ul>
</div>
</li>
<li>
<p>Now update <code>site.yml</code></p>
<div class="paragraph">
<p>This will reference the new branch (and any previous branches).
Every content source needs to be updated:</p>
</div>
<div class="ulist">
<ul>
<li>
<p><code>branches: HEAD</code> &#8594; <code>branches: 2.0.0-M3</code></p>
</li>
</ul>
</div>
</li>
<li>
<p>commit this change, too (there&#8217;s no need to push):</p>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">git add .
git commit -m "$ISISJIRA: adds tag to site.yml"</code></pre>
</div>
</div>
</li>
</ul>
</div>
<div class="paragraph">
<p>We are now in a position to actually generate the Antora website:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>generate the website:</p>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">sh preview.sh</code></pre>
</div>
</div>
<div class="paragraph">
<p>This will write to <code>antora/target/site</code>; we&#8217;ll use the results in the <a href="#publish-website">next section</a>.</p>
</div>
</li>
</ul>
</div>
<div class="paragraph">
<p>Finally, revert the last commit (backing out changes to <code>site.yml</code>):</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">git revert HEAD</code></pre>
</div>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="publish-website"><a class="anchor" href="#publish-website"></a>Publish website</h2>
<div class="sectionbody">
<div class="paragraph">
<p>We now copy the results of the Antora website generation over to the <code>isis-site</code> repo:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>in the <code>isis-site</code> repo, check out the <code>asf-site</code> branch:</p>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">cd ../isis-site
git checkout asf-site
git pull --ff-only</code></pre>
</div>
</div>
</li>
<li>
<p>still in the <code>isis-site</code> repo, delete all the files in <code>content/</code> <em>except</em> for the <code>schema</code> and <code>versions</code> directories:</p>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">pushd content
for a in $(ls -1 | grep -v schema | grep -v versions)
do
rm -rf $a
done
popd</code></pre>
</div>
</div>
</li>
<li>
<p>Copy the generated Antora site to <code>isis-site</code> repo&#8217;s <code>contents</code> directory:</p>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">cd ../isis
cp -Rf antora/target/site/* ../isis-site/content/.</code></pre>
</div>
</div>
</li>
<li>
<p>Back in the <code>isis-site</code> repo, commit the changes and preview:</p>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">cd ../isis-site
git add .
git commit -m "$ISISJIRA : production changes to website"
sh preview.sh</code></pre>
</div>
</div>
</li>
<li>
<p>If everything looks ok, then push the changes to make live, and switch back to the <code>isis</code> repo:</p>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">git push origin asf-site
cd ../isis</code></pre>
</div>
</div>
</li>
</ul>
</div>
</div>
</div>
<div class="sect1">
<h2 id="merge-in-release-branch"><a class="anchor" href="#merge-in-release-branch"></a>Merge in release branch</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Because we release from a branch, the changes made in the branch should be merged back from the release branch back into the <code>master</code> branch.</p>
</div>
<div class="paragraph">
<p>In the <code>isis</code> repo:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">git checkout master # update master with latest
git pull
git merge release-2.0.0-M3-RC1 # merge branch onto master
git push origin --delete release-2.0.0-M3-RC1 # remote branch no longer needed
git branch -d release-2.0.0-M3-RC1 # branch no longer needed</code></pre>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="bump-isisrel-in-site-yml"><a class="anchor" href="#bump-isisrel-in-site-yml"></a>Bump {isisrel} in <code>site.yml</code></h2>
<div class="sectionbody">
<div class="paragraph">
<p>In <code>site.yml</code> file, bump the version of <code>{isisrel}</code>, and commit.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="update-the-asf-reporter-website"><a class="anchor" href="#update-the-asf-reporter-website"></a>Update the ASF Reporter website</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Log the new release in the <a href="https://reporter.apache.org/addrelease.html?isis">ASF Reporter website</a>.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="announce-the-release"><a class="anchor" href="#announce-the-release"></a>Announce the release</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Announce the release to <a href="mailto:users@isis.apache.org">users mailing list</a>.</p>
</div>
<div class="paragraph">
<p>For example, for a release of Apache Isis Core, use the following subject:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code>[ANN] Apache Isis version 2.0.0-M3 Released</code></pre>
</div>
</div>
<div class="paragraph">
<p>And use the following body (summarizing the main points as required):</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code>The Apache Isis team is pleased to announce the release of Apache Isis 2.0.0-M3.
New features in this release include:
* ...
Full release notes are available on the Apache Isis website at [1].
You can access this release directly from the Maven central repo [2].
Alternatively, download the release and build it from source [3].
Enjoy!
--The Apache Isis team
[1] http://isis.apache.org/relnotes/latest/about.html
[2] http://search.maven.org
[3] http://isis.apache.org/downloads.html</code></pre>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="blog-post"><a class="anchor" href="#blog-post"></a>Blog post</h2>
<div class="sectionbody">
<div class="paragraph">
<p><a href="https://blogs.apache.org/roller-ui/login.rol">Log onto</a> the <a href="http://blogs.apache.org/isis/">Apache blog</a> and create a new post.
Copy-n-paste the above mailing list announcement should suffice.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="update-dependencies"><a class="anchor" href="#update-dependencies"></a>Update dependencies</h2>
<div class="sectionbody">
<div class="paragraph">
<p>With the release complete, now is a good time to bump versions of dependencies (so that there is a full release cycle to identify any possible issues).</p>
</div>
<div class="paragraph">
<p>You will probably want to create a new JIRA ticket for these updates (or if minor then use the "catch-all" JIRA ticket raised earlier for the next release).</p>
</div>
<div class="sect2">
<h3 id="merge-in-any-changes-from-org-apacheapache"><a class="anchor" href="#merge-in-any-changes-from-org-apacheapache"></a>Merge in any changes from <code>org.apache:apache</code></h3>
<div class="paragraph">
<p>Check (via <a href="http://search.maven.org/#search%7Cga%7C1%7Cg%3A%22org.apache%22%20a%3A%22apache%22">search.maven.org</a>) whether there is a newer version of the Apache parent <code>org.apache:apache</code>.</p>
</div>
<div class="paragraph">
<p>If there are, merge in these changes to the <code>core-parent</code> POM.</p>
</div>
</div>
<div class="sect2">
<h3 id="update-plugin-versions"><a class="anchor" href="#update-plugin-versions"></a>Update plugin versions</h3>
<div class="paragraph">
<p>The <code>maven-versions-plugin</code> should be used to determine if there are newer versions of any of the plugins used to build Apache Isis.
Since this goes off to the internet, it may take a minute or two to run:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">mvn versions:display-plugin-updates &gt; /tmp/foo
grep "\-&gt;" /tmp/foo | /bin/sort -u</code></pre>
</div>
</div>
<div class="paragraph">
<p>Review the generated output and make updates as you see fit.
(However, if updating, please check by searching for known issues with newer versions).</p>
</div>
</div>
<div class="sect2">
<h3 id="update-dependency-versions"><a class="anchor" href="#update-dependency-versions"></a>Update dependency versions</h3>
<div class="paragraph">
<p>The <code>maven-versions-plugin</code> should be used to determine if there are newer versions of any of Isis' dependencies.
Since this goes off to the internet, it may take a minute or two to run:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">mvn versions:display-dependency-updates &gt; /tmp/foo
grep "\-&gt;" /tmp/foo | /bin/sort -u</code></pre>
</div>
</div>
<div class="paragraph">
<p>Update any of the dependencies that are out-of-date.
That said, do note that some dependencies may show up with a new dependency, when in fact the dependency is for an old, badly named version.
Also, there may be new dependencies that you do not wish to move to, eg release candidates or milestones.</p>
</div>
<div class="paragraph">
<p>For example, here is a report showing both of these cases:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlightjs highlight"><code class="language-bash hljs" data-lang="bash">[INFO] asm:asm ..................................... 3.3.1 -&gt; 20041228.180559
[INFO] commons-httpclient:commons-httpclient .......... 3.1 -&gt; 3.1-jbossorg-1
[INFO] commons-logging:commons-logging ......... 1.1.1 -&gt; 99.0-does-not-exist
[INFO] dom4j:dom4j ................................. 1.6.1 -&gt; 20040902.021138
[INFO] org.datanucleus:datanucleus-api-jdo ................ 3.1.2 -&gt; 3.2.0-m1
[INFO] org.datanucleus:datanucleus-core ................... 3.1.2 -&gt; 3.2.0-m1
[INFO] org.datanucleus:datanucleus-jodatime ............... 3.1.1 -&gt; 3.2.0-m1
[INFO] org.datanucleus:datanucleus-rdbms .................. 3.1.2 -&gt; 3.2.0-m1
[INFO] org.easymock:easymock ................................... 2.5.2 -&gt; 3.1
[INFO] org.jboss.resteasy:resteasy-jaxrs ............. 2.3.1.GA -&gt; 3.0-beta-1</code></pre>
</div>
</div>
<div class="paragraph">
<p>For these artifacts you will need to search <a href="http://search.maven.org">Maven central repo</a> directly yourself to confirm there are no newer dependencies not shown in this list.</p>
</div>
</div>
</div>
</div>
</article>
<aside class="article-aside toc" role="navigation">
<p class="toc-title">On this page</p>
<div id="article-toc"></div>
</aside>
</main>
</div>
<footer class="footer">
<div class="content">
<div class="copyright">
<p>
Copyright © 2010~2020 The Apache Software Foundation, licensed under the Apache License, v2.0.
<br/>
Apache, the Apache feather logo, Apache Isis, and the Apache Isis project logo are all trademarks of The Apache Software Foundation.
</p>
</div>
<div class="revision">
<p>Revision: SNAPSHOT</p>
</div>
</div>
</footer>
<script src="../../_/js/site.js"></script>
<script async src="../../_/js/vendor/highlight.js"></script>
<script src="../../_/js/vendor/jquery-3.4.1.min.js"></script>
<script src="../../_/js/vendor/jquery-ui-1.12.1.custom.widget-only.min.js"></script>
<script src="../../_/js/vendor/jquery.tocify.min.js"></script>
<script>
$(function() {
$("#article-toc").tocify( {
showEffect: "slideDown",
hashGenerator: "pretty",
hideEffect: "slideUp",
selectors: "h2, h3",
scrollTo: 120,
smoothScroll: true,
theme: "jqueryui",
highlightOnScroll: true
} );
});
</script>
</body>
</html>