blob: d112cf0889c9ff355c5d78dc493dac0b9c431cf5 [file]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "https://www.w3.org/TR/html4/loose.dtd">
<!-- ====================================================================== -->
<!-- GENERATED FILE, DO NOT EDIT, EDIT THE XML FILE IN xdocs INSTEAD! -->
<!-- ====================================================================== -->
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
<style type="text/css">@import "stylesheets/base.css";</style>
<meta name="author" value="Apache UIMA Documentation Team">
<meta name="email" value="dev@uima.apache.org">
<title>Apache UIMA - Checklist: Release</title>
<!-- Begin Cookie Consent plugin by Silktide - https://silktide.com/cookieconsent -->
<!-- Commented out because implied consent is not compatible with GDPR -->
<!--
<script type="text/javascript">
window.cookieconsent_options = {"message":"This website uses cookies to ensure you get the best experience on our website","dismiss":"Got it!","learnMore":"More info","link":"https://uima.apache.org/privacy-policy.html","theme":"dark-bottom"};
</script>
<script type="text/javascript" src="/cookieconsent2/cookieconsent.min.js"></script>
-->
<!-- End Cookie Consent plugin -->
<!-- Begin Google Analytics -->
<!-- Commented out because GA requires consent according to GDPR -->
<!--
<script>
(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-70846351-1', 'auto');
ga('set', 'anonymizeIp', true);
ga('send', 'pageview');
</script>
-->
<!-- End Google Analytics -->
</head>
<body>
<div class="topLogos">
<table border="0" width="100%" cellspacing="0">
<!-- TOP IMAGE -->
<tr>
<td align='LEFT'>
<a href="index.html">
<img style="border: 1px solid black;" src="./images/UIMA_banner2tlpTm.png" alt="UIMA project logo" border="0"/>
</a>
</td>
<td align='CENTER'>
<div class="pageBanner">Checklist: Release</div>
</td>
<td align='RIGHT'>
<a href="https://www.apache.org">
<img src="./images/asf-logo-on-white-smallTm.png" alt="Apache UIMA" border="0"/>
</a>
</td>
</tr>
</table>
<hr noshade="" size="1"/>
</div>
<table border="0" width="100%" cellspacing="4">
<tr>
<td align='RIGHT' colspan="2">
<form method="get" action="https://www.google.com/search">
Search the site
<input type="text" name="q" size="25" maxlength="255" value="" />
<input type="hidden" name="sitesearch" value="https://uima.apache.org/" />
<input name="Search" value="Search Site" type="submit"/>
</form>
</td>
</tr>
<tr> <!-- LEFT SIDE NAVIGATION -->
<td width="20%" valign="top">
<!-- regular menu -->
<div class="navBar">
<br/>
<div class="navBarItem"> <div class="navPartHeading">General</div>
</div>
<div class="navBar">
<div class="navBarItem"> <a href="./index.html">Home</a>
</div>
<div class="navBarItem"> <a href="./downloads.cgi">Downloads</a>
</div>
<div class="navBarItem"> <a href="./documentation.html">Documentation</a>
</div>
<div class="navBarItem"> <a href="./news.html">News</a>
</div>
<div class="navBarItem"> <a href="./publications.html">Publications</a>
</div>
<br style="line-height: .5em"/>
<div class="navBarItem"> <a href="https://issues.apache.org/jira/browse/uima" target="_blank" rel="noopener">Issue tracker <img src="images/offsitelink.png"/></a>
</div>
<div class="navBarItem"> <a href="https://cwiki.apache.org/confluence/display/UIMA/" target="_blank" rel="noopener">Wiki <img src="images/offsitelink.png"/></a>
</div>
<br style="line-height: .5em"/>
<div class="navBarItem"> <a href="https://cwiki.apache.org/confluence/display/UIMA/Powered+by+Apache+UIMA" target="_blank" rel="noopener">Powered By UIMA <img src="images/offsitelink.png"/></a>
</div>
</div>
<br/>
<div class="navBarItem"> <div class="navPartHeading">Community</div>
</div>
<div class="navBar">
<div class="navBarItem"> <a href="./get-involved.html">Get Involved</a>
</div>
<div class="navBarItem"> <a href="./mail-lists.html">Mailing Lists</a>
</div>
<div class="navBarItem"> <a href="./contribution-policy.html">Contribution Policies</a>
</div>
<div class="navBarItem"> <a href="./faq.html">FAQ</a>
</div>
<div class="navBarItem"> <a href="./project-guidelines.html">Project Guidelines</a>
</div>
</div>
<br/>
<div class="navBarItem"> <div class="navPartHeading">Components & Tools</div>
</div>
<div class="navBar">
<div class="navBarItem"> <a href="./sandbox.html#uima-addons-annotators">Annotators</a>
</div>
<div class="navBarItem"> <a href="./toolsServers.html">Tools & Servers</a>
</div>
<div class="navBarItem"> <a href="./sandbox.html">Addons and Sandbox</a>
</div>
<div class="navBarItem"> <a href="./ruta.html">UIMA Ruta</a>
</div>
<div class="navBarItem"> <a href="https://github.com/apache/uima-uimafit" target="_blank" rel="noopener">uimaFIT <img src="images/offsitelink.png"/></a>
</div>
<div class="navBarItem"> <a href="./external-resources.html">External Resources</a>
</div>
</div>
<br/>
<div class="navBarItem"> <div class="navPartHeading">Development</div>
</div>
<div class="navBar">
<div class="navBarItem"> <a href="./dev-quick.html">Quick Start: building</a>
</div>
<div class="navBarItem"> <a href="./building-uima.html">Building from Source</a>
</div>
<div class="navBarItem"> <a href="./one-time-setup.html">One-time setups</a>
</div>
<div class="navBarItem"> <a href="./svn.html">Source Code</a>
</div>
<div class="navBarItem"> <a href="./release.html">Doing a UIMA release</a>
</div>
<div class="navBarItem"> <a href="https://www.apache.org/security/committers.html" target="_blank" rel="noopener">Doing a CVE (Apache) <img src="images/offsitelink.png"/></a>
</div>
<div class="navBarItem"> <a href="./eclipse-update-site.html">Eclipse Update Sites</a>
</div>
<div class="navBarItem"> <a href="./git.html">GIT</a>
</div>
<div class="navBarItem"> <a href="./codeConventions.html">Code Conventions</a>
</div>
<div class="navBarItem"> <a href="./uima-specification.html">UIMA Specification (OASIS)</a>
</div>
<div class="navBarItem"> <a href="./team-list.html">Project Team</a>
</div>
<div class="navBarItem"> <a href="./maven-design.html">Maven Use</a>
</div>
<div class="navBarItem"> <a href="./updating-website.html">Updating this Website</a>
</div>
</div>
<br/>
<div class="navBarItem"> <div class="navPartHeading">Events and Conferences</div>
</div>
<div class="navBar">
<div class="navBarItem"> <a href="./coling14.html">COLING 2014</a>
</div>
<div class="navBarItem"> <a href="./gscl13.html">GSCL 2013</a>
</div>
<div class="navBarItem"> <a href="./iks09.html">IKS 2009</a>
</div>
<div class="navBarItem"> <a href="./gscl09.html">GSCL 2009</a>
</div>
<div class="navBarItem"> <a href="./lsm09.html">LSM 2009</a>
</div>
<div class="navBarItem"> <a href="./lrec08.html">LREC 2008</a>
</div>
<div class="navBarItem"> <a href="./gldv07.html">GLDV 2007</a>
</div>
</div>
<br/>
<div class="navBarItem"> <div class="navPartHeading">ASF</div>
</div>
<div class="navBar">
<div class="navBarItem"> <a href="https://www.apache.org/licenses/" target="_blank" rel="noopener">License <img src="images/offsitelink.png"/></a>
</div>
<div class="navBarItem"> <a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noopener">ASF Sponsors <img src="images/offsitelink.png"/></a>
</div>
<div class="navBarItem"> <a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noopener">ASF Sponsorship <img src="images/offsitelink.png"/></a>
</div>
<div class="navBarItem"> <a href="./security_report">Security</a>
</div>
</div>
</div>
</td>
<td width="80%" align="left" valign="top">
<div class="sectionTable">
<table class="sectionTable">
<tr><td>
<a name="Checklist: Release"><h1><img src="images/UIMA_4sq50tightCropSolid.png"/>&nbsp;Checklist: Release</h1></a>
</td></tr>
<tr><td>
<blockquote class="sectionBody">
<ol>
<li>Do <a href="one-time-release-setup.html">one-time setup</a> required for releasing.</li>
<li>Finish up any changes, close Jiras, assign Jiras to proper release(s).</li>
<li>Update the property in the main pom controlling the ISSUES-FIXED</li>
<li><b>NEW ! </b>Update the parent-pom settings for API compatibility: previous version and compat.level</li>
<li>Update the READMEs and RELEASE-NOTES.</li>
<li>Announce on the dev list that you're doing a release so others can get any changes in, and also
know not to be committing to trunk while you're in the middle of doing the release.</li>
<li>Make a new build directory for this release, and source control checkout the trunk or git clone the repo and switch to the branch (if needed).
(svn "export" instead of checkout
fails at a later commit step by the release plugin). This is so you can
preserve the build for later upload of selected artifacts to the distribution spot.
<p>
If instead you are building from an existing checkout, do a source control update to be sure the workspace is up-to-date.
</p>
</li>
<li>Purge your local maven repository of artifacts being built by running in the
top level directory you'll be building from:
<br /><br />
<code>mvn dependency:purge-local-repository</code><br /><br />
Note that this will immediately re-resolve the dependencies from the maven repositories
you have configured.
<p>Note: this doesn't seem to work, as the purged items end up being needed by the recursive module build.
So, instead, just go to the .m2 .../uima/ node and consider deleting that directory.</p>
</li>
<li>Do a full build with deploy of the (last) snapshot before release: mvn clean deploy -Papache-release</li>
<li>If retrying a release candidate, delete the old rc-xxx in svn xxx/tags/ or the git branch for the tag.</li>
<li>If retrying a release candidate, <code><b>close</b></code> (and <code><b>drop</b></code> as appropriate) any previous repository.apache.org staging repo</li>
<!--li>(If remerging a branch: Note- best to do these if possible at the root of aggregations,
outside of Eclipse, so svn "batching" can work - will be quite a bit fraster)
<ol><li>update branch working copy to head</li>
<li>merge trunk head -> working copy (fully recursive)</li>
<li>commit</li>
<li>switch working copy to trunk (fully recursive)</li>
<li>merge reintegrate branch -> trunk</li>
<li>commit</li>
<li>(cleanup at end- delete the old branch)</li>
</ol>
</li-->
<p>More details on next steps are
<a href="https://maven.apache.org/developers/release/apache-release.html">here</a></p>
<ol>
<p>Release one or more artifacts into the Apache Nexus staging repository.
You can do multiple release:prepare/perform steps, with subsequent steps
depending on the previous artifacts in their "release" version.</p>
<li>Do next steps in top release artifact (single module, or mult-module top project).
<ol>
<p>Release one or more artifacts into the staging repo.</p>
<li>Scan poms to be sure there are <b>no</b> unintentional -SNAPSHOTs</li>.
<li><code>mvn release:prepare -DdryRun</code> and diff the resulting poms
to verify nothing unintentional is dropped or updated incorrectly</li>
For multi-module projects, where all the submodules have the same version, use: <br />
<code>mvn release:prepare -DdryRun -DautoVersionSubmodules</code>.
<li><code>mvn release:clean</code> to restore projects</li>
<li><code>mvn release:prepare [-DautoVersionSubmodules]</code>.
Try to accept the default suggestions for names; you might change the source control tag to include a "-rc1"
suffix indicating a release candidate number.</li>
<li><code>mvn release:perform</code></li>
</ol>
</li>
<li>Repeat above steps for all things being released in one go (not already in an aggregate).</li>
<li>login to <a href="https://repository.apache.org">https://repository.apache.org</a>
using your Apache LDAP credentials, find the staging artifact, and right click - "close" it
after all things that are being included in this release are present.</li>
<!--li>Update the trunk: for all references that should now refer to the staged release version
</li>
<li>build/test these</li>
<li>commit trunk</li-->
</ol>
<!--li>
Repeat above steps for all sets of dependent things where you need to update the dependencies to
depend on the release version of previous steps. When you're done, you will have 1 or more
"closed" staging repositories, each having a unique URL.
</li-->
<li>If necessary, run mvn release:prepare on the eclipse update site. This will create the source control tag,
and create the needed artifacts in the target/eclipse-update-site.
No need to run release:perform because no artifacts from this are going to Maven central distribution.
<p>Note that the target/eclipse-update-site will have .svn files - don't delete these - they're needed when
you decide to "publish" via comitting these to the release svn.</p></li>
<li>Copy any artifacts (together with their signings) to the staging spot.
A suggested approach: Make a new dir in the build project, called svnUpload (or whatever), and
copy the artifacts (<b>from the build/target/checkout/target directory</b>)(typically the
bin/zip/tar and the source release and all the signature/checksums) into this dir. Then do the svn command:
<pre>cd the-svnUpload-directory
svn import -m "commit msg, e.g. uimaj-2.8.0 rc5" . https://dist.apache.org/repos/dist/dev/uima/uimaj/n.n.n-rc1/artifacts
</pre>
And do something similar for the eclipse update sub-site.
<p>Be sure to copy artifacts from the build-from tag spot, which should have a path like:
...[top level project]/target/checkout/target. Note this is not from [top level project]/target.
Doing this will guarantee that you're posting the artifacts built from the tag (which could be
different from the release:prepare build in /target if someone snuck in a svn commit at the right moment.)</p>
</li>
<li>Send [VOTE] message to dev list. List the staging repository that testers
will need to add to their <code>settings.xml</code> files, and the distribution SVN repo link.</li>
<li>Post RESULT message</li>
<li>For Eclipse plugins, <a href="dev-eclipse-plugin-signing.html">sign the jars</a>.</li>
<li>Delete any artifacts from the staging repo that aren't supposed to go to Maven Central (if any).
The uimaj build doesn't put the bin.zip or bin.tar artifacts on the staging repo, but
other builds might need some cleanup.
</li>
<li>Promote the release(s) from the staging repositories</li>
<li>Add the approved staged artifacts to the release/uima spot. This is
https://dist.apache.org/repos/dist/release/uima/uimaj-x.y.z (replace the last with the thing being released).
Assuming you previously promoted the release candidate to https://dist.apache.org/repos/dist/dev/uima/uimaj/xxx/yyy,
you can use the command (modify the details, of course)
<pre>svn copy https://dist.apache.org/repos/dist/dev/uima/uimaj/2.10.0-rc1/artifacts
https://dist.apache.org/repos/dist/release/uima/uimaj-2.10.0 -m "release uimaj-2.10.0"
</pre>
<p>If adding additional new directories to the target, use the --parent parameter to tell svn to create those.</p>
Do not add files like POMs which have line-endings, if they have signatures; the files added should
be "binary" style files. (The line endings (if you build on windows) will be changed upon upload to svn,
which will result in bad signatures).
</li>
<li>Eclipse update sites:
<ul>
<li>If you a resetting the update subsite, do these steps:
<ol>
<li>rename the update subsite to xxx-a.b.c-d.e.f where a.b.c is the first version and d.e.f is the last
version. You do this via svn copy command in the dist.apache.org release spot.
If you have a GUI tool like tortisesvn, you can use that.</li>
<li>after the rename, wait until you see this in the archive.apache.org spot, then delete it from the
dist.apache.org release svn. Although this will delete it on the apache mirror system, it will remain
in the archive.apache.org spot.</li>
<li>now, checkout the dist.apache.org release subsite, and modify it by deleting items, adding items, and
modifying items in the working set. Then commit these changes so the current site reflects the new
one.</li>
</ol>
</li>
<li>Otherwise, the eclipse-update-sub-site project's output folder in the target directory should
already be svn working copies, so you can commit these.
<p>Commit the target/xxxx/yyyy/features, .../plugins, and the artifacts/content jars and signatures.</p>
<p><b>DO NOT COPY the dist...dev site</b>, instead, use the build's update site with the signed jars, and just "commit" it.
</p>
If using Windows and have tortise svn installed, cd to the target/eclipse-update-site/uimaj (or wherever your update site
was built) and right click and say commit (and click the "all" selection to upload the new files).
</li>
</ul>
</li>
<li>Check the www.apache.org/dist/uima site using
<a target="_blank" rel="noopener" href=" https://checker.apache.org/projs/uima.html"> https://checker.apache.org/projs/uima.html</a></li>
<li>update the UIMA website docs/d with any generated docs, in a manner to
<a href="saving-svn-resources.html">minimize SVN space</a> use, if possible.
This includes: PDFs, HTML versions of docbooks plus the index.html; all go on the
website under the uima.apache.org/d/ (non-SVN source) directory. Update the index.html
as needed for the version.
</li>
<!--li>Copy released artifacts to targets: bin, src, p.a.o/www/www.apache.org/dist/uima,
new features / plugins from Eclipse update site target/eclipse-update-site to .../dist/uima/eclipse-update-site
(add to what's already there).</li-->
<!-- li>Copy released artifacts to targets: bin, src, p.a.o/www/www.apache.org/dist/uima. <u>TEMPORARY:</u>
Copy the updated composite repository from eclipse-packagings/eclipse-update-site to .../dist/uima/eclipse-update-site.</li-->
<li>Copy RELEASE_NOTES and issuesFixed, and maybe api-change-report
from the .../target/checkout where
the mvn release:perform was done from to the UIMA web site in doc/d/[project-version].</li>
<li>If using links to api change report, insert needed folders and copy api change report. For example,
for uimaj: insert uimaj-core folder into .../d/uimaj-x.y.z and copy in the api change report from uimaj-core.</li>
<li>update the current-release folder, if in use. Do this by doing an svn copy from uima-website/docs/d/xxx-y.y.y to
.../docs/d/xxx-current. It's convenient to use tortise-svn: navigate to the docs/d, select uimaxxx-y.y.y folder, and then
right-click and pick copy to ... and specify docs/d/uimzxxx-current folder.</li>
<li>Update the downloads page of the web site, and the xdocs/stylesheets/project.xml for the new release.</li>
<li>Update Jira version info to reflect the release status and date</li>
<li>Log into <a target="_blank" rel="noopener" href="https://reporter.apache.org/addrelease.html?uima">
https://reporter.apache.org/addrelease.html?uima</a> and add release data (e.g. uimaj-2.10.0 2017-04-04).</li>
<li>Fixup the tag.
<ul><li>SVN: Fix the SVN tag for the release candidate if needed, removing any -rcXX, to indicate the release.</li>
<li>GIT: make a new tag for the release with the name rel/...tag-name.
<ul><li><code>git tag -m "proj-name-1.2.3 rcXXX released" rel/proj-name-x.y.z proj-name-x.y.z^{}</code>
The strange notation ^{} peels the annotated tag and returns a ref to the actual commit.</li>
<li><code>git push origin rel/proj-name-x.y.z</code> This updates the remote repo with the new tag.</li>
<li><p>Merge the release branch (if one was made) into the main branch. You can use the github.com site
to do this: make a pull request targeting the master, from the release branch, and after checks pass,
accept the pull. Alternatively, you can pull from the release branch into the master
in a local checkout, and push the result.</p>
<p>If no release branch was made, then the maven release prepare/perform will have already updated
the master to the next snapshot level.</p></li>
</ul>
</li>
</ul>
</li>
<li>After release appears on maven central, post an appropriate announce letter</li>
<li>Add a news item for the release</li>
<li>Tweet about the release</li>
<li>Add release to next Board report</li>
<li>Celebrate :-)</li>
</ol>
</blockquote>
</p>
</td></tr>
</table>
</td>
</tr>
<!-- FOOTER -->
<tr><td colspan="2">
<hr noshade="" size="1"/>
</td></tr>
<tr><td colspan="2">
<table class="pageFooter">
<tr>
<td><a href="index.html">Home</a></td>
<td><a href="privacy-policy.html">Privacy Policy</a></td>
<td style="font-size:75%">
Copyright &#169; 2006-2024, The Apache Software Foundation.<br/>
Apache UIMA, UIMA, the Apache UIMA logo and the Apache Feather logo are trademarks of The Apache Software Foundation.<br/>
All other marks mentioned may be trademarks or registered trademarks of their respective owners.
</td>
<td><a href="mailto:dev@uima.apache.org">Contact us</a></td>
</tr>
</table>
</td></tr>
</table>
</body>
</html>