<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<!-- 
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License.  You may obtain a copy of the License at

 http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied.  See the License for the
specific language governing permissions and limitations
under the License. 
-->
<html lang="en">
  <head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta name="description" content="Apache Olingo provides libraries which enable developers to implement OData producers and OData consumers. The available OData Java library implements OData version 2.0. In future on goal is to provide an OData 4.0 compliant library once the OData standard is published at OASIS. The focus within the community is currently on the Java technology but it is up to the community to discuss if other environments find interest.">
    <meta name="author" content="">
    <link rel="icon" href="/favicon.ico">
    <title>Apache Olingo Library</title>
    <!-- Bootstrap core CSS -->
    <link href="/css/bootstrap.css" rel="stylesheet" type="text/css"><!-- Custom styles for this template -->
    <link href="/css/navbar.css" rel="stylesheet" type="text/css"><!-- Just for debugging purposes. Don't actually copy these 2 lines! -->
    <link href="/css/offcanvas.css" rel="stylesheet" type="text/css"><!-- Custom styles for this template -->
    <link rel="stylesheet" href="/css/main.css">
    <!--[if lt IE 9]><script src="/js/ie8-responsive-file-warning.js"></script><![endif]-->
    <style>
.headerlink {
  visibility: hidden;
}
dt:hover > .headerlink, p:hover > .headerlink, td:hover > .headerlink, h1:hover > .headerlink, h2:hover > .headerlink, h3:hover > .headerlink, h4:hover > .headerlink, h5:hover > .headerlink, h6:hover > .headerlink {
  visibility: visible
}    </style>
    <script src="/js/ie-emulation-modes-warning.js" type="text/javascript">
</script><!-- IE10 viewport hack for Surface/desktop Windows 8 bug -->

    <script src="/js/ie10-viewport-bug-workaround.js" type="text/javascript">
</script><!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
    <!--[if lt IE 9]>
      <script src="/js/html5shiv.min.js"></script>
      <script src="/js/respond.min.js"></script>
    <![endif]-->
  </head>

  <body>
    <div class="container">
      <!-- Static navbar -->
      <div class="navbar navbar-default" role="navigation">
        <div class="container-fluid">
          <div class="navbar-header">
            <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
              <span class="sr-only">Toggle navigation</span>
             <span class="icon-bar"></span>
             <span class="icon-bar"></span>
             <span class="icon-bar"></span>
            </button>
              <img class="navbar-brand" src="/img/OlingoOrangeTM.png" style="width:62px;" >
              <a class="navbar-brand" href="/">Apache Olingo™</a>
          </div>
          <div class="navbar-collapse collapse">
            <ul class="nav navbar-nav">
              <li class="dropdown">
                  <a href="#" class="dropdown-toggle" data-toggle="dropdown">ASF <b class="caret"></b></a>
                  <ul class="dropdown-menu">
                      <li><a href="https://www.apache.org/foundation/">ASF Home</a></li>
                      <li><a href="https://projects.apache.org/">Projects</a></li>
                      <li><a href="https://people.apache.org/">People</a></li>
                      <li><a href="https://www.apache.org/foundation/getinvolved.html">Get Involved</a></li>
                      <li><a href="https://www.apache.org/dyn/closer.cgi">Download</a></li>
                      <li><a href="https://www.apache.org/security/">Security</a></li>
                      <li><a href="https://www.apache.org/foundation/sponsorship.html">Support Apache</a></li>
                  </ul>
              </li>

              <li><a href="https://www.apache.org/licenses/">License</a></li>

              <li class="dropdown">
                  <a href="#" class="dropdown-toggle" data-toggle="dropdown">Download <b class="caret"></b></a>
                  <ul class="dropdown-menu">
                      <li><a href="/doc/odata2/download.html">Download OData 2.0 Java</a></li>
                      <li><a href="/doc/odata4/download.html">Download OData 4.0 Java</a></li>
                      <li><a href="/doc/javascript/download.html">Download OData 4.0 JavaScript</a></li>
                  </ul>
              </li>

              <li class="dropdown">
                  <a href="#" class="dropdown-toggle" data-toggle="dropdown">Documentation <b class="caret"></b></a>
                  <ul class="dropdown-menu">
                    <li><a href="/doc/odata2/index.html">Documentation OData 2.0 Java</a></li>
                    <li><a href="/doc/odata4/index.html">Documentation OData 4.0 Java</a></li>
                    <li><a href="/doc/javascript/index.html">Documentation OData 4.0 JavaScript</a></li>
                  </ul>
              </li>
              <li><a href="/support.html">Support</a></li>
              <li><a href="/contribute.html">Contribute</a></li>

            </ul>

			  <a class="navbar-right" href="https://www.apache.org/foundation/" target="_blank">
          <img class="navbar-right" height="50px" src="/img/asf_logo_url.svg" alt="Apache Software Foundation">
        </a>

			</div><!--/.nav-collapse -->
        </div><!--/.container-fluid -->
      </div><!-- Main component for a primary marketing message or call to action -->
    <h1 id="apache-olingo-odata-client-for-javascript-release-documentation">Apache Olingo OData Client for JavaScript Release Documentation<a class="headerlink" href="#apache-olingo-odata-client-for-javascript-release-documentation" title="Permalink">&para;</a></h1>
<hr/>
<h3 id="introduction">Introduction<a class="headerlink" href="#introduction" title="Permalink">&para;</a></h3>
<p>This document describes the release guidelines for Apache Olingo OData Client for JavaScript (referenced in this document as ODataJS).
This is similar to <a href="https://maven.apache.org/developers/release/apache-release.html">standard Apache procedures to release</a>
for Maven based projects at Apache, but since it is an JavaScript library it is adopted to be used with grunt js.</p>
<h3 id="build-environment">Build Environment<a class="headerlink" href="#build-environment" title="Permalink">&para;</a></h3>
<p>Apache Olingo is built and released with <a href="https://nodejs.org/">Node.js&reg;</a> in combination with
<a href="https://gruntjs.com/">grunt task runner</a></p>
<h3 id="release-artifacts">Release Artifacts<a class="headerlink" href="#release-artifacts" title="Permalink">&para;</a></h3>
<p>An Apache Olingo ODataJS release consists of:</p>
<ul>
<li>
<p><strong>Main artifact</strong>: <code>&lt;artifactId&gt;-&lt;version&gt;.&lt;ext&gt;</code>
<br/> A library artifact bundle containing all libraries necessary use the OData Client for JavaScript
<br/> <strong>Package formats</strong>: zip.</p>
</li>
<li>
<p><strong>JavaScript Doc artifact</strong>: <code>&lt;artifactId&gt;-&lt;version&gt;-doc.&lt;ext&gt;</code>
<br/> A documentation bundle containing the documentation for the ODataJS library.
<br/> <strong>Package formats</strong>: zip.</p>
</li>
<li>
<p><strong>Source artifact</strong>: <code>&lt;artifactId&gt;-&lt;version&gt;-sources.&lt;ext&gt;</code>
<br/> A source-release bundle containing all files the sources necessary to build all other artifacts.
<br/> <strong>Package formats</strong>: zip.</p>
</li>
</ul>
<h3 id="documentation-and-javadoc">Documentation and JavaDoc<a class="headerlink" href="#documentation-and-javadoc" title="Permalink">&para;</a></h3>
<p>The documentation that will be part of the release must match the code.
The documentation must be up-to-date. Release independend documentation is
maintained on the <a href="/documentation.html">Apache Olingo Documentation</a> page.</p>
<h3 id="preparation">Preparation<a class="headerlink" href="#preparation" title="Permalink">&para;</a></h3>
<h5 id="release-manager">Release Manager<a class="headerlink" href="#release-manager" title="Permalink">&para;</a></h5>
<p>A release manager must be appointed for a release. He or she is in charge of the release process,
following the guidelines and eventually generating the release artifacts.
The release manager might tailor the process for a specific release.</p>
<h5 id="version">Version<a class="headerlink" href="#version" title="Permalink">&para;</a></h5>
<p>The Olingo community decides if the release will be a major or a minor release and
agrees on a version number.</p>
<p>The artifactnames are build according the following rule:</p>
<p><code>artifactname</code> : '${pkg.name}-${pkg.version}-${pkg.postfix}-${pkg.releaseCandidate}</p>
<p><em>pkg</em> refers to the <code>package.json</code> file</p>
<p><em>name</em> is the attribute <code>name</code></p>
<p><em>version</em> is the attribute <code>version</code></p>
<p><em>postfix</em> is the attribute <code>postfix</code></p>
<p><em>isReleaseCandidate</em> is the attribute <code>releaseCandidate</code></p>
<p>package.json sample:</p>
<pre><code>{
  "name": "odatajs",
  "version": "4.0.0",
  "postfix": "",
  "releaseCandidate" : "RC01",
  ...
}
</code></pre>
<p>Workflow for changing the release</p>
<pre><code>&lt;change package.json ..., "name": "odatajs", "version": "4.0.0", ...

&lt;change package.json ... , "postfix": "", "releaseCandidate" : "RC01", ...
git add package.json
git commit -am 'Issue OLINGO-25 - make release - set version 4.0.0-RC01'
git tag -f 4.0.0-RC01
grunt release

git push
git push --tags
</code></pre>
<p>Release artifacts will be stored in the <code>dist</code> folder parallel to the <code>olingojs</code> folder.</p>
<h5 id="open-issues">Open Issues<a class="headerlink" href="#open-issues" title="Permalink">&para;</a></h5>
<p>There must not be any open JIRA issues for this release. There might be open issues for
future releases.</p>
<h5 id="unit-tests-and-integration-tests">Unit Tests and Integration Tests<a class="headerlink" href="#unit-tests-and-integration-tests" title="Permalink">&para;</a></h5>
<p>The QUnit tests in <strong>odata-qunit-tests.htm</strong> tests must succeed on a clean machine with the c#.net testserver running.</p>
<pre><code>Open http://localhost:4002/tests/odata-qunit-tests.htm in the browsers  recommented ( Internet Explorer, Chrome, Firefox and Opera)
</code></pre>
<h5 id="apache-license-and-code-style">Apache License and Code Style<a class="headerlink" href="#apache-license-and-code-style" title="Permalink">&para;</a></h5>
<p>Each source code file must have a current ASF license header. The source
code should follow the Apache Olingo code style. For verification run following
Maven execution</p>
<pre><code>``grunt license-check``
must be ok
</code></pre>
<h5 id="packaging">Packaging<a class="headerlink" href="#packaging" title="Permalink">&para;</a></h5>
<p>NOTICE, LICENSE and DISCLAIMER must be present in all bundles and must be up-to-date.</p>
<h5 id="md5-and-sha-for-distribution-packages">MD5 and SHA for distribution packages<a class="headerlink" href="#md5-and-sha-for-distribution-packages" title="Permalink">&para;</a></h5>
<p>MD5 and SHA files are created manually for distribution packages:</p>
<pre><code>openssl md5 &lt; ${filename}.zip &gt; ${filename}.zip.md5
gpg --print-md SHA512 ${filename}.zip &gt; ${filename}.zip.sha512
</code></pre>
<h5 id="release-tag">Release Tag<a class="headerlink" href="#release-tag" title="Permalink">&para;</a></h5>
<p>A tag has to be created for every release candidate. The naming rule
for the tags is olingojs-${version}-${postfix}-RCxx. This is created as
part of the Maven release process. The tag will be renamed to the
final version number upon vote approval.</p>
<h5 id="release-branch">Release Branch<a class="headerlink" href="#release-branch" title="Permalink">&para;</a></h5>
<p>A branch has to be created for every release. The naming rule for this
branch is olingojs-${version}-${postfix}. This has to be created
manually upon release approval.</p>
<h3 id="release-candidate">Release Candidate<a class="headerlink" href="#release-candidate" title="Permalink">&para;</a></h3>
<p>Once all preparations are done, a release candidate will be built.</p>
<p>All release candidates must be cryptographically signed. The string
"-RCxx" will be attached to the version number of the release candidate
artifacts, where is the number of the release candidate starting with 01.
If more than one release candidate is required a new tag has to be created
and release candidate number will be increased by one.</p>
<p>The release candidate artifacts:</p>
<ul>
<li>Maven artifacts will be staged on repository.apache.org. A new staging repo
is created per RC and will be communicated upon release.</li>
<li>Distribution commodity packages are staged at
<a href="https://people.apache.org/%7E%5Busername%5D/olingo4/js/%5Bversion%5D">https://people.apache.org/~[username]/olingo4/js/[version]</a> (e.g. <a href="https://people.apache.org/%7Emibo/olingo4/js/4.0.0-RC01">https://people.apache.org/~mibo/olingo4/js/4.0.0-RC01</a>)</li>
</ul>
<p>Once candidate artifacts are available, release manager kicks off the [VOTE process][2].</p>
<p>If the vote fails, the raised issues will be fixed, a new release candidate will be
built and the VOTE process will be restarted.</p>
<p>If the release candidate gets approved, we can proceed to release publishing.</p>
<h4 id="how-to-verify-a-release-candidate">How to verify a Release Candidate<a class="headerlink" href="#how-to-verify-a-release-candidate" title="Permalink">&para;</a></h4>
<p>This checklist helps verifying if a release candidate is valid:</p>
<ul>
<li>Are all files on "<a href="https://people.apache.org/%7E%5Busername%5D/olingo4/js/%5Bversion%5D">https://people.apache.org/~[username]/olingo4/js/[version]</a>"?</li>
<li>Check if md5, sha512 and asc files are filled correctly?</li>
<li>Can the zip files be unpacked without issues?</li>
<li>Execute a "grunt build"</li>
<li>Start the test server</li>
<li>Is there a Disclaimer, Notice, License and Dependencies File in every folder?</li>
<li>Do all License files contain the right amount of licenses?</li>
<li>Do Notice files mention 3rd party libraries if they are contained in the distribution?</li>
</ul>
<p>After all questions of this checklist can be answered with yes it is OK to give a +1 on the mailing list.
Of course the Release Manager can also use this checklist to make sure all artifacts are correct before publishing the results on the mailing list.</p>
<h3 id="publishing-the-release">Publishing the Release<a class="headerlink" href="#publishing-the-release" title="Permalink">&para;</a></h3>
<p>If the release candidate gets approved, we can proceed to release publishing:</p>
<ul>
<li>Publish final release Version to <a href="https://repository.apache.org/">Apache Repository</a>
<ul>
<li>Copy the release Artifacts into the <em>Staging Area</em></li>
<li>From <em>Staging Area</em> close and release the staged Artifacts to finish publishing</li>
<li>Afterwards the Maven artifacts are automatically synced to <a href="https://search.maven.org/#search%7Cga%7C1%7Corg.apache.olingo">Maven Central</a>.</li>
</ul>
</li>
<li>Release candidate commodity packages are synced (together with their checksum and
signatures) to <a href="https://www.apache.org/dist/olingo/">Apache Distributions</a>.</li>
<li>Release tag is renamed to final version.</li>
<li>Release branch is created.</li>
<li>Release is closed in Jira.</li>
<li>Release is announced to <a href="mailto:dev@olingo.apache.org">dev@olingo.apache.org</a>, <a href="mailto:announce@apache.org">announce@apache.org</a>.</li>
</ul>
<h3 id="maintain-version-section-in-doap-file">Maintain Version Section in DOAP File<a class="headerlink" href="#maintain-version-section-in-doap-file" title="Permalink">&para;</a></h3>
<p><a href="/doap_Olingo.rdf">https://olingo.apache.org/doap_Olingo.rdf</a></p>
<p>Results are shown here:</p>
<p><a href="https://projects.apache.org/indexes/alpha.html#O">TBD</a></p>
<h3 id="additional-apache-release-information">Additional Apache Release Information<a class="headerlink" href="#additional-apache-release-information" title="Permalink">&para;</a></h3>
<ul>
<li><a href="https://www.apache.org/dev/release.html">Releases Policy</a></li>
<li><a href="https://www.apache.org/dev/release-publishing.html">Publishing Releases</a></li>
<li><a href="https://www.apache.org/dev/publishing-maven-artifacts.html">Publishing Maven Artifacts</a></li>
</ul>

      <div align="center">
	<p>Copyright © 2013-2023, The Apache Software Foundation<br>
				                Apache Olingo, Olingo, Apache, the Apache feather, and
				the Apache Olingo project logo are trademarks of the Apache Software
				Foundation.</p>
        <small><a href="/doc/odata2/privacy.html">Privacy</a></small>
      </div>
    </div><!-- /container -->
    <!-- Bootstrap core JavaScript
    ================================================== -->
    <!-- Placed at the end of the document so the pages load faster -->
    <script src="/js/jquery.js" type="text/javascript">
    </script>
    <script src="/js/bootstrap.js" type="text/javascript">
    </script>
    <script src="/js/offcanvas.js" type="text/javascript">
    </script>
    <link rel="stylesheet" href="/css/docco.css">
    <script src="//cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.0.1/build/highlight.min.js"></script>
    <script>hljs.highlightAll();</script>
  </body>
</html>