| <!-- |
| Documentation/_templates/layout.html |
| |
| 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. |
| --> |
| |
| |
| |
| <!DOCTYPE html> |
| <html class="writer-html5" lang="en"> |
| <head> |
| <meta charset="utf-8" /><meta name="generator" content="Docutils 0.19: https://docutils.sourceforge.io/" /> |
| |
| <meta name="viewport" content="width=device-width, initial-scale=1.0" /> |
| <title>Creating an Apache NuttX Release — NuttX latest documentation</title> |
| <link rel="stylesheet" type="text/css" href="../_static/pygments.css" /> |
| <link rel="stylesheet" type="text/css" href="../_static/css/theme.css" /> |
| <link rel="stylesheet" type="text/css" href="../_static/copybutton.css" /> |
| <link rel="stylesheet" type="text/css" href="../_static/custom.css" /> |
| |
| |
| <link rel="shortcut icon" href="../_static/favicon.ico"/> |
| <script src="../_static/jquery.js"></script> |
| <script src="../_static/_sphinx_javascript_frameworks_compat.js"></script> |
| <script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script> |
| <script src="../_static/doctools.js"></script> |
| <script src="../_static/sphinx_highlight.js"></script> |
| <script src="../_static/clipboard.min.js"></script> |
| <script src="../_static/copybutton.js"></script> |
| <script src="../_static/js/theme.js"></script> |
| <link rel="index" title="Index" href="../genindex.html" /> |
| <link rel="search" title="Search" href="../search.html" /> |
| <link rel="next" title="The Inviolable Principles of NuttX" href="../introduction/inviolables.html" /> |
| <link rel="prev" title="Documentation" href="documentation.html" /> |
| </head> |
| |
| <body class="wy-body-for-nav"> |
| <div class="wy-grid-for-nav"> |
| <nav data-toggle="wy-nav-shift" class="wy-nav-side"> |
| <div class="wy-side-scroll"> |
| <div class="wy-side-nav-search" > |
| |
| <a href="../index.html" class="icon icon-home"> NuttX |
| |
| |
| |
| </a> |
| |
| <!-- this version selector is quite ugly, should be probably replaced by something |
| more modern --> |
| |
| <div class="version-selector"> |
| <select onchange="javascript:location.href = this.value;"> |
| |
| <option value="../../latest" selected="selected">latest</option> |
| |
| <option value="../../10.0.0" >10.0.0</option> |
| |
| <option value="../../10.0.1" >10.0.1</option> |
| |
| <option value="../../10.1.0" >10.1.0</option> |
| |
| <option value="../../10.2.0" >10.2.0</option> |
| |
| <option value="../../10.3.0" >10.3.0</option> |
| |
| <option value="../../11.0.0" >11.0.0</option> |
| |
| <option value="../../12.0.0" >12.0.0</option> |
| |
| <option value="../../12.1.0" >12.1.0</option> |
| |
| <option value="../../12.2.0" >12.2.0</option> |
| |
| <option value="../../12.2.1" >12.2.1</option> |
| |
| <option value="../../12.3.0" >12.3.0</option> |
| |
| <option value="../../12.4.0" >12.4.0</option> |
| |
| <option value="../../12.5.0" >12.5.0</option> |
| |
| <option value="../../12.5.1" >12.5.1</option> |
| |
| <option value="../../12.6.0" >12.6.0</option> |
| |
| <option value="../../12.7.0" >12.7.0</option> |
| |
| <option value="../../12.8.0" >12.8.0</option> |
| |
| <option value="../../12.9.0" >12.9.0</option> |
| |
| <option value="../../12.10.0" >12.10.0</option> |
| |
| <option value="../../12.11.0" >12.11.0</option> |
| |
| </select> |
| </div> |
| |
| |
| <div role="search"> |
| <form id="rtd-search-form" class="wy-form" action="../search.html" method="get"> |
| <input type="text" name="q" placeholder="Search docs" aria-label="Search docs" /> |
| <input type="hidden" name="check_keywords" value="yes" /> |
| <input type="hidden" name="area" value="default" /> |
| </form> |
| </div> |
| |
| </div><div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="Navigation menu"> |
| <p class="caption" role="heading"><span class="caption-text">Table of Contents</span></p> |
| <ul class="current"> |
| <li class="toctree-l1"><a class="reference internal" href="../index.html">Home</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="../introduction/index.html">Introduction</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="../quickstart/index.html">Getting Started</a></li> |
| <li class="toctree-l1 current"><a class="reference internal" href="index.html">Contributing</a><ul class="current"> |
| <li class="toctree-l2"><a class="reference internal" href="workflow.html">Development Workflow</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="making-changes.html">Making Changes Using Git</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="coding_style.html">C Coding Standard</a></li> |
| <li class="toctree-l2"><a class="reference internal" href="documentation.html">Documentation</a></li> |
| <li class="toctree-l2 current"><a class="current reference internal" href="#">Creating an Apache NuttX Release</a><ul> |
| <li class="toctree-l3"><a class="reference internal" href="#checkout-the-distribution-svn-repositories">Checkout the distribution SVN repositories</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="#adding-your-gpg-key">Adding your GPG key</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="#add-your-gpg-key-to-github-apache">Add your GPG key to GitHub / Apache</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="#creating-a-release-candidate">Creating a Release Candidate</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="#creating-the-release-tarballs">Creating the Release Tarballs</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="#check-the-release-artifacts">Check the release artifacts</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="#staging-the-release-candidate">Staging the release candidate</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="#call-for-a-community-vote">Call for a Community Vote</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="#staging-the-release">Staging the release</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="#create-release-tags">Create release tags</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="#create-a-pr-to-add-the-release-to-the-website">Create a PR to add the Release to the Website</a></li> |
| <li class="toctree-l3"><a class="reference internal" href="#send-the-release-email-out">Send the release email out</a></li> |
| </ul> |
| </li> |
| </ul> |
| </li> |
| <li class="toctree-l1"><a class="reference internal" href="../introduction/inviolables.html">The Inviolable Principles of NuttX</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="../platforms/index.html">Supported Platforms</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="../components/index.html">OS Components</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="../applications/index.html">Applications</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="../implementation/index.html">Implementation Details</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="../reference/index.html">API Reference</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="../faq/index.html">FAQ</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="../guides/index.html">Guides</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="../glossary.html">Glossary</a></li> |
| <li class="toctree-l1"><a class="reference internal" href="../logos/index.html">NuttX Logos</a></li> |
| </ul> |
| |
| </div> |
| </div> |
| </nav> |
| |
| <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap"><nav class="wy-nav-top" aria-label="Mobile navigation menu" > |
| <i data-toggle="wy-nav-top" class="fa fa-bars"></i> |
| <a href="../index.html">NuttX</a> |
| </nav> |
| |
| <div class="wy-nav-content"> |
| <div class="rst-content"> |
| <div role="navigation" aria-label="Page navigation"> |
| <ul class="wy-breadcrumbs"> |
| <li><a href="../index.html" class="icon icon-home" aria-label="Home"></a></li> |
| <li class="breadcrumb-item"><a href="index.html">Contributing</a></li> |
| <li class="breadcrumb-item active">Creating an Apache NuttX Release</li> |
| <li class="wy-breadcrumbs-aside"> |
| <a href="../_sources/contributing/releases.rst.txt" rel="nofollow"> View page source</a> |
| </li> |
| </ul> |
| <hr/> |
| </div> |
| <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article"> |
| <div itemprop="articleBody"> |
| |
| <section id="creating-an-apache-nuttx-release"> |
| <h1>Creating an Apache NuttX Release<a class="headerlink" href="#creating-an-apache-nuttx-release" title="Permalink to this heading"></a></h1> |
| <p>NuttX releases are targeted for once every 3 months.</p> |
| <section id="checkout-the-distribution-svn-repositories"> |
| <h2>Checkout the distribution SVN repositories<a class="headerlink" href="#checkout-the-distribution-svn-repositories" title="Permalink to this heading"></a></h2> |
| <p>Releases are managed through an SVN repository. There are two locations where |
| releases can be committed dev and release. Prior to voting a release is staged |
| in the dev folder after a release is approved by the IPMC it is then moved to |
| the release location and committed for distribution. The release folder also |
| holds the GPG public keys that are used for signing release in a KEYS file.</p> |
| <div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span>svn<span class="w"> </span>checkout<span class="w"> </span>https://dist.apache.org/repos/dist/dev/nuttx<span class="w"> </span>nuttx-dev |
| <span class="gp">$ </span>svn<span class="w"> </span>checkout<span class="w"> </span>https://dist.apache.org/repos/dist/release/nuttx<span class="w"> </span>nuttx-release |
| </pre></div> |
| </div> |
| </section> |
| <section id="adding-your-gpg-key"> |
| <h2>Adding your GPG key<a class="headerlink" href="#adding-your-gpg-key" title="Permalink to this heading"></a></h2> |
| <p>Inside of the <code class="docutils literal notranslate"><span class="pre">dist/release/nuttx</span> <span class="pre">folder</span></code> is a KEYS file where committers must |
| upload their GPG public key that they use to sign releases. On the top of the |
| file you can see instructions on how to add your key to this file. Be careful to |
| not remove any existing keys. There is a KEYS file in both the dev and releases |
| folder, but uploading to the releases folder is the important one.</p> |
| <p>If you have not created a GPG key for use with this project see |
| <a class="reference external" href="https://infra.apache.org/openpgp.html#generate-key">https://infra.apache.org/openpgp.html#generate-key</a> It is important that your |
| Apache email is associated with this key.</p> |
| <p>My key id is <code class="docutils literal notranslate"><span class="pre">3554D78458CEB6954B020E12E1B6E30DB05D6280</span></code>. You can list the keys |
| that you have a secret key for with this command. Make sure your Apache email is |
| associated with this key.</p> |
| <div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span>gpg2<span class="w"> </span>--list-secret-keys |
| <span class="go"> /home/bashton/.gnupg/pubring.kbx</span> |
| <span class="go"> --------------------------------</span> |
| <span class="go"> sec> rsa4096 2019-11-24 [SC] [expires: 2021-09-02]</span> |
| <span class="go"> 3554D78458CEB6954B020E12E1B6E30DB05D6280</span> |
| <span class="go"> Card serial no. = 0006 09239558</span> |
| <span class="go"> uid [ultimate] Brennan Ashton <btashton@apache.org></span> |
| <span class="go"> uid [ultimate] Brennan Ashton <bashton@brennanashton.com></span> |
| <span class="go"> ssb> rsa4096 2019-11-24 [E] [expires: 2021-09-02]</span> |
| <span class="go"> ssb> rsa4096 2019-11-24 [A] [expires: 2021-09-02]</span> |
| <span class="go"> ssb rsa4096 2019-11-24 [S] [expires: 2021-09-02]</span> |
| </pre></div> |
| </div> |
| <p>You can then use this command to add to the KEYS file (fill in “key id” with your key id):</p> |
| <div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span><span class="o">(</span>gpg<span class="w"> </span>--list-sigs<span class="w"> </span><key<span class="w"> </span>id><span class="w"> </span><span class="o">&&</span><span class="w"> </span>gpg<span class="w"> </span>--armor<span class="w"> </span>--export<span class="w"> </span><key<span class="w"> </span>id><span class="o">)</span><span class="w"> </span>>><span class="w"> </span>KEYS |
| </pre></div> |
| </div> |
| <p>You can verify your key is in the file with:</p> |
| <div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span>cat<span class="w"> </span>KEYS<span class="w"> </span><span class="p">|</span><span class="w"> </span>gpg2<span class="w"> </span>--import-options<span class="w"> </span>show-only |
| </pre></div> |
| </div> |
| <p>Once you are happy with your changes you can commit your key</p> |
| <div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp">$ </span>svn<span class="w"> </span>commit<span class="w"> </span>-m<span class="w"> </span><span class="s2">"Update <my name> GPG key"</span> |
| </pre></div> |
| </div> |
| </section> |
| <section id="add-your-gpg-key-to-github-apache"> |
| <h2>Add your GPG key to GitHub / Apache<a class="headerlink" href="#add-your-gpg-key-to-github-apache" title="Permalink to this heading"></a></h2> |
| <p>So that the release tags show up as “verified” attach your GPG key to your |
| Apache and GitHub accounts:</p> |
| <ul class="simple"> |
| <li><p>GitHub: <a class="reference external" href="https://docs.github.com/en/github/authenticating-to-github/adding-a-new-gpg-key-to-your-github-account">https://docs.github.com/en/github/authenticating-to-github/adding-a-new-gpg-key-to-your-github-account</a></p></li> |
| <li><p>Apache: <a class="reference external" href="https://id.apache.org">https://id.apache.org</a></p> |
| <ul> |
| <li><p><em>Add the fingerprint to OpenPGP Public Key Primary Fingerprint</em></p></li> |
| </ul> |
| </li> |
| </ul> |
| </section> |
| <section id="creating-a-release-candidate"> |
| <h2>Creating a Release Candidate<a class="headerlink" href="#creating-a-release-candidate" title="Permalink to this heading"></a></h2> |
| <p>When the project is happy with a release branch and is ready to create a release |
| candidate, the first step is to create a signed tag. This should be done for |
| both the nuttx and nuttx-apps repositories.</p> |
| <p>This is an example for tagging RC0 for the 12.1.0 release. Only the OS |
| repository is shown here this must also be done for the apps repository.</p> |
| <div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp"># </span>Export<span class="w"> </span>the<span class="w"> </span>signing<span class="w"> </span>key |
| <span class="gp">$ </span><span class="nb">export</span><span class="w"> </span><span class="nv">GPG_TTY</span><span class="o">=</span><span class="k">$(</span>tty<span class="k">)</span> |
| |
| <span class="gp"># </span>Checkout<span class="w"> </span>the<span class="w"> </span>release<span class="w"> </span>branch |
| <span class="go">~/nuttx/wrk/nuttx on releases/12.1 [$]</span> |
| <span class="gp">$ </span>git<span class="w"> </span>checkout<span class="w"> </span>releases/12.1 |
| <span class="go">Already on 'releases/12.1'</span> |
| <span class="go">Your branch is up to date with 'origin/releases/12.1'.</span> |
| |
| <span class="gp"># </span>Make<span class="w"> </span>sure<span class="w"> </span>it<span class="w"> </span>is<span class="w"> </span>up-to-date<span class="w"> </span>with<span class="w"> </span>upstream |
| <span class="go">~/nuttx/wrk/nuttx on releases/12.1 [$]</span> |
| <span class="gp">$ </span>git<span class="w"> </span>pull |
| <span class="go">Already up to date.</span> |
| |
| <span class="gp"># </span>Make<span class="w"> </span>create<span class="w"> </span>the<span class="w"> </span>signed<span class="w"> </span>tag<span class="w"> </span><span class="o">(</span>note<span class="w"> </span>the<span class="w"> </span>-s<span class="w"> </span>option<span class="o">)</span> |
| <span class="go">~/nuttx/wrk/nuttx on releases/12.1 [$]</span> |
| <span class="gp">$ </span>git<span class="w"> </span>tag<span class="w"> </span>-s<span class="w"> </span>nuttx-12.1.0-RC0<span class="w"> </span>-m<span class="w"> </span>nuttx-12.1.0-RC0 |
| |
| <span class="gp"># </span>Verify<span class="w"> </span>the<span class="w"> </span>tag<span class="w"> </span>is<span class="w"> </span>on<span class="w"> </span>the<span class="w"> </span>correct<span class="w"> </span>commit |
| <span class="go">~/nuttx/wrk/nuttx on releases/12.1 [$]</span> |
| <span class="gp">$ </span>git<span class="w"> </span>log<span class="w"> </span>-n<span class="w"> </span><span class="m">1</span> |
| <span class="go">commit 16748108c503d762779545d40113825e54b75252 (HEAD -> releases/12.1, tag: nuttx-12.1.0-RC0, origin/releases/12.1)</span> |
| <span class="go">Author: Dong Heng <dongheng@espressif.com></span> |
| <span class="go">Date: Fri Apr 9 20:03:24 2021 +0800</span> |
| |
| <span class="go"> riscv/esp32c3: Fix heap end address</span> |
| |
| <span class="gp"># </span>Push<span class="w"> </span>the<span class="w"> </span>tag<span class="w"> </span>to<span class="w"> </span>the<span class="w"> </span>apache<span class="w"> </span>repository |
| <span class="go">~/nuttx/wrk/nuttx on releases/12.1 [$]</span> |
| <span class="gp">$ </span>git<span class="w"> </span>push<span class="w"> </span>-u<span class="w"> </span>origin<span class="w"> </span>nuttx-12.1.0-RC0 |
| <span class="go">Enumerating objects: 1, done.</span> |
| <span class="go">Counting objects: 100% (1/1), done.</span> |
| <span class="go">Writing objects: 100% (1/1), 805 bytes | 402.00 KiB/s, done.</span> |
| <span class="go">Total 1 (delta 0), reused 0 (delta 0), pack-reused 0</span> |
| <span class="go">To github.com:apache/nuttx.git</span> |
| <span class="go"> * [new tag] nuttx-12.1.0-RC0 -> nuttx-12.1.0-RC0</span> |
| </pre></div> |
| </div> |
| <p>You should be able to see the tag here <a class="reference external" href="https://github.com/apache/nuttx/tags">https://github.com/apache/nuttx/tags</a> and |
| <a class="reference external" href="https://github.com/apache/nuttx-apps/tags">https://github.com/apache/nuttx-apps/tags</a>.</p> |
| </section> |
| <section id="creating-the-release-tarballs"> |
| <h2>Creating the Release Tarballs<a class="headerlink" href="#creating-the-release-tarballs" title="Permalink to this heading"></a></h2> |
| <p>Make sure that you have both repositories checked to the correct release |
| candidate tag. The folder names must be <code class="docutils literal notranslate"><span class="pre">nuttx</span></code> and <code class="docutils literal notranslate"><span class="pre">apps</span></code>.</p> |
| <div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="go">~/nuttx/wrk/release</span> |
| <span class="gp">$ </span>ls |
| <span class="go">apps nuttx</span> |
| |
| <span class="go">~/nuttx/wrk/release</span> |
| <span class="gp">$ </span>git<span class="w"> </span>-C<span class="w"> </span>nuttx<span class="w"> </span>log<span class="w"> </span>-n<span class="w"> </span><span class="m">1</span> |
| <span class="go">commit 16748108c503d762779545d40113825e54b75252 (HEAD -> releases/12.1, tag: nuttx-12.1.0-RC0, origin/releases/12.1)</span> |
| <span class="go">Author: Dong Heng <dongheng@espressif.com></span> |
| <span class="go">Date: Fri Apr 9 20:03:24 2021 +0800</span> |
| |
| <span class="go"> riscv/esp32c3: Fix heap end address</span> |
| |
| <span class="go">~/nuttx/wrk/release</span> |
| <span class="gp">$ </span>git<span class="w"> </span>-C<span class="w"> </span>apps<span class="w"> </span>log<span class="w"> </span>-n<span class="w"> </span><span class="m">1</span> |
| <span class="go">commit 4348d91d1356335483089c3865282d80f13bedcd (HEAD -> releases/12.1, tag: nuttx-12.1.0-RC0, origin/releases/12.1)</span> |
| <span class="go">Author: Abdelatif Guettouche <abdelatif.guettouche@espressif.com></span> |
| <span class="go">Date: Mon Apr 12 10:11:05 2021 +0200</span> |
| |
| <span class="go"> wireless/wapi/src/wapi.c: When executing a command return it's error code on failure.</span> |
| |
| <span class="go"> Signed-off-by: Abdelatif Guettouche <abdelatif.guettouche@espressif.com></span> |
| </pre></div> |
| </div> |
| <p>When creating the release tarballs consider enabling debug mode with the <code class="docutils literal notranslate"><span class="pre">-d</span></code> |
| flag to make sure everything looks correct including using the correct folders. |
| Note that here we do not use the RC in the version. If this RC is accepted these |
| exact files will be moved from dev to the release folder, the tarballs are <em>not</em> |
| recreated. Here is an example signing using my key id and the 12.1.0 release:</p> |
| <div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="go">~/nuttx/wrk/release took 2s</span> |
| <span class="gp">$ </span>./nuttx/tools/zipme.sh<span class="w"> </span>-d<span class="w"> </span>-s<span class="w"> </span>-k<span class="w"> </span>3554D78458CEB6954B020E12E1B6E30DB05D6280<span class="w"> </span><span class="m">12</span>.1.0 |
| <span class="go">+ DEBUG=-d</span> |
| <span class="go">+ shift</span> |
| <span class="go">+ '[' '!' -z -s ']'</span> |
| <span class="go">+ case $1 in</span> |
| <span class="go">+ sign=1</span> |
| <span class="go">+ shift</span> |
| <span class="go">+ '[' '!' -z -k ']'</span> |
| <span class="go">+ case $1 in</span> |
| <span class="go">+ shift</span> |
| <span class="go">+ GPG+=' --default-key 3554D78458CEB6954B020E12E1B6E30DB05D6280'</span> |
| <span class="go">+ shift</span> |
| <span class="go">+ '[' '!' -z 12.1.0 ']'</span> |
| <span class="go">+ case $1 in</span> |
| <span class="go">+ break</span> |
| <span class="go">+ VERSION=12.1.0</span> |
| <span class="go">+ '[' -n 12.1.0 ']'</span> |
| <span class="go">+ VERSIONOPT='-v 12.1.0'</span> |
| <span class="go">+ for pat in ${EXCLPAT}</span> |
| <span class="go">+ TAR+=' --exclude=.github'</span> |
| <span class="go">+ for pat in ${EXCLPAT}</span> |
| <span class="go">+ TAR+=' --exclude=.asf.yaml'</span> |
| <span class="go">+ TAR+=' --exclude-vcs'</span> |
| <span class="go">+ '[' 0 '!=' 0 ']'</span> |
| <span class="go">+ TAR+=' -czf'</span> |
| <span class="go">++ basename ./nuttx/tools/zipme.sh</span> |
| <span class="go">+ MYNAME=zipme.sh</span> |
| <span class="go">+ '[' -x /home/bashton/nuttx/wrk/release/zipme.sh ']'</span> |
| <span class="go">+ '[' -x /home/bashton/nuttx/wrk/release/tools/zipme.sh ']'</span> |
| <span class="go">+ '[' -x /home/bashton/nuttx/wrk/release/nuttx/tools/zipme.sh ']'</span> |
| <span class="go">+ TRUNKDIR=/home/bashton/nuttx/wrk/release</span> |
| <span class="go">+ NUTTXDIR=/home/bashton/nuttx/wrk/release/nuttx</span> |
| <span class="go">+ APPSDIR=/home/bashton/nuttx/wrk/release/apps</span> |
| <span class="go">+ '[' '!' -d /home/bashton/nuttx/wrk/release ']'</span> |
| <span class="go">+ cd /home/bashton/nuttx/wrk/release</span> |
| <span class="go">+ '[' '!' -d /home/bashton/nuttx/wrk/release/nuttx ']'</span> |
| <span class="go">+ '[' '!' -d /home/bashton/nuttx/wrk/release/apps ']'</span> |
| <span class="go">+ echo 'Cleaning the repositories'</span> |
| <span class="go">Cleaning the repositories</span> |
| <span class="go">+ '[' 0 '!=' 0 ']'</span> |
| <span class="go">+ make -C /home/bashton/nuttx/wrk/release/nuttx distclean</span> |
| <span class="go">+ VERSIONSH=/home/bashton/nuttx/wrk/release/nuttx/tools/version.sh</span> |
| <span class="go">+ '[' '!' -x /home/bashton/nuttx/wrk/release/nuttx/tools/version.sh ']'</span> |
| <span class="go">+ /home/bashton/nuttx/wrk/release/nuttx/tools/version.sh -d -v 12.1.0 /home/bashton/nuttx/wrk/release/nuttx/.version</span> |
| <span class="go">+ shift</span> |
| <span class="go">+ '[' '!' -z -v ']'</span> |
| <span class="go">+ case $1 in</span> |
| <span class="go">+ shift</span> |
| <span class="go">+ VERSION=12.1.0</span> |
| <span class="go">+ shift</span> |
| <span class="go">+ '[' '!' -z /home/bashton/nuttx/wrk/release/nuttx/.version ']'</span> |
| <span class="go">+ case $1 in</span> |
| <span class="go">+ break</span> |
| <span class="go">+ OUTFILE=/home/bashton/nuttx/wrk/release/nuttx/.version</span> |
| <span class="go">+ '[' -z 12.1.0 ']'</span> |
| <span class="go">+ '[' -z 12.1.0 ']'</span> |
| <span class="go">+ '[' -z /home/bashton/nuttx/wrk/release/nuttx/.version ']'</span> |
| <span class="go">++ echo 12.1.0</span> |
| <span class="go">++ cut -d. -f1</span> |
| <span class="go">+ MAJOR=10</span> |
| <span class="go">+ '[' X10 = X12.1.0 ']'</span> |
| <span class="go">++ echo 12.1.0</span> |
| <span class="go">++ cut -d. -f2</span> |
| <span class="go">+ MINOR=1</span> |
| <span class="go">+ '[' X12.1 = X12.1.0 ']'</span> |
| <span class="go">++ echo 12.1.0</span> |
| <span class="go">++ grep -Eo '[0-9]+\.[0-9]+\.[0-9]+'</span> |
| <span class="go">++ cut -d. -f3</span> |
| <span class="go">+ PATCH=0</span> |
| <span class="go">+ '[' -z '' ']'</span> |
| <span class="go">++ git -C /home/bashton/nuttx/wrk/release/nuttx/tools log --oneline -1</span> |
| <span class="go">++ cut '-d ' -f1</span> |
| <span class="go">+ BUILD=16748108c5</span> |
| <span class="go">+ '[' -z 16748108c5 ']'</span> |
| <span class="go">++ git -C /home/bashton/nuttx/wrk/release/nuttx/tools diff-index --name-only HEAD</span> |
| <span class="go">++ head -1</span> |
| <span class="go">+ '[' -n '' ']'</span> |
| <span class="go">+ echo '#!/bin/bash'</span> |
| <span class="go">+ echo ''</span> |
| <span class="go">+ echo 'CONFIG_VERSION_STRING="12.1.0"'</span> |
| <span class="go">+ echo CONFIG_VERSION_MAJOR=10</span> |
| <span class="go">+ echo CONFIG_VERSION_MINOR=1</span> |
| <span class="go">+ echo CONFIG_VERSION_PATCH=0</span> |
| <span class="go">+ echo 'CONFIG_VERSION_BUILD="16748108c5"'</span> |
| <span class="go">+ chmod 755 /home/bashton/nuttx/wrk/release/nuttx/.version</span> |
| <span class="go">+ '[' -z 12.1.0 ']'</span> |
| <span class="go">+ NUTTX_TARNAME=apache-nuttx-12.1.0.tar</span> |
| <span class="go">+ APPS_TARNAME=apache-nuttx-apps-12.1.0.tar</span> |
| <span class="go">+ NUTTX_ZIPNAME=apache-nuttx-12.1.0.tar.gz</span> |
| <span class="go">+ APPS_ZIPNAME=apache-nuttx-apps-12.1.0.tar.gz</span> |
| <span class="go">+ NUTTX_ASCNAME=apache-nuttx-12.1.0.tar.gz.asc</span> |
| <span class="go">+ APPS_ASCNAME=apache-nuttx-apps-12.1.0.tar.gz.asc</span> |
| <span class="go">+ NUTTX_SHANAME=apache-nuttx-12.1.0.tar.gz.sha512</span> |
| <span class="go">+ APPS_SHANAME=apache-nuttx-apps-12.1.0.tar.gz.sha512</span> |
| <span class="go">+ '[' -f apache-nuttx-12.1.0.tar ']'</span> |
| <span class="go">+ '[' -f apache-nuttx-12.1.0.tar.gz ']'</span> |
| <span class="go">+ echo 'Removing /home/bashton/nuttx/wrk/release/apache-nuttx-12.1.0.tar.gz'</span> |
| <span class="go">Removing /home/bashton/nuttx/wrk/release/apache-nuttx-12.1.0.tar.gz</span> |
| <span class="go">+ rm -f apache-nuttx-12.1.0.tar.gz</span> |
| <span class="go">+ '[' -f apache-nuttx-apps-12.1.0.tar ']'</span> |
| <span class="go">+ '[' -f apache-nuttx-apps-12.1.0.tar.gz ']'</span> |
| <span class="go">+ '[' -f apache-nuttx-12.1.0.tar.gz.asc ']'</span> |
| <span class="go">+ '[' -f apache-nuttx-apps-12.1.0.tar.gz.asc ']'</span> |
| <span class="go">+ '[' -f apache-nuttx-12.1.0.tar.gz.sha512 ']'</span> |
| <span class="go">+ '[' -f apache-nuttx-apps-12.1.0.tar.gz.sha512 ']'</span> |
| <span class="go">+ echo 'Archiving and zipping nuttx/'</span> |
| <span class="go">Archiving and zipping nuttx/</span> |
| <span class="go">++ basename /home/bashton/nuttx/wrk/release/nuttx</span> |
| <span class="go">+ tar --exclude=.github --exclude=.asf.yaml --exclude-vcs -czf apache-nuttx-12.1.0.tar.gz nuttx</span> |
| <span class="go">+ echo 'Archiving and zipping apps/'</span> |
| <span class="go">Archiving and zipping apps/</span> |
| <span class="go">++ basename /home/bashton/nuttx/wrk/release/apps</span> |
| <span class="go">+ tar --exclude=.github --exclude=.asf.yaml --exclude-vcs -czf apache-nuttx-apps-12.1.0.tar.gz apps</span> |
| <span class="go">+ echo 'Creating the hashes'</span> |
| <span class="go">Creating the hashes</span> |
| <span class="go">+ sha512sum apache-nuttx-12.1.0.tar.gz</span> |
| <span class="go">+ sha512sum apache-nuttx-apps-12.1.0.tar.gz</span> |
| <span class="go">+ '[' 1 '!=' 0 ']'</span> |
| <span class="go">+ echo 'Signing the tarballs'</span> |
| <span class="go">Signing the tarballs</span> |
| <span class="go">+ gpg -sab --default-key 3554D78458CEB6954B020E12E1B6E30DB05D6280 apache-nuttx-12.1.0.tar.gz</span> |
| <span class="go">gpg: using "3554D78458CEB6954B020E12E1B6E30DB05D6280" as default secret key for signing</span> |
| <span class="go">+ gpg -sab --default-key 3554D78458CEB6954B020E12E1B6E30DB05D6280 apache-nuttx-apps-12.1.0.tar.gz</span> |
| <span class="go">gpg: using "3554D78458CEB6954B020E12E1B6E30DB05D6280" as default secret key for signing</span> |
| <span class="go">+ cd /home/bashton/nuttx/wrk/release/nuttx</span> |
| |
| <span class="go">~/nuttx/wrk/release took 6s</span> |
| <span class="gp">$ </span>ls |
| <span class="go">apache-nuttx-12.1.0.tar.gz apache-nuttx-12.1.0.tar.gz.sha512 apache-nuttx-apps-12.1.0.tar.gz.asc apps</span> |
| <span class="go">apache-nuttx-12.1.0.tar.gz.asc apache-nuttx-apps-12.1.0.tar.gz apache-nuttx-apps-12.1.0.tar.gz.sha512 nuttx</span> |
| </pre></div> |
| </div> |
| </section> |
| <section id="check-the-release-artifacts"> |
| <h2>Check the release artifacts<a class="headerlink" href="#check-the-release-artifacts" title="Permalink to this heading"></a></h2> |
| <p>Prior to uploading the artifacts it is a good idea to make sure that they pass a |
| sanity check. You can do this by running the <code class="docutils literal notranslate"><span class="pre">nuttx/tools/checkrelease.sh</span></code> |
| script on them. This will only use the GPG keys at |
| <a class="reference external" href="https://dist.apache.org/repos/dist/dev/nuttx/KEYS">https://dist.apache.org/repos/dist/dev/nuttx/KEYS</a> so make sure.</p> |
| <div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="go">~/nuttx/wrk/release</span> |
| <span class="gp">$ </span>./nuttx/tools/checkrelease.sh<span class="w"> </span>--dir<span class="w"> </span>./ |
| <span class="go">gpg: directory '/tmp/nuttx-checkrelease/.gnupg' created</span> |
| <span class="go">gpg: keybox '/tmp/nuttx-checkrelease/.gnupg/pubring.kbx' created</span> |
| <span class="go">gpg: /tmp/nuttx-checkrelease/.gnupg/trustdb.gpg: trustdb created</span> |
| <span class="go">gpg: key E1B6E30DB05D6280: public key "Brennan Ashton <btashton@apache.org>" imported</span> |
| <span class="go">gpg: Total number processed: 1</span> |
| <span class="go">gpg: imported: 1</span> |
| <span class="go"> OK: https://dist.apache.org/repos/dist/dev/nuttx/KEYS is imported.</span> |
| <span class="go">Checking apache-nuttx-12.1.0.tar.gz sha512...</span> |
| <span class="go"> OK: apache-nuttx-12.1.0.tar.gz sha512 hash matches.</span> |
| |
| <span class="go">Checking apache-nuttx-12.1.0.tar.gz GPG signature:</span> |
| <span class="go">gpg: Signature made Sat 17 Apr 2021 08:02:29 PM PDT</span> |
| <span class="go">gpg: using RSA key 66C4832A165ECC9354895A209750ED7E692B99E2</span> |
| <span class="go">gpg: Good signature from "Brennan Ashton <btashton@apache.org>" [unknown]</span> |
| <span class="go">gpg: aka "Brennan Ashton <bashton@brennanashton.com>" [unknown]</span> |
| <span class="go">gpg: WARNING: This key is not certified with a trusted signature!</span> |
| <span class="go">gpg: There is no indication that the signature belongs to the owner.</span> |
| <span class="go">Primary key fingerprint: 3554 D784 58CE B695 4B02 0E12 E1B6 E30D B05D 6280</span> |
| <span class="go"> Subkey fingerprint: 66C4 832A 165E CC93 5489 5A20 9750 ED7E 692B 99E2</span> |
| <span class="go"> OK: apache-nuttx-12.1.0.tar.gz gpg signature matches.</span> |
| |
| <span class="go">Checking apache-nuttx-12.1.0.tar.gz for required files:</span> |
| <span class="go"> OK: all required files exist in nuttx.</span> |
| |
| <span class="go">Checking apache-nuttx-apps-12.1.0.tar.gz sha512...</span> |
| <span class="go"> OK: apache-nuttx-apps-12.1.0.tar.gz sha512 hash matches.</span> |
| |
| <span class="go">Checking apache-nuttx-apps-12.1.0.tar.gz GPG signature:</span> |
| <span class="go">gpg: Signature made Sat 17 Apr 2021 08:02:30 PM PDT</span> |
| <span class="go">gpg: using RSA key 66C4832A165ECC9354895A209750ED7E692B99E2</span> |
| <span class="go">gpg: Good signature from "Brennan Ashton <btashton@apache.org>" [unknown]</span> |
| <span class="go">gpg: aka "Brennan Ashton <bashton@brennanashton.com>" [unknown]</span> |
| <span class="go">gpg: WARNING: This key is not certified with a trusted signature!</span> |
| <span class="go">gpg: There is no indication that the signature belongs to the owner.</span> |
| <span class="go">Primary key fingerprint: 3554 D784 58CE B695 4B02 0E12 E1B6 E30D B05D 6280</span> |
| <span class="go"> Subkey fingerprint: 66C4 832A 165E CC93 5489 5A20 9750 ED7E 692B 99E2</span> |
| <span class="go"> OK: apache-nuttx-apps-12.1.0.tar.gz gpg signature matches.</span> |
| |
| <span class="go">Checking apache-nuttx-apps-12.1.0.tar.gz for required files:</span> |
| <span class="go"> OK: all required files exist in apps.</span> |
| |
| <span class="go">Trying to build nuttx sim:nsh...</span> |
| <span class="go"> OK: we were able to build sim:nsh.</span> |
| </pre></div> |
| </div> |
| </section> |
| <section id="staging-the-release-candidate"> |
| <h2>Staging the release candidate<a class="headerlink" href="#staging-the-release-candidate" title="Permalink to this heading"></a></h2> |
| <p>To stage a release a new folder should be created under |
| <a class="reference external" href="https://dist.apache.org/repos/dist/dev/nuttx">https://dist.apache.org/repos/dist/dev/nuttx</a> for the release candidate and these |
| release artifacts should be copied there:</p> |
| <div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="go">apache-nuttx-<version>.tar.gz apache-nuttx-<version>.tar.gz.sha512 apache-nuttx-apps-<version>.tar.gz.asc</span> |
| <span class="go">apache-nuttx-<version>.tar.gz.asc apache-nuttx-apps-<version>.tar.gz apache-nuttx-apps-<version>.tar.gz.sha512</span> |
| </pre></div> |
| </div> |
| <p>If you checked that svn repository out as shown earlier as nuttx-dev. This |
| should be done like this:</p> |
| <div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="go">~/nuttx/svn/nuttx-dev</span> |
| <span class="gp">$ </span>mkdir<span class="w"> </span><span class="m">12</span>.1.0-RC0 |
| |
| <span class="go">~/nuttx/svn/nuttx-dev</span> |
| <span class="gp">$ </span>cp<span class="w"> </span>-v<span class="w"> </span>../../wrk/release/apache-<span class="o">{</span>nuttx,nuttx-apps<span class="o">}</span>-12.1.0.tar.gz*<span class="w"> </span>./12.1.0-RC0/ |
| <span class="go">'../../wrk/release/apache-nuttx-12.1.0.tar.gz' -> './12.1.0-RC0/apache-nuttx-12.1.0.tar.gz'</span> |
| <span class="go">'../../wrk/release/apache-nuttx-12.1.0.tar.gz.asc' -> './12.1.0-RC0/apache-nuttx-12.1.0.tar.gz.asc'</span> |
| <span class="go">'../../wrk/release/apache-nuttx-12.1.0.tar.gz.sha512' -> './12.1.0-RC0/apache-nuttx-12.1.0.tar.gz.sha512'</span> |
| <span class="go">'../../wrk/release/apache-nuttx-apps-12.1.0.tar.gz' -> './12.1.0-RC0/apache-nuttx-apps-12.1.0.tar.gz'</span> |
| <span class="go">'../../wrk/release/apache-nuttx-apps-12.1.0.tar.gz.asc' -> './12.1.0-RC0/apache-nuttx-apps-12.1.0.tar.gz.asc'</span> |
| <span class="go">'../../wrk/release/apache-nuttx-apps-12.1.0.tar.gz.sha512' -> './12.1.0-RC0/apache-nuttx-apps-12.1.0.tar.gz.sha512'</span> |
| </pre></div> |
| </div> |
| <p>Then commit these files:</p> |
| <div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="go">~/nuttx/svn/nuttx-dev</span> |
| <span class="gp">$ </span>svn<span class="w"> </span>status |
| <span class="go">? 12.1.0-RC0</span> |
| |
| <span class="go">~/nuttx/svn/nuttx-dev</span> |
| <span class="gp">$ </span>svn<span class="w"> </span>add<span class="w"> </span><span class="m">12</span>.1.0-RC0/ |
| <span class="go">A 12.1.0-RC0</span> |
| <span class="go">A 12.1.0-RC0/apache-nuttx-12.1.0.tar.gz.sha512</span> |
| <span class="go">A 12.1.0-RC0/apache-nuttx-apps-12.1.0.tar.gz.sha512</span> |
| <span class="go">A (bin) 12.1.0-RC0/apache-nuttx-12.1.0.tar.gz.asc</span> |
| <span class="go">A (bin) 12.1.0-RC0/apache-nuttx-apps-12.1.0.tar.gz.asc</span> |
| <span class="go">A (bin) 12.1.0-RC0/apache-nuttx-12.1.0.tar.gz</span> |
| <span class="go">A (bin) 12.1.0-RC0/apache-nuttx-apps-12.1.0.tar.gz</span> |
| |
| <span class="go">~/nuttx/svn/nuttx-dev</span> |
| <span class="gp">$ </span>svn<span class="w"> </span>commit<span class="w"> </span>-m<span class="w"> </span><span class="s2">"Staging apache-nuttx-12.1.0-RC0"</span> |
| </pre></div> |
| </div> |
| <p>Verify the release exists under <a class="reference external" href="https://dist.apache.org/repos/dist/dev/nuttx/">https://dist.apache.org/repos/dist/dev/nuttx/</a></p> |
| </section> |
| <section id="call-for-a-community-vote"> |
| <h2>Call for a Community Vote<a class="headerlink" href="#call-for-a-community-vote" title="Permalink to this heading"></a></h2> |
| <p>To do this send an email that looks something like this:</p> |
| <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>Subject: [VOTE] Apache NuttX 12.1.0 RC0 release |
| To: dev@nuttx.apache.org |
| |
| Hello all, |
| Apache NuttX 12.1.0 RC0 has been staged under [1] and it's |
| time to vote on accepting it for release. If approved we will seek |
| final release approval from the IPMC. Voting will be open for 72hr. |
| |
| A minimum of 3 binding +1 votes and more binding +1 than binding -1 are |
| required to pass. |
| |
| The Apache requirements for approving a release can be found here [3] |
| "Before voting +1 [P]PMC members are required to download the signed |
| source code package, compile it as provided, and test the resulting |
| executable on their own platform, along with also verifying that the |
| package meets the requirements of the ASF policy on releases." |
| |
| A document to walk through some of this process has been published on |
| our project wiki and can be found here [4]. |
| |
| [ ] +1 accept (indicate what you validated - e.g. performed the non-RM |
| items in [4]) |
| [ ] -1 reject (explanation required) |
| |
| Thank you all, |
| <Release Manager> |
| |
| SCM Information: |
| Release tag: nuttx-12.1.0-RC0 |
| Hash for the release nuttx tag: <GIT HASH> |
| Hash for the release nuttx-apps tag: <GIT HASH> |
| |
| [1] https://dist.apache.org/repos/dist/dev/nuttx/12.1.0-RC0/ |
| [2] https://raw.githubusercontent.com/apache/nuttx/nuttx-12.1.0-RC0/ReleaseNotes |
| [3] https://www.apache.org/dev/release.html#approving-a-release |
| [4] https://cwiki.apache.org/confluence/display/NUTTX/Validating+a+staged+Release |
| </pre></div> |
| </div> |
| <p>After the voting requirements have been met (see the email text) the release an |
| email is sent closing out the voting.</p> |
| <p>Example text for that email is here. Note you will have to fill in the vote |
| count and an archive link to the voting thread. The best way to find the link is |
| here <a class="reference external" href="https://lists.apache.org/list.html?dev@nuttx.apache.org">https://lists.apache.org/list.html?dev@nuttx.apache.org</a></p> |
| <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>Subject: [RESULTS][VOTE] Release Apache NuttX 12.1.0 [RC0] |
| To: dev@nuttx.apache.org |
| |
| Hi all, |
| |
| The vote to release Apache NuttX 12.1.0-rc0 is now closed. |
| Thanks to those that took the time to review and vote. |
| |
| The release has passed with 4 +1 (binding) votes and no 0 or -1 votes. |
| |
| Binding: |
| +1 Lup Yuen Lee |
| +1 Roberto Bucher |
| +1 Tomek CEDRO |
| +1 Alin Jerpelea |
| |
| Non binding |
| +1 Filipe Cavalcanti |
| |
| Vote thread |
| https://lists.apache.org/thread.html/r75faed90e03c7e7a07ff79988bb0586eec224905144f34e99333e9cd%40%3Cgeneral..apache.org%3E |
| |
| We will proceed with the official release of 12.1.0. |
| </pre></div> |
| </div> |
| <p>If the vote does not pass bring the feedback to the community and start the |
| release process again with a new RC.</p> |
| </section> |
| <section id="staging-the-release"> |
| <h2>Staging the release<a class="headerlink" href="#staging-the-release" title="Permalink to this heading"></a></h2> |
| <p>With the release approved you can now copy the release artifacts to the release |
| repository. Note it no longer has an RC in the folder name.</p> |
| <div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="go">~/nuttx/svn</span> |
| <span class="gp">$ </span>cp<span class="w"> </span>-r<span class="w"> </span>nuttx-dev/12.1.0-RC0<span class="w"> </span>nuttx-release/12.1.0 |
| |
| <span class="go">~/nuttx/svn</span> |
| <span class="gp">$ </span><span class="nb">cd</span><span class="w"> </span>nuttx-release/ |
| |
| <span class="go">~/nuttx/svn/nuttx-release</span> |
| <span class="gp">$ </span>svn<span class="w"> </span>status |
| <span class="go">? 12.1.0</span> |
| |
| <span class="go">~/nuttx/svn/nuttx-release</span> |
| <span class="gp">$ </span>svn<span class="w"> </span>add<span class="w"> </span><span class="m">12</span>.1.0 |
| <span class="go">A 12.1.0</span> |
| <span class="go">A (bin) 12.1.0/apache-nuttx-12.1.0.tar.gz</span> |
| <span class="go">A (bin) 12.1.0/apache-nuttx-apps-12.1.0.tar.gz</span> |
| <span class="go">A 12.1.0/apache-nuttx-12.1.0.tar.gz.sha512</span> |
| <span class="go">A 12.1.0/apache-nuttx-apps-12.1.0.tar.gz.sha512</span> |
| <span class="go">A (bin) 12.1.0/apache-nuttx-12.1.0.tar.gz.asc</span> |
| <span class="go">A (bin) 12.1.0/apache-nuttx-apps-12.1.0.tar.gz.asc</span> |
| <span class="gp">$ </span>svn<span class="w"> </span>commit<span class="w"> </span>-m<span class="w"> </span><span class="s2">"Releasing apache-nuttx-12.1.0"</span> |
| </pre></div> |
| </div> |
| <p>At this point you should see the release at |
| <a class="reference external" href="https://dist.apache.org/repos/dist/release/nuttx/">https://dist.apache.org/repos/dist/release/nuttx/</a></p> |
| </section> |
| <section id="create-release-tags"> |
| <h2>Create release tags<a class="headerlink" href="#create-release-tags" title="Permalink to this heading"></a></h2> |
| <p>Create non RC tags the same way it was done for the RC tags on both |
| repositories:</p> |
| <div class="highlight-console notranslate"><div class="highlight"><pre><span></span><span class="gp"># </span>Export<span class="w"> </span>the<span class="w"> </span>signing<span class="w"> </span>key |
| <span class="gp">$ </span><span class="nb">export</span><span class="w"> </span><span class="nv">GPG_TTY</span><span class="o">=</span><span class="k">$(</span>tty<span class="k">)</span> |
| |
| <span class="go">~/nuttx/wrk/nuttx on releases/12.1 [$]</span> |
| <span class="gp">$ </span>git<span class="w"> </span>checkout<span class="w"> </span>releases/12.1 |
| <span class="go">Already on 'releases/12.1'</span> |
| <span class="go">Your branch is up to date with 'origin/releases/12.1'.</span> |
| |
| <span class="gp"># </span>Make<span class="w"> </span>sure<span class="w"> </span>it<span class="w"> </span>is<span class="w"> </span>up-to-date<span class="w"> </span>with<span class="w"> </span>upstream |
| <span class="go">~/nuttx/wrk/nuttx on releases/12.1 [$]</span> |
| <span class="gp">$ </span>git<span class="w"> </span>pull |
| <span class="go">Already up to date.</span> |
| |
| <span class="gp"># </span>Make<span class="w"> </span>create<span class="w"> </span>the<span class="w"> </span>signed<span class="w"> </span>tag<span class="w"> </span><span class="o">(</span>note<span class="w"> </span>the<span class="w"> </span>-s<span class="w"> </span>option<span class="o">)</span> |
| <span class="go">~/nuttx/wrk/nuttx on releases/12.1 [$]</span> |
| <span class="gp">$ </span>git<span class="w"> </span>tag<span class="w"> </span>-s<span class="w"> </span>nuttx-12.1.0<span class="w"> </span>-m<span class="w"> </span>nuttx-12.1.0 |
| |
| <span class="gp"># </span>Check<span class="w"> </span>that<span class="w"> </span>botht<span class="w"> </span>the<span class="w"> </span>RC<span class="w"> </span>and<span class="w"> </span>non<span class="w"> </span>RC<span class="w"> </span>tags<span class="w"> </span>exist<span class="w"> </span>on<span class="w"> </span>the<span class="w"> </span>commit |
| <span class="go">~/nuttx/wrk/release/nuttx on releases/12.1 [$] took 4s</span> |
| <span class="gp">$ </span>git<span class="w"> </span>log<span class="w"> </span>-n<span class="w"> </span><span class="m">1</span> |
| <span class="go">commit 16748108c503d762779545d40113825e54b75252 (HEAD -> releases/12.1, tag: nuttx-12.1.0-RC0, tag: nuttx-12.1.0, origin/releases/12.1)</span> |
| <span class="go">Author: Dong Heng <dongheng@espressif.com></span> |
| <span class="go">Date: Fri Apr 9 20:03:24 2021 +0800</span> |
| |
| <span class="go"> riscv/esp32c3: Fix heap end address</span> |
| |
| <span class="gp"># </span>Push<span class="w"> </span>the<span class="w"> </span>tag |
| <span class="go">~/nuttx/wrk/release/nuttx on releases/12.1 [$]</span> |
| <span class="gp">$ </span>git<span class="w"> </span>push<span class="w"> </span>-u<span class="w"> </span>origin<span class="w"> </span>nuttx-12.1.0 |
| <span class="go">Enumerating objects: 1, done.</span> |
| <span class="go">Counting objects: 100% (1/1), done.</span> |
| <span class="go">Writing objects: 100% (1/1), 805 bytes | 402.00 KiB/s, done.</span> |
| <span class="go">Total 1 (delta 0), reused 0 (delta 0), pack-reused 0</span> |
| <span class="go">To github.com:apache/nuttx.git</span> |
| <span class="go"> * [new tag] nuttx-12.1.0 -> nuttx-12.1.0</span> |
| </pre></div> |
| </div> |
| <p>You should be able to see the tag here <a class="reference external" href="https://github.com/apache/nuttx/tags">https://github.com/apache/nuttx/tags</a> and |
| <a class="reference external" href="https://github.com/apache/nuttx-apps/tags">https://github.com/apache/nuttx-apps/tags</a></p> |
| </section> |
| <section id="create-a-pr-to-add-the-release-to-the-website"> |
| <h2>Create a PR to add the Release to the Website<a class="headerlink" href="#create-a-pr-to-add-the-release-to-the-website" title="Permalink to this heading"></a></h2> |
| <p>This should include the release notes and also the metadata for downloading the |
| release. An example of this is here apache/nuttx-website#39 After 48hrs from |
| committing to the release SVN the distribution mirrors should have synced and |
| this can now be merged.</p> |
| <p>10min or so after the merge you should see the release here |
| <a class="reference external" href="https://nuttx.apache.org/download/">https://nuttx.apache.org/download/</a></p> |
| </section> |
| <section id="send-the-release-email-out"> |
| <h2>Send the release email out<a class="headerlink" href="#send-the-release-email-out" title="Permalink to this heading"></a></h2> |
| <p>Once the website shows the release you can now send the release announcement |
| out. Here is an example of that email. Note we must wait 48hr after the SVN |
| commit before sending this.</p> |
| <div class="highlight-text notranslate"><div class="highlight"><pre><span></span>Subject: [ANNOUNCE] Apache NuttX 12.1.0 released |
| To: dev@nuttx.apache.org |
| |
| The Apache NuttX project team is proud to announce |
| Apache NuttX 12.1.0 has been released. |
| |
| The release artifacts and Release Notes can be found at: |
| https://nuttx.apache.org/download/ |
| https://nuttx.apache.org/releases/12.1.0/ |
| |
| Thanks, |
| <Release Manager> |
| on behalf of Apache NuttX PPMC |
| </pre></div> |
| </div> |
| </section> |
| </section> |
| |
| |
| </div> |
| </div> |
| <footer><div class="rst-footer-buttons" role="navigation" aria-label="Footer"> |
| <a href="documentation.html" class="btn btn-neutral float-left" title="Documentation" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left" aria-hidden="true"></span> Previous</a> |
| <a href="../introduction/inviolables.html" class="btn btn-neutral float-right" title="The Inviolable Principles of NuttX" accesskey="n" rel="next">Next <span class="fa fa-arrow-circle-right" aria-hidden="true"></span></a> |
| </div> |
| |
| <hr/> |
| |
| <div role="contentinfo"> |
| <p>© Copyright 2023, The Apache Software Foundation.</p> |
| </div> |
| |
| |
| |
| </footer> |
| </div> |
| </div> |
| </section> |
| </div> |
| <script> |
| jQuery(function () { |
| SphinxRtdTheme.Navigation.enable(true); |
| }); |
| </script> |
| |
| </body> |
| </html> |