<!doctype html>
<!--
  Minimal Mistakes Jekyll Theme 4.4.1 by Michael Rose
  Copyright 2017 Michael Rose - mademistakes.com | @mmistakes
  Free for personal and commercial use under the MIT license
  https://github.com/mmistakes/minimal-mistakes/blob/master/LICENSE.txt
-->
<html lang="en" class="no-js">
  <head>
    <meta charset="utf-8">

<!-- begin SEO -->









<title>Release guide for ServiceComb - Apache ServiceComb</title>




<meta name="description" content="Release guide for doing the releases in Apache">




<meta name="author" content="Asif Siddiqui">

<meta property="og:locale" content="en">
<meta property="og:site_name" content="Apache ServiceComb">
<meta property="og:title" content="Release guide for ServiceComb">


  <link rel="canonical" href="https://github.com/pages/apache/incubator-servicecomb-website/developers/release-guide/">
  <meta property="og:url" content="https://github.com/pages/apache/incubator-servicecomb-website/developers/release-guide/">



  <meta property="og:description" content="Release guide for doing the releases in Apache">



  <meta name="twitter:site" content="@ServiceComb">
  <meta name="twitter:title" content="Release guide for ServiceComb">
  <meta name="twitter:description" content="Release guide for doing the releases in Apache">
  <meta name="twitter:url" content="">

  
    <meta name="twitter:card" content="summary">
    
  

  
    <meta name="twitter:creator" content="@asifdxtreme">
  



  

  












  <script type="application/ld+json">
    {
      "@context" : "http://schema.org",
      "@type" : "Person",
      "name" : "Apache ServiceComb",
      "url" : "https://github.com/pages/apache/incubator-servicecomb-website",
      "sameAs" : null
    }
  </script>



  <meta name="google-site-verification" content="HvJjNd7vvJ-yjSTHlBiIWEYxp_Hrz-PYEY5Idz9LRcA" />




<!-- end SEO -->


<link href="/feed.xml" type="application/atom+xml" rel="alternate" title="Apache ServiceComb Feed">

<!-- http://t.co/dKP3o1e -->
<meta name="HandheldFriendly" content="True">
<meta name="MobileOptimized" content="320">
<meta name="viewport" content="width=device-width, initial-scale=1.0">

<script>
  document.documentElement.className = document.documentElement.className.replace(/\bno-js\b/g, '') + ' js ';
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/clipboard.js/1.7.1/clipboard.min.js"></script>
<script src="/assets/vendor/prism/prism.js"></script>

<script type="text/javascript" async
  src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-MML-AM_CHTML">
</script>

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/css/bootstrap.min.css" integrity="sha384-/Y6pD6FV/Vv2HJnA6t+vslU6fwYXjCFtcEpHbNJ0lyAFsXTsjBbfaDjzALeQsN6M" crossorigin="anonymous">

<script src="https://code.jquery.com/jquery-3.2.1.slim.min.js" integrity="sha384-KJ3o2DKtIkvYIK3UENzmM7KCkRr/rE9/Qpg6aAZGJwFDMVNA/GpGFF93hXpG5KkN" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.11.0/umd/popper.min.js" integrity="sha384-b/U6ypiBEHpOf/4+1nzFpr53nxSS+GLCkfwBdFNTxtclqqenISfwAzpKaMNFNmj4" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/js/bootstrap.min.js" integrity="sha384-h0AbiXch4ZDo7tp9hKZ4TsHbi047NrKGLO3SEJAg45jXxnGIfYzk4Si90RDIqNm1" crossorigin="anonymous"></script>
<!-- For all browsers -->
<link rel="stylesheet" href="/assets/css/main.css?v=1">
<link rel="stylesheet" href="/assets/vendor/prism/prism.css?v=1">

<!--[if lte IE 9]>
  <style>
    /* old IE unsupported flexbox fixes */
    .greedy-nav .site-title {
      padding-right: 3em;
    }
    .greedy-nav button {
      position: absolute;
      top: 0;
      right: 0;
      height: 100%;
    }
  </style>
<![endif]-->

<meta http-equiv="cleartype" content="on">

    <!-- start custom head snippets -->

<!-- insert favicons. use http://realfavicongenerator.net/ -->
<link href="https://fonts.cat.net/css?family=Roboto:400,500,700|Source+Code+Pro" rel="stylesheet">
<script src="/assets/js/custom.js"></script>
<!-- end custom head snippets -->

  </head>

  <body class="layout--single">

    <!--[if lt IE 9]>
<div class="notice--danger align-center" style="margin: 0;">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</div>
<![endif]-->
    <div class="masthead" onmouseleave="$('#childrenShow').css('display', 'none')">
  <div class="masthead__inner-wrap">
    <div class="masthead__menu">
      <nav id="site-nav" class="greedy-nav">
	      
          <a class="site-title active" href="/"><img src="https://www.apache.org/img/servicecomb.png"></a>
	      
        <ul class="visible-links">
          
            
          
          
            
              <li class="masthead__menu-item" onmouseenter="$('#childrenShow').css('display', 'none')">
                
                  <a href="/">Home</a>
                
              </li>
            
          
            
          
          
            
              <li class="masthead__menu-item" onmouseenter="$('#childrenShow').css('display', 'none')">
                
                  <a href="/developers/">Projects</a>
                
              </li>
            
          
            
          
          
            
            <li class="def-nav-li" onmouseenter="$('#childrenShow').css('display', 'block')">
              
              
              

              
                <a href="/docs/users/">Documentation</a>
              

              <ul id="childrenShow" class="def-children-show-en" onmouseleave="$('#childrenShow').css('display', 'none')">
                
                <li><a href="/docs/getting-started/" class="">Getting started</a></li>
                
                <li><a href="/docs/users/" class="">Docs</a></li>
                
                <li><a href="/slides/" class="">Video</a></li>
                
                <li><a href="/faqs/" class="">FAQ</a></li>
                
              </ul>
            </li>
          
          
            
          
          
            
              <li class="masthead__menu-item" onmouseenter="$('#childrenShow').css('display', 'none')">
                
                  <a class="active" href="/developers/contributing">Community</a>
                
              </li>
            
          
            
          
          
            
              <li class="masthead__menu-item" onmouseenter="$('#childrenShow').css('display', 'none')">
                
                  <a href="/year-archive/">Blogs</a>
                
              </li>
            
          
            
          
          
            
              <li class="masthead__menu-item" onmouseenter="$('#childrenShow').css('display', 'none')">
                
                  <a class="active" href="/release/">Downloads</a>
                
              </li>
            
          
        </ul>
        <button><div class="navicon"></div></button>
        <ul class="hidden-links hidden"></ul>
        <div class="nav-lang">
          
            
            <a href=/cn/developers/release-guide/>中文</a>
          
        </div>
      </nav>
    </div>
  </div>
</div>


    



<div id="main" role="main">
  
  <div class="sidebar sticky">
      
      <div class="back-to-home"><a href="/">Home</a> > Release guide for ServiceComb</div>
      
  
  
    
      
      
      
    
    
      

<nav class="nav__list">
  
  <input id="ac-toc" name="accordion-toc" type="checkbox" />
  <label for="ac-toc">Toggle Menu</label>
  <ul class="nav__items">
    
      <li>
        
          
          

          <a href="/developers/"><span class="nav__sub-title nav__sub-title-with-url">Projects</span></a>
        

        
      </li>
    
      <li>
        
          
          

          <a href="/developers/team/"><span class="nav__sub-title nav__sub-title-with-url">Team</span></a>
        

        
      </li>
    
      <li>
        
          
          

          <a href="/developers/contributing"><span class="nav__sub-title nav__sub-title-with-url">Contributing to Apache ServiceComb</span></a>
        

        
      </li>
    
      <li>
        
          
          

          <a href="/developers/becomming-a-commiter"><span class="nav__sub-title nav__sub-title-with-url">Becoming A Committer of Apache ServiceComb</span></a>
        

        
      </li>
    
      <li>
        
          
          

          <a href="/developers/setup-develop-environment/"><span class="nav__sub-title nav__sub-title-with-url">Develop Environment Setup</span></a>
        

        
      </li>
    
      <li>
        
          
          

          <a href="/developers/submit-codes/"><span class="nav__sub-title nav__sub-title-with-url">Code Submit Guide</span></a>
        

        
      </li>
    
      <li>
        
          
          

          <a href="/developers/use-jira/"><span class="nav__sub-title nav__sub-title-with-url">How to Use JIRA</span></a>
        

        
      </li>
    
      <li>
        
          
          

          <a href="/developers/setup-committer-rights/"><span class="nav__sub-title nav__sub-title-with-url">Set Up Write Access for Committer</span></a>
        

        
      </li>
    
      <li>
        
          
          

          <a href="/developers/release-guide/"><span class="nav__sub-title nav__sub-title-with-url">How to Release in Apache</span></a>
        

        
      </li>
    
      <li>
        
          
          

          <a href="/developers/release-validation-guide/"><span class="nav__sub-title nav__sub-title-with-url">How to verify Apache Release</span></a>
        

        
      </li>
    
      <li>
        
          
          

          <a href="/developers/sonarcloud-how-to/"><span class="nav__sub-title nav__sub-title-with-url">How to Use SonarCloud</span></a>
        

        
      </li>
    
  </ul>
</nav>

    
  
  </div>



  <article class="page" itemscope itemtype="http://schema.org/CreativeWork">
    <meta itemprop="headline" content="Release guide for ServiceComb">
    <meta itemprop="description" content="Release guide for doing the releases in Apache">
    
    <meta itemprop="dateModified" content="April 03, 2018">

    <div class="page__inner-wrap">
      
        
          <header>
            <h1 class="page__title" itemprop="headline">Release guide for ServiceComb
</h1>
            
          </header>
        
      

      <section class="page__content" itemprop="text">
        <aside class="sidebar__right">
<nav class="toc">
    <!-- <header><h4 class="nav__title"><i class="fa fa-file-text"></i> On This Page</h4></header> -->
<ul class="toc__menu" id="markdown-toc">
  <li><a href="#pre-requisite" id="markdown-toc-pre-requisite">Pre-Requisite</a></li>
  <li><a href="#maven-2-setup" id="markdown-toc-maven-2-setup">Maven 2 Setup</a></li>
  <li><a href="#major-steps-for-doing-service-center-release" id="markdown-toc-major-steps-for-doing-service-center-release">Major Steps for doing Service-Center Release</a></li>
  <li><a href="#major-steps-for-doing-java-chassis-release" id="markdown-toc-major-steps-for-doing-java-chassis-release">Major Steps for doing Java-Chassis Release</a></li>
  <li><a href="#major-steps-for-doing-saga-release" id="markdown-toc-major-steps-for-doing-saga-release">Major Steps for doing Saga Release</a></li>
</ul>

  </nav>
</aside>

<p>This Guide helps you to do the release in Apache for ServiceComb projects.</p>

<h2 id="pre-requisite">Pre-Requisite</h2>
<p>To prepare or perform a released you MUST BE at least an Apache ServiceComb committer.</p>

<ol>
  <li>The CI for the project should be green.</li>
  <li>Should have the version number for the project.</li>
  <li>Should have <a href="https://www.apache.org/dev/openpgp.html#generate-key">Sign Key</a> for <a href="https://www.apache.org/dev/release-signing">signing the release</a>, the keys should be published to public key server.</li>
  <li>Get familiar with the release settings in the parent Apache POM</li>
</ol>

<h2 id="maven-2-setup">Maven 2 Setup</h2>
<p>As ServiceComb Java Chassis and Saga are using maven for the release, you should do some maven 2 setup before releasing these two projects.
Before you deploy anything to the maven repository using Maven 2, you should configure your ~/.m2/settings.xml file so that the file permissions of the deployed artifacts are group writable. If you do not do this, other developers will not able to overwrite your SNAPSHOT releases with newer versions. The settings follow the <a href="http://maven.apache.org/developers/committer-settings.html">guidelines</a> used by the Maven project. Please pay particular attention to the <a href="http://maven.apache.org/guides/mini/guide-encryption.html">password encryption recommendations</a>.</p>

<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>&lt;settings&gt;
  ...
  &lt;servers&gt;
    &lt;!-- Per http://maven.apache.org/developers/committer-settings.html --&gt;

    &lt;!-- To publish a snapshot of some part of Maven --&gt;
    &lt;server&gt;
      &lt;id&gt;apache.snapshots.https&lt;/id&gt;
      &lt;username&gt; &lt;!-- YOUR APACHE LDAP USERNAME --&gt; &lt;/username&gt;
      &lt;password&gt; &lt;!-- YOUR APACHE LDAP PASSWORD --&gt; &lt;/password&gt;
    &lt;/server&gt;
    &lt;!-- To publish a website of some part of Maven --&gt;
    &lt;server&gt;
      &lt;id&gt;apache.website&lt;/id&gt;
      &lt;username&gt; &lt;!-- YOUR APACHE LDAP USERNAME --&gt; &lt;/username&gt;
      &lt;filePermissions&gt;664&lt;/filePermissions&gt;
      &lt;directoryPermissions&gt;775&lt;/directoryPermissions&gt;
    &lt;/server&gt;
    &lt;!-- To stage a release of some part of Maven --&gt;
    &lt;server&gt;
      &lt;id&gt;apache.releases.https&lt;/id&gt;
      &lt;username&gt; &lt;!-- YOUR APACHE LDAP USERNAME --&gt; &lt;/username&gt;
      &lt;password&gt; &lt;!-- YOUR APACHE LDAP PASSWORD --&gt; &lt;/password&gt;
    &lt;/server&gt;
    &lt;!-- To stage a website of some part of Maven --&gt;
    &lt;server&gt;
      &lt;id&gt;stagingSite&lt;/id&gt; &lt;!-- must match hard-coded repository identifier in site:stage-deploy --&gt;
      &lt;username&gt; &lt;!-- YOUR APACHE LDAP USERNAME --&gt; &lt;/username&gt;
      &lt;filePermissions&gt;664&lt;/filePermissions&gt;
      &lt;directoryPermissions&gt;775&lt;/directoryPermissions&gt;
    &lt;/server&gt;

  &lt;/servers&gt;
  ...
  &lt;profiles&gt;
    &lt;profile&gt;
      &lt;id&gt;apache-release&lt;/id&gt;
      &lt;properties&gt;
        &lt;gpg.useagent&gt;false&lt;/gpg.useagent&gt;
        &lt;gpg.passphrase&gt;&lt;!-- YOUR GPG PASSPHRASE --&gt;&lt;/gpg.passphrase&gt;
        &lt;test&gt;false&lt;/test&gt;
      &lt;/properties&gt;
    &lt;/profile&gt;

  &lt;/profiles&gt;
...
&lt;/settings&gt;
</code></pre></div></div>

<h2 id="major-steps-for-doing-service-center-release">Major Steps for doing Service-Center Release</h2>

<p><strong><em>Make and Verify the Release</em></strong></p>

<ol>
  <li>Clone the service-center code.
    <div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>git clone https://github.com/apache/servicecomb-service-center.git
cd servicecomb-service-center
gvt restore
</code></pre></div>    </div>
  </li>
  <li>
    <p>Create a Tag from the master branch based on the version number which needs to be released.</p>
  </li>
  <li>
    <p>Run RAT tool to ensure no license issues are there, follow the guide over <a href="https://github.com/apache/servicecomb-service-center/tree/master/docs/release">here</a></p>
  </li>
  <li>
    <p>Run the make_release.sh to make the release for windows and linux following the guide over <a href="https://github.com/apache/servicecomb-service-center/tree/master/scripts/release">here</a>.</p>
  </li>
  <li>
    <p>Last Step will make the releases in root folder.</p>
  </li>
  <li>
    <p>Run the releases of frontend and service-center in both linux and windows.</p>
  </li>
  <li>
    <p>Run the <a href="https://github.com/apache/servicecomb-service-center/tree/master/integration">integration test</a> on the release.</p>
  </li>
  <li>
    <p>If all the test passes then send the release candidate to peers to test in different machines.</p>
  </li>
  <li>Push the tag to master.</li>
</ol>

<p><strong><em>Sign the Release</em></strong></p>

<ol>
  <li>
    <p>Once the tag is pushed then using the tag download the source code from git <a href="https://github.com/apache/servicecomb-service-center/tags">tag</a>.</p>
  </li>
  <li>
    <p>Sign the 4 releases(linux, windows, darwin, src) and checksum.</p>
  </li>
  <li>
    <p>Create a new directory <a href="https://dist.apache.org/repos/dist/dev/servicecomb/servicecomb-service-center/">Apache dev Release SVN</a> with release package name and release candidate number. (for example : if you want to release 1.0.0-m2 and this is the second attempt of the release then the folder structure will be <code class="highlighter-rouge">1.0.0-m2/rc02</code>)</p>
  </li>
  <li>
    <p>Upload the release to the directory created in last step.</p>
  </li>
  <li>
    <p>Download all the releases from SVN and verify the signature and checksum.</p>
  </li>
</ol>

<p><strong><em>PMC Approval</em></strong></p>

<ol>
  <li>
    <p>Send the voting mail in <strong><em>dev@servicecomb.apache.org</em></strong> for 1PMC approval.</p>
  </li>
  <li>
    <p>Wait for 72 hours or unless you get 3 +1 binding vote with no -1 vote. If you get even one -1 binding vote then fix the issue and start again from <strong><em>Step 1</em></strong>.</p>
  </li>
  <li>
    <p>Publish the result of the vote in dev@servicecomb.apache.org.</p>
  </li>
</ol>

<p><strong><em>Announcements</em></strong></p>

<ol>
  <li>
    <p>Upload the releases to <a href="https://dist.apache.org/repos/dist/release/servicecomb/servicecomb-service-center/">Apache release repository</a>.</p>
  </li>
  <li>
    <p>Wait for 24 hours to replicate the release in all the mirrors.</p>
  </li>
  <li>
    <p>Delete old releases from <a href="https://dist.apache.org/repos/dist/dev">dev</a> and [release] (https://dist.apache.org/repos/dist/release) and check for the old release in archive, update the same links in the website for old releases.</p>
  </li>
  <li>
    <p>Upload the release page of ServiceComb Website.</p>
  </li>
  <li>
    <p>Send the announcement mails to dev@servicecomb.apache.org, announce@apache.org</p>
  </li>
</ol>

<h2 id="major-steps-for-doing-java-chassis-release">Major Steps for doing Java-Chassis Release</h2>

<p>Before release, make sure all apache issues are closed. Log in
 <a href="https://issues.apache.org/jira/projects/SCB">apache issue website</a>, click <code class="highlighter-rouge">release</code> and generate release notes.</p>

<p><strong><em>Prepare the release code</em></strong></p>

<p>clone java-chassis code to your development environment, change version to release version and push to github.
Assume code version is <code class="highlighter-rouge">2.0.0-SNAPSHOT</code> and release version is <code class="highlighter-rouge">2.0.0</code>.</p>

<p>Run:</p>

<p>```shell script
mvn versions:set -DgenerateBackupPoms=false -DnewVersion=2.0.0</p>
<div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>
Then:

```shell script
mvn clean install -Pit
</code></pre></div></div>

<p>If the build is successful, submit a PR and merge code after review.</p>

<p><strong><em>Release maven artifacts</em></strong></p>

<p>Prepare Linux environment, and make sure can upload artifacts to maven central.</p>

<ol>
  <li>
    <p>Copy GPG keys to <code class="highlighter-rouge">~/.gnupg</code></p>

    <div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code> ```
 gpg.conf
 pubring.gpg
 random_seed
 secring.gpg
 trustdb.gpg
 ```
</code></pre></div>    </div>
  </li>
  <li>
    <p>Update PGR password in <code class="highlighter-rouge">~/.m2/settings.xml</code></p>
  </li>
  <li>
    <p>Update apache maven server user name and password in <code class="highlighter-rouge">~/.m2/settings.xml</code></p>
  </li>
  <li>
    <p>clone java-chassis</p>

    <div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code> ```
 git clone https://github.com/apache/servicecomb-java-chassis.git
 ```
</code></pre></div>    </div>
  </li>
  <li>
    <p>Run</p>

    <div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code> ```
 mvn clean deploy -DskipTests -Prelease -Pdistribution -Ppassphrase
 ```
</code></pre></div>    </div>
  </li>
  <li>
    <p>If failed in step 5, <code class="highlighter-rouge">drop</code> the temporary repository in apache Nexus and start from step 5 again.</p>
  </li>
  <li>
    <p>If step 5 is successful, all artifacts are uploaded to a temporary repository. Using your apache account and 
log in to  <a href="https://repository.apache.org/">Apache Nexus</a>. Click  <code class="highlighter-rouge">Staging Repositories</code>, search <code class="highlighter-rouge">servicecomb</code>,
find the latest repository, click “close”, and get the staging repository link like <code class="highlighter-rouge">https://repository.apache.org/content/repositories/orgapacheservicecomb-1385</code></p>
  </li>
  <li>
    <p>In servicecomb-java-chassis  release page，click release， do a <code class="highlighter-rouge">pre release</code></p>
  </li>
</ol>

<p><strong><em>Sign the distributions</em></strong></p>

<ol>
  <li>
    <p>Download binary distributions from the temporary repository. e.g.</p>

    <div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code> ```  
 https://repository.apache.org/content/repositories/orgapacheservicecomb-1385/org/apache/servicecomb/apache-servicecomb-java-chassis-distribution/1.2.0/apache-servicecomb-java-chassis-distribution-1.2.0-bin.zip  
 https://repository.apache.org/content/repositories/orgapacheservicecomb-1385/org/apache/servicecomb/apache-servicecomb-java-chassis-distribution/1.2.0/apache-servicecomb-java-chassis-distribution-1.2.0-bin.zip.asc
 ```
</code></pre></div>    </div>
  </li>
  <li>
    <p>Download source distributions from the temporary repository. e.g.</p>

    <div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code> ```
 https://repository.apache.org/content/repositories/orgapacheservicecomb-1385/org/apache/servicecomb/apache-servicecomb-java-chassis-distribution/1.2.0/apache-servicecomb-java-chassis-distribution-1.2.0-src.zip  
 https://repository.apache.org/content/repositories/orgapacheservicecomb-1385/org/apache/servicecomb/apache-servicecomb-java-chassis-distribution/1.2.0/apache-servicecomb-java-chassis-distribution-1.2.0-src.zip.asc
 ```
</code></pre></div>    </div>
  </li>
  <li>
    <p>generate checksum. e.g.</p>

    <div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code> ```
 sha512sum -b apache-servicecomb-java-chassis-distribution-1.2.0-bin.zip &gt; apache-servicecomb-java-chassis-distribution-1.2.0-bin.zi.sha512  
 sha512sum -b apache-servicecomb-java-chassis-distribution-1.2.0-src.zip &gt; apache-servicecomb-java-chassis-distribution-1.2.0-src.zip.sha512  
 ```
</code></pre></div>    </div>
  </li>
  <li>
    <p>upload all file to <a href="https://dist.apache.org/repos/dist/dev/servicecomb/servicecomb-java-chassis/">Apache development svn</a>.  Run</p>

    <div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code> ```
 svn co https://dist.apache.org/repos/dist/dev/servicecomb/servicecomb-java-chassis
 cd serviecomb-java-chassis
 mkdir -p 1.2.0/rc01
 cp xxx/* 1.2.0/rc01
 svn add 1.2.0
 svn ci 1.2.0
 ```
</code></pre></div>    </div>
  </li>
  <li>
    <p>download the files and verify the sign.</p>
  </li>
</ol>

<p><strong><em>Sending mail for permission</em></strong></p>

<ol>
  <li>
    <p>Send mail to <code class="highlighter-rouge">dev@servicecomb.apache.org</code> and waiting for voting result.</p>
  </li>
  <li>
    <p>Waiting 72 hours and if got three + 1 and no -1, the voting is successful. If there are some problems,
 start a new round of release. (According to the problem, please notice to clean up release notes,
 temporary svn files, and temporary stating repositories. )</p>
  </li>
  <li>
    <p>Send the voting result to <code class="highlighter-rouge">dev@servicecomb.apache.org</code></p>
  </li>
</ol>

<p><strong><em>Update documents and announcements</em></strong></p>

<ol>
  <li>
    <p>In servicecomb-java-chassis  github release page，set <code class="highlighter-rouge">pre release</code> to <code class="highlighter-rouge">formal release</code> and write release notes.</p>
  </li>
  <li>
    <p>Move <a href="https://dist.apache.org/repos/dist/dev">dev</a> to <a href="https://dist.apache.org/repos/dist/release">release</a></p>

    <div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code> ```
 cp dev/servicecomb/servicecomb-java-chassis/2.0.0/* release/servicecomb/servicecomb-java-chassis/2.0.0/
 cd release/servicecomb/servicecomb-java-chassis/
 svn add 2.0.0
 svn ci 2.0.0
 ```
</code></pre></div>    </div>

    <p>And delete <a href="https://dist.apache.org/repos/dist/dev">dev</a></p>

    <div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code> ```
 svn rm 1.2.0
 svn ci .
 ```
</code></pre></div>    </div>
  </li>
  <li>
    <p>Log in to <a href="https://repository.apache.org/">Apache Nexus</a>, find <code class="highlighter-rouge">Staging Repositories</code> and search 
 <code class="highlighter-rouge">servicecomb</code>，find the last <code class="highlighter-rouge">closed</code> repository, and click <code class="highlighter-rouge">release</code>. If there are any temporary <code class="highlighter-rouge">Staging Repositories</code>,
 <code class="highlighter-rouge">drop</code> them.</p>
  </li>
  <li>
    <p>Waiting for 24 hour for all mirror in sync.</p>
  </li>
  <li>
    <p>Update the servicecomb-website, see <a href="https://github.com/apache/servicecomb-website/pull/210">1.3.0 RP</a>
or <a href="https://github.com/apache/servicecomb-website/pull/240">2.0.0 RP</a></p>
  </li>
  <li>
    <p>Send announcements to <code class="highlighter-rouge">dev@servicecomb.apache.org</code>， <code class="highlighter-rouge">announce@apache.org</code>。</p>
  </li>
</ol>

<h2 id="major-steps-for-doing-saga-release">Major Steps for doing Saga Release</h2>

<p><strong><em>Make and Verify the Release</em></strong></p>
<ol>
  <li>Clone the saga code.
    <div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>git clone https://github.com/apache/servicecomb-saga.git
</code></pre></div>    </div>
  </li>
  <li>
    <p>Cut the release using per command to replace all the versions in pom.xml files</p>
  </li>
  <li>Create a Tag from the master branch using the version number.
    <div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>find . -name 'pom.xml'|xargs perl -pi -e 's/1.0.0-m2-SNAPSHOT/1.0.0-m2/g'
</code></pre></div>    </div>
  </li>
  <li>
    <p>Clear all the redundant servicecomb releases in repository.apache.org</p>
  </li>
  <li>
    <p>Add the keys in a reference folder.</p>
  </li>
  <li>
    <p>Update the key path and passphrase in your ~/.m2/settings.xml file.</p>
  </li>
  <li>
    <p>Update the apache account username and password in the settings.xml file.</p>
  </li>
  <li>Run the maven deploy command.
    <div class="highlighter-rouge"><div class="highlight"><pre class="highlight"><code>mvn deploy -DskipTests -Ppassphrase -Prelease
</code></pre></div>    </div>
  </li>
  <li>
    <p>Once every thing is uploaded then use the staging repo to verify the build using the acceptance test.</p>
  </li>
  <li>
    <p>Share the staging repo with peers to verify on different OS and machines using the demo.</p>
  </li>
  <li>
    <p>If everything is fine then push the tag to master.</p>
  </li>
  <li>Close the staging repo is apache repositories.</li>
</ol>

<p><strong><em>Sign the Releases</em></strong></p>

<ol>
  <li>
    <p>Download the source code and distribution from the staging repo.</p>
  </li>
  <li>
    <p>Sign the 2 releases(distribution, src) and checksum.</p>
  </li>
  <li>
    <p>Create a new directory <a href="https://dist.apache.org/repos/dist/dev/servicecomb/servicecomb-saga/">Apache dev Release SVN</a> with release package name and release candidate number. (for example : if you want to release 1.0.0-m2 and this is the third attempt of the release then the folder structure will be <code class="highlighter-rouge">1.0.0-m2/rc03</code>)</p>
  </li>
  <li>
    <p>Upload the release to  directory created in last step.</p>
  </li>
  <li>
    <p>Download all the releases from SVN and verify the signature and checksum.</p>
  </li>
</ol>

<p><strong><em>PMC approval</em></strong></p>

<ol>
  <li>
    <p>Send the voting mail in dev@servicecomb.apache.org.</p>
  </li>
  <li>
    <p>Wait for 72 hours or unless you get 3 +1 binding vote with no -1 vote. If you get even one -1 binding vote then fix the issue and start again from Step 1.</p>
  </li>
  <li>
    <p>Publish the result of the vote in dev@servicecomb.apache.org.</p>
  </li>
</ol>

<p><strong><em>Announcements</em></strong></p>

<ol>
  <li>
    <p>Upload the releases to <a href="https://dist.apache.org/repos/dist/release/servicecomb/servicecomb-saga/">Apache release repository</a>.</p>
  </li>
  <li>
    <p>Wait for 24 hours to replicate the release in all the mirrors.</p>
  </li>
  <li>
    <p>Delete old releases from <a href="https://dist.apache.org/repos/dist/dev">dev</a> and [release] (https://dist.apache.org/repos/dist/release) and check for the old release in archive, update the same links in the website for old releases.</p>
  </li>
  <li>
    <p>Upload the release page of ServiceComb Website.</p>
  </li>
  <li>
    <p>Send the announcement mails to dev@servicecomb.apache.org, announce@apache.orgg</p>
  </li>
</ol>

<p><strong>NOTE</strong></p>
<ul>
  <li>The whole process generally takes 1 weeks to complete assuming you don’t get any -1 from PMC, so please plan the release activity before hand.</li>
</ul>

        
      </section>

      <footer class="page__meta">
        
        
  


  
  
  

  <p class="page__taxonomy">
    <strong><i class="fa fa-fw fa-tags" aria-hidden="true"></i> Tags: </strong>
    <span itemprop="keywords">
    
      
      
      <a href="/tags/#release" class="page__taxonomy-item" rel="tag">release</a>
    
    </span>
  </p>





        
      </footer>

      

      

    </div>

    
  </article>

  
  
</div>


    <script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
    <div align="center" style="margin: 0 0;">
    <ins class="adsbygoogle"
         style="display:block; border-bottom: initial;"
         data-ad-client="ca-pub-7328585512091257"
         data-ad-slot="3049671934"
         data-ad-format="auto"></ins>
    </div>

    <div class="page__footer">
      <footer>
        <!-- start custom footer snippets -->

<!-- end custom footer snippets -->

        <div class="container">
  <div class="row justify-content-md-center">
    
    <div class="col">
      <ul>
        <p class="header">Resources</p>
        <li><a href="/docs/getting-started/">Getting started</a></li>
        <li><a href="/docs/users/">User Guide</a></li>
        <li><a href="/slides/">Slides</a></li>
        <li><a href="/users/faq/">Common Questions</a></li>
      </ul>
    </div>
    <div class="col">
      <ul>
        <p class="header">ASF</p>
        <li><a href="http://www.apache.org">Foundation</a></li>
        <li><a href="http://www.apache.org/licenses/">License</a></li>
        <li><a href="http://www.apache.org/events/current-event">Events</a></li>
        <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
        <li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li>
      </ul>
    </div>
    <div class="col">
      <ul>
        <p class="header">Contribute</p>
        <li><a href="http://issues.apache.org/jira/browse/SCB">Report a Doc Issue</a></li>
        <li><a href="https://github.com/apache/servicecomb-website/edit/master/_developers/release_guide.md">Edit This Page on Github</a></li>
        <li><a href="/developers/submit-codes/">Code Submit Guide</a></li>
        <li><a href="/security">Security</a></li>
      </ul>
    </div>
    <div class="col">
      <ul class="social-icons">
        <p class="header">Community</p>
        <li>
            <a href="mailto:dev-subscribe@servicecomb.incubator.apache.org" rel="nofollow"><span class="mail">Mailing List</span></a>
        </li>
        <li>
            <a href="https://github.com/apache?q=ServiceComb" target="_blank"><span class="github">Github</span></a>
        </li>
        <li>
            <a href="https://twitter.com/ServiceComb" target="_blank"><span class="twitter">Twitter</span></a>
        </li>
        <li>
            <a href="/feed.xml" target="_blank"><span class="rss">Feed</span></a>
        </li>
      </ul>
    </div>
  </div>
</div>
<div class="page__footer-bottom">
  <div>&copy; 2020 Apache ServiceComb. Powered by <a href="http://jekyllrb.com" rel="nofollow">Jekyll</a> &amp; <a href="https://mademistakes.com/work/minimal-mistakes-jekyll-theme/" rel="nofollow">Minimal Mistakes</a>.</div>
  <div>All other marks mentioned may be trademarks or registered trademarks of their respective owners.</div>
</div>

      </footer>
    </div>

    <script src="/assets/js/main.min.js"></script>




  <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','https://www.google-analytics.com/analytics.js','ga');

  ga('create', 'UA-101622733-1', 'auto');
  ga('send', 'pageview');
</script>







  </body>
</html>
