You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by li...@apache.org on 2018/08/22 14:10:08 UTC

svn commit: r1838640 [4/7] - in /kylin/site: ./ cn/ cn/community/ cn/development/ cn/docs/ cn/docs/howto/ cn/docs/install/ cn/docs/tutorial/ cn/docs16/ cn/docs16/install/ cn/docs16/tutorial/ cn/docs20/ cn/docs20/install/ cn/docs20/tutorial/ cn/docs21/ ...

Added: kylin/site/cn/development/howto_release.html
URL: http://svn.apache.org/viewvc/kylin/site/cn/development/howto_release.html?rev=1838640&view=auto
==============================================================================
--- kylin/site/cn/development/howto_release.html (added)
+++ kylin/site/cn/development/howto_release.html Wed Aug 22 14:10:06 2018
@@ -0,0 +1,1266 @@
+<!--
+* 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>
+	<!--
+* 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.
+-->
+
+<head>
+  <meta charset="utf-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <meta name="viewport" content="width=device-width, initial-scale=1">
+
+  <title>Apache Kylin | 如何发布</title>
+  <meta name="description" content="Apache Kylin Home">
+  <meta name="author"      content="Apache Kylin">
+  <link rel="shortcut icon" href="fav.png" type="image/png">
+
+
+
+<link rel="stylesheet" href="/assets/css/animate.css">
+<!-- Bootstrap -->
+<link rel="stylesheet" href="/assets/css/bootstrap.min.css">
+
+<!-- Fonts -->
+<!-- <link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Alice|Open+Sans:400,300,700"> -->
+
+<!-- Icons -->
+<link rel="stylesheet" href="/assets/css/font-awesome.min.css">
+
+  <!-- Custom styles -->
+  <link rel="stylesheet" href="/assets/css/styles.css">
+  <link rel="stylesheet" href="/assets/css/docs.css">
+
+  <link rel="canonical" href="http://kylin.apache.org/cn/development/howto_release.html">
+  <link rel="alternate" type="application/rss+xml" title="Apache Kylin" href="http://kylin.apache.org/feed.xml" />
+
+<!--[if lt IE 9]> <script src="assets/js/html5shiv.js"></script> <![endif]-->
+<!-- Global site tag (gtag.js) - Google Analytics -->
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-120788561-1"></script>
+<script>
+  window.dataLayer = window.dataLayer || [];
+  function gtag(){dataLayer.push(arguments);}
+  gtag('js', new Date());
+
+  gtag('config', 'UA-120788561-1');
+</script>
+<script type="text/javascript" src="/assets/js/jquery-1.9.1.min.js"></script>
+<script type="text/javascript" src="/assets/js/nside.js"></script> </script>
+<script type="text/javascript" src="/assets/js/nnav.js"></script> </script>
+<script>
+var _hmt = _hmt || [];
+(function() {
+  var hm = document.createElement("script");
+  hm.src = "https://hm.baidu.com/hm.js?bdc5e03add430c0b72cc0eb91eabfa99";
+  var s = document.getElementsByTagName("script")[0]; 
+  s.parentNode.insertBefore(hm, s);
+})();
+</script>
+</head>
+
+	<body>
+		<!--
+* 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.
+-->
+
+<header id="header" >
+  <!-- Main Menu -->
+  <nav class="navbar navbar-default" role="navigation" id="nav-wrapper">
+    <div class="container-fluid" id="nav">
+      <!-- Brand and toggle get grouped for better mobile display -->
+      <div class="navbar-header">
+        <img class="navbar-logo" width="46" src="/assets/images/kylin_logo.png "></img> 
+        
+        <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
+          <span class="sr-only">Toggle navigation</span>
+          <span class="icon-bar"></span>
+          <span class="icon-bar"></span>
+          <span class="icon-bar"></span>
+        </button>
+        <ul class="nav icon-navbar">
+            <li><a href="https://twitter.com/apachekylin" target="_blank" class="fa fa-twitter fa-lg"  title="Twitter: @ApacheKylin" ></a></li>
+            <li><a href="https://github.com/apache/kylin" target="_blank" class="fa fa-github-alt fa-lg" title="Github: apache/kylin" ></a></li>          
+            <li><a href="https://www.facebook.com/kylinio" target="_blank" class="fa fa-facebook fa-lg" title="Facebook: kylin.io" ></a></li>    
+        </ul>
+      </div>
+
+      <!-- Collect the nav links, forms, and other content for toggling -->
+      <div class="navbar-collapse" id="bs-example-navbar-collapse-1">
+        <ul class="nav navbar-nav">
+            <li><a href="/cn">首页</a></li>
+            <li><a href="/cn/docs" >文档</a></li>
+            <li><a href="/cn/download">下载</a></li>
+            <li><a href="/cn/community" >社区</a></li>
+            <li><a href="/cn/development" >开发</a></li>
+            <li><a href="/blog">博客</a></li>
+            <li><a href="/" >English</a></li>           
+        </ul>
+        
+
+      </div><!-- /.navbar-collapse -->
+    </div><!-- /.container-fluid -->
+  </nav>
+
+  <div id="head" class="parallax normal-header" >
+    <div class="text-center header-apache">
+      <a href="http://apache.org/foundation/contributing.html" title="Support Apache" style="margin-left: 150px;">
+        <div>
+          <img src="https://www.apache.org/images/SupportApache-small.png">
+        </div>
+      </a>
+    </div>  
+  </div>
+
+ </header>
+
+		
+		<div class="container">
+			<div class="row"  style="clear:both;">
+				
+				<div class="col-md-8 col-lg-8 col-xs-12 col-sm-12 aside2" style="float: right;">
+					<div id="container" class="docs">
+						<div id="pjax">
+							<h1 class="post-title">如何发布</h1>
+							<article class="post-content" >
+							<p><em>本教程只适用于 Apache Kylin Committers。</em>  <br />
+<em>以在 Mac OS X 上的 Shell 命令作为样例。</em>  <br />
+<em>对于中国用户,请谨慎使用代理以避免潜在的防火墙问题。</em></p>
+
+<h2 id="section">建立账户</h2>
+<p>确保您有可使用的账号且对以下应用有权限:</p>
+
+<ul>
+  <li>Apache 账户: <a href="https://id.apache.org/">https://id.apache.org</a></li>
+  <li>Apache Kylin git repo (main cobe base): <a href="https://github.com/apache/kylin">https://github.com/apache/kylin</a></li>
+  <li>Apache Kylin svn 仓库 (只针对网站): <a href="https://svn.apache.org/repos/asf/kylin">https://svn.apache.org/repos/asf/kylin</a></li>
+  <li>Apache Nexus (maven 仓库): <a href="https://repository.apache.org">https://repository.apache.org</a></li>
+  <li>Apache Kylin dist 仓库: <a href="https://dist.apache.org/repos/dist/dev/kylin">https://dist.apache.org/repos/dist/dev/kylin</a></li>
+</ul>
+
+<h2 id="gpg-">设置 GPG 签名密钥</h2>
+<p>按照 <a href="http://www.apache.org/dev/release-signing">http://www.apache.org/dev/release-signing</a> 上的说明创建密钥对  <br />
+安装 gpg (以 Mac OS X 为例):  <br />
+<code class="highlighter-rouge">brew install gpg</code></p>
+
+<p>生成 gpg 密钥:  <br />
+参考: <a href="https://www.gnupg.org/gph/en/manual/c14.html">https://www.gnupg.org/gph/en/manual/c14.html</a>  <br />
+<em>生成的所有新 RSA 密钥应至少为 4096 位。不要生成新的 DSA 密钥</em>  <br />
+<code class="highlighter-rouge">gpg --full-generate-key</code></p>
+
+<p>验证您的密钥:  <br />
+<code class="highlighter-rouge">gpg --list-sigs YOUR_NAME</code></p>
+
+<p>获取密钥的指纹:<br />
+<code class="highlighter-rouge">gpg --fingerprint YOUR_NAME</code></p>
+
+<p>它将显示指纹,如 “Key fingerprint = XXXX XXXX …“,然后在 <a href="https://id.apache.org/">https://id.apache.org/</a> 上的”OpenPGP Public Key Primary Fingerprint”字段处将指纹添加到您的 apache 帐户;等待几个小时,密钥将添加到 <a href="https://people.apache.org/keys/">https://people.apache.org/keys/</a>,例如:<br />
+<a href="https://people.apache.org/keys/committer/lukehan.asc">https://people.apache.org/keys/committer/lukehan.asc</a></p>
+
+<p>生成 ASCII Amromed 键:  <br />
+<code class="highlighter-rouge">gpg -a --export YOUR_MAIL_ADDRESS &gt; YOUR_NAME.asc &amp;</code></p>
+
+<p>上传密钥到公共服务器:  <br />
+<code class="highlighter-rouge">gpg --send-keys YOUR_KEY_HASH</code></p>
+
+<p>或通过 web 提交密钥:  <br />
+打开并提交到 <a href="http://pool.sks-keyservers.net:11371">http://pool.sks-keyservers.net:11371</a> (您可以选择任意一个有效的公钥服务器)</p>
+
+<p>一旦您的密钥提交到服务器,您可以通过使用以下命令验证:  <br />
+<code class="highlighter-rouge">gpg --recv-keys YOUR_KEY_HASH</code><br />
+举例:  <br />
+<code class="highlighter-rouge">gpg --recv-keys 027DC364</code></p>
+
+<p>按照 KEYS 文件中的说明将公钥添加到 KEYS 文件:  <br />
+<em>KEYS 文件位于:</em> <strong>${kylin}/KEYS</strong>  <br />
+例如:  <br />
+<code class="highlighter-rouge">(gpg --list-sigs YOURNAME &amp;&amp; gpg --armor --export YOURNAME) &gt;&gt; KEYS</code></p>
+
+<p>提交您的改动。</p>
+
+<h2 id="release-">准备 release 的工件</h2>
+<p><strong>开始前:</strong></p>
+
+<ul>
+  <li>如上所述设置签名密钥。</li>
+  <li>确保您使用的是 JDK 1.8。</li>
+  <li>确保您使用的是 GIT 2.7.2 或更高版本。</li>
+  <li>确保您使用的是正确的 release 版本号。</li>
+  <li>确保每个“resolved”的 JIRA 案例(包括重复案例)都分配了修复版本。</li>
+  <li>确保你在干净的目录工作</li>
+</ul>
+
+<p><strong>在 Maven 中配置 Apache 存储库服务器</strong><br />
+如果您是第一次发布,您需要在 ~/.m2/settings.xml 中服务器授权信息;如果该文件不存在,从 $M2_HOME/conf/settings.xml 拷贝一个模板;</p>
+
+<p>在“服务器”部分中,确保添加以下服务器,并将 #YOUR_APACHE_ID#, #YOUR_APACHE_PWD#, #YOUR_GPG_PASSPHRASE# 替换为您的 ID,密码和口令:</p>
+
+<div class="highlight"><pre><code class="language-bash" data-lang="bash">&lt;servers&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;#YOUR_APACHE_ID#&lt;/username&gt;
+      &lt;password&gt;#YOUR_APACHE_PWD#&lt;/password&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;#YOUR_APACHE_ID#&lt;/username&gt;
+      &lt;password&gt;#YOUR_APACHE_PWD#&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;#YOUR_APACHE_ID#&lt;/username&gt;
+      &lt;password&gt;#YOUR_APACHE_PWD#&lt;/password&gt;
+      &lt;!-- Either
+      &lt;privateKey&gt;...&lt;/privateKey&gt;
+      --&gt; 
+      &lt;filePermissions&gt;664&lt;/filePermissions&gt;
+      &lt;directoryPermissions&gt;775&lt;/directoryPermissions&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 <span class="k">in </span>site:stage-deploy --&gt;
+      &lt;username&gt;#YOUR_APACHE_ID#&lt;/username&gt;
+      &lt;filePermissions&gt;664&lt;/filePermissions&gt;
+      &lt;directoryPermissions&gt;775&lt;/directoryPermissions&gt;
+    &lt;/server&gt;
+    &lt;server&gt;
+      &lt;id&gt;gpg.passphrase&lt;/id&gt;
+      &lt;passphrase&gt;#YOUR_GPG_PASSPHRASE#&lt;/passphrase&gt;
+    &lt;/server&gt;
+  &lt;/servers&gt;</code></pre></div>
+
+<p><strong>修复许可证问题</strong></p>
+
+<div class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="c"># Set passphrase variable without putting it into shell history</span>
+<span class="gp">$ </span><span class="nb">read</span> -s GPG_PASSPHRASE
+
+<span class="c"># Make sure that there are no junk files in the sandbox</span>
+<span class="gp">$ </span>git clean -xf
+<span class="gp">$ </span>mvn clean
+
+<span class="c"># Make sure all unit tests are passed</span>
+<span class="gp">$ </span>mvn <span class="nb">test</span>
+
+<span class="c"># Check the `org.apache.kylin.common.KylinVersion` class, ensure the value of `CURRENT_KYLIN_VERSION` is the release version. </span>
+
+<span class="c"># Fix any license issues as reported by target/rat.txt</span>
+<span class="gp">$ </span>mvn -Papache-release -DskipTests -Dgpg.passphrase<span class="o">=</span><span class="k">${</span><span class="nv">GPG_PASSPHRASE</span><span class="k">}</span> install</code></pre></div>
+
+<p>可选的,当 dry-run 成功了,将安装变为部署:</p>
+
+<div class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="gp">$ </span>mvn -Papache-release -DskipTests -Dgpg.passphrase<span class="o">=</span><span class="k">${</span><span class="nv">GPG_PASSPHRASE</span><span class="k">}</span> deploy</code></pre></div>
+
+<p><strong>准备</strong></p>
+
+<p>创建一个以 release 后命名的发布分支,例如,v0.7.2-release,并将其推到 Apache。</p>
+
+<div class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="gp">$ </span>git checkout -b vX.Y.Z-release
+<span class="gp">$ </span>git push -u origin vX.Y.Z-release</code></pre></div>
+
+<p>如果任何步骤失败,请清理(见下文),解决问题,然后从头重新开始。</p>
+
+<div class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="c"># Set passphrase variable without putting it into shell history</span>
+<span class="gp">$ </span><span class="nb">read</span> -s GPG_PASSPHRASE
+
+<span class="c"># Make sure that there are no junk files in the sandbox</span>
+<span class="gp">$ </span>git clean -xf
+<span class="gp">$ </span>mvn clean
+
+<span class="c"># Optionally, do a dry run of the release:prepare step, which sets version numbers.</span>
+<span class="gp">$ </span>mvn -DdryRun<span class="o">=</span><span class="nb">true</span> -DskipTests -DreleaseVersion<span class="o">=</span>X.Y.Z -DdevelopmentVersion<span class="o">=(</span>X.Y.Z+1<span class="o">)</span>-SNAPSHOT -Papache-release -Darguments<span class="o">=</span><span class="s2">"-Dgpg.passphrase=</span><span class="k">${</span><span class="nv">GPG_PASSPHRASE</span><span class="k">}</span><span class="s2"> -DskipTests"</span> release:prepare 2&gt;&amp;1 | tee /tmp/prepare-dry.log</code></pre></div>
+
+<p><strong>查看 dry run 输出:</strong></p>
+
+<ul>
+  <li>在 <code class="highlighter-rouge">target</code> 目录中应该是这 8 个文件,其中包括:
+    <ul>
+      <li>apache-kylin-X.Y.Z-SNAPSHOT-src.zip</li>
+      <li>apache-kylin-X.Y.Z-SNAPSHOT-src.zip.asc</li>
+      <li>apache-kylin-X.Y.Z-SNAPSHOT-src.zip.md5</li>
+      <li>apache-kylin-X.Y.Z-SNAPSHOT-src.zip.sha1</li>
+    </ul>
+  </li>
+  <li>移除 .zip, .zip.asc, .zip.md5 和 zip.sha1 文件因为不需要。</li>
+  <li>注意文件名以 <code class="highlighter-rouge">apache-kylin-</code> 开始</li>
+  <li>在源发行版 <code class="highlighter-rouge">.tar.gz</code> 中,检查所有文件是否属于名为 <code class="highlighter-rouge">apache-kylin-X.Y.Z-src</code> 的目录。</li>
+  <li>该目录必须包含 <code class="highlighter-rouge">NOTICE</code>, <code class="highlighter-rouge">LICENSE</code>, <code class="highlighter-rouge">README.md</code> 文件</li>
+  <li>按<a href="https://httpd.apache.org/dev/verification.html">此</a>检查 PGP</li>
+</ul>
+
+<p><strong>运行真实的 release:</strong><br />
+现在真正开始 release</p>
+
+<div class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="c"># Prepare sets the version numbers, creates a tag, and pushes it to git.</span>
+<span class="gp">$ </span>mvn -DskipTests -DreleaseVersion<span class="o">=</span>X.Y.Z -DdevelopmentVersion<span class="o">=(</span>X.Y.Z+1<span class="o">)</span>-SNAPSHOT -Papache-release -Darguments<span class="o">=</span><span class="s2">"-Dgpg.passphrase=</span><span class="k">${</span><span class="nv">GPG_PASSPHRASE</span><span class="k">}</span><span class="s2"> -DskipTests"</span> release:prepare
+
+<span class="c"># Perform checks out the tagged version, builds, and deploys to the staging repository</span>
+<span class="gp">$ </span>mvn -DskipTests -Papache-release -Darguments<span class="o">=</span><span class="s2">"-Dgpg.passphrase=</span><span class="k">${</span><span class="nv">GPG_PASSPHRASE</span><span class="k">}</span><span class="s2"> -DskipTests"</span> release:perform</code></pre></div>
+
+<p><strong>一个失败的 release 尝试后进行清理:</strong></p>
+
+<div class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="c"># Make sure that the tag you are about to generate does not already</span>
+<span class="c"># exist (due to a failed release attempt)</span>
+<span class="gp">$ </span>git tag
+
+<span class="c"># If the tag exists, delete it locally and remotely</span>
+<span class="gp">$ </span>git tag -d kylin-X.Y.Z
+<span class="gp">$ </span>git push origin :refs/tags/kylin-X.Y.Z
+
+<span class="c"># Remove modified files</span>
+<span class="gp">$ </span>mvn release:clean
+
+<span class="c"># Check whether there are modified files and if so, go back to the</span>
+<span class="c"># original git commit</span>
+<span class="gp">$ </span>git status
+<span class="gp">$ </span>git reset --hard HEAD</code></pre></div>
+
+<p><strong>关闭 Nexus 仓库中的阶段性工件:</strong></p>
+
+<ul>
+  <li>输入 <a href="https://repository.apache.org/">https://repository.apache.org/</a> 并登陆</li>
+  <li>在 <code class="highlighter-rouge">Build Promotion</code> 下,点击 <code class="highlighter-rouge">Staging Repositories</code></li>
+  <li>在 <code class="highlighter-rouge">Staging Repositories</code> 选项卡中,应该有一个包含配置文件 <code class="highlighter-rouge">org.apache.kylin</code> 的行</li>
+  <li>浏览工件树并确保存在 .jar,.pom,.asc 文件</li>
+  <li>选中行第一列中的复选框,点击 ‘Close’ 按钮发布仓库到<br />
+<a href="https://repository.apache.org/content/repositories/orgapachekylin-1006">https://repository.apache.org/content/repositories/orgapachekylin-1006</a><br />
+(或相似的 URL)</li>
+</ul>
+
+<p><strong>上传到临时区域:</strong>  <br />
+通过 subversion 将工件上传到临时区域,https://dist.apache.org/repos/dist/dev/kylin/apache-kylin-X.Y.Z-rcN:</p>
+
+<div class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="c"># Create a subversion workspace, if you haven't already</span>
+<span class="gp">$ </span>mkdir -p ~/dist/dev
+<span class="gp">$ </span><span class="nb">pushd</span> ~/dist/dev
+<span class="gp">$ </span>svn co https://dist.apache.org/repos/dist/dev/kylin
+<span class="gp">$ </span><span class="nb">popd</span>
+
+<span class="c">## Move the files into a directory</span>
+<span class="gp">$ </span><span class="nb">cd </span>target
+<span class="gp">$ </span>mkdir ~/dist/dev/kylin/apache-kylin-X.Y.Z-rcN
+<span class="gp">$ </span>mv apache-kylin-<span class="k">*</span> ~/dist/dev/kylin/apache-kylin-X.Y.Z-rcN
+
+<span class="c">## Check in</span>
+<span class="gp">$ </span><span class="nb">cd</span> ~/dist/dev/kylin
+<span class="gp">$ </span>svn add apache-kylin-X.Y.Z-rcN
+<span class="gp">$ </span>svn commit -m <span class="s1">'Upload release artifacts to staging'</span> --username &lt;YOUR_APACHE_ID&gt;</code></pre></div>
+
+<p><strong>一个失败的 release 尝试后进行清理:</strong></p>
+
+<div class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="c"># Make sure that the tag you are about to generate does not already</span>
+<span class="c"># exist (due to a failed release attempt)</span>
+<span class="gp">$ </span>git tag
+
+<span class="c"># If the tag exists, delete it locally and remotely</span>
+<span class="gp">$ </span>git tag -d kylin-X.Y.Z
+<span class="gp">$ </span>git push origin :refs/tags/kylin-X.Y.Z
+
+<span class="c"># Remove modified files</span>
+<span class="gp">$ </span>mvn release:clean
+
+<span class="c"># Check whether there are modified files and if so, go back to the</span>
+<span class="c"># original git commit</span>
+<span class="gp">$ </span>git status
+<span class="gp">$ </span>git reset --hard HEAD</code></pre></div>
+
+<h1 id="release">验证 release</h1>
+
+<div class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="c"># Check unit test</span>
+<span class="gp">$ </span>mvn <span class="nb">test</span>
+
+<span class="c"># Check that the signing key (e.g. 2AD3FAE3) is pushed</span>
+<span class="gp">$ </span>gpg --recv-keys key
+
+<span class="c"># Check keys</span>
+<span class="gp">$ </span>curl -O https://dist.apache.org/repos/dist/release/kylin/KEYS
+
+<span class="c">## Sign/check md5 and sha1 hashes</span>
+ _<span class="o">(</span>Assumes your O/S has <span class="s1">'md5'</span> and <span class="s1">'openssl'</span> commands.<span class="o">)</span>_
+<span class="k">function </span>checkHash<span class="o">()</span> <span class="o">{</span>
+  <span class="nb">cd</span> <span class="s2">"</span><span class="nv">$1</span><span class="s2">"</span>
+  <span class="k">for </span>i <span class="k">in</span> <span class="k">*</span>.<span class="o">{</span>zip,asc<span class="o">}</span>; <span class="k">do
+    if</span> <span class="o">[</span> ! -f <span class="nv">$i</span> <span class="o">]</span>; <span class="k">then
+      continue
+    fi
+    if</span> <span class="o">[</span> -f <span class="nv">$i</span>.md5 <span class="o">]</span>; <span class="k">then
+      if</span> <span class="o">[</span> <span class="s2">"</span><span class="k">$(</span>cat <span class="nv">$i</span>.md5<span class="k">)</span><span class="s2">"</span> <span class="o">=</span> <span class="s2">"</span><span class="k">$(</span>md5 -q <span class="nv">$i</span><span class="k">)</span><span class="s2">"</span> <span class="o">]</span>; <span class="k">then
+        </span><span class="nb">echo</span> <span class="nv">$i</span>.md5 present and correct
+      <span class="k">else
+        </span><span class="nb">echo</span> <span class="nv">$i</span>.md5 does not match
+      <span class="k">fi
+    fi
+    if</span> <span class="o">[</span> -f <span class="nv">$i</span>.sha1 <span class="o">]</span>; <span class="k">then
+      if</span> <span class="o">[</span> <span class="s2">"</span><span class="k">$(</span>cat <span class="nv">$i</span>.sha1<span class="k">)</span><span class="s2">"</span> <span class="o">=</span> <span class="s2">"</span><span class="k">$(</span>openssl sha1 <span class="nv">$i</span> | cut -d <span class="s1">' '</span> -f 2<span class="k">)</span><span class="s2">"</span> <span class="o">]</span>; <span class="k">then
+        </span><span class="nb">echo</span> <span class="nv">$i</span>.sha1 present and correct
+      <span class="k">else
+        </span><span class="nb">echo</span> <span class="nv">$i</span>.sha1 does not match
+      <span class="k">fi
+    fi
+  done</span>
+<span class="o">}</span>;
+<span class="gp">$ </span>checkHash apache-kylin-X.Y.Z-rcN</code></pre></div>
+
+<h2 id="apache-">Apache 投票过程</h2>
+
+<p><strong>在 Apache Kylin dev 邮件列表上投票</strong>  <br />
+在 dev 邮件列表上进行 release 投票,使用由 Maven release plugin 生成的 commit id,其消息看起来像 “[maven-release-plugin] prepare release kylin-x.x.x”:</p>
+
+<div class="highlight"><pre><code class="language-text" data-lang="text">To: dev@kylin.apache.org
+Subject: [VOTE] Release apache-kylin-X.Y.Z (RC[N])
+
+Hi all,
+
+I have created a build for Apache Kylin X.Y.Z, release candidate N.
+
+Changes highlights:
+...
+
+Thanks to everyone who has contributed to this release.
+Here’s release notes:
+https://github.com/apache/kylin/blob/XXX/docs/release_notes.md
+
+The commit to be voted upon:
+
+https://github.com/apache/kylin/commit/xxx
+
+Its hash is xxx.
+
+The artifacts to be voted on are located here:
+https://dist.apache.org/repos/dist/dev/kylin/apache-kylin-X.Y.Z-rcN/
+
+The hashes of the artifacts are as follows:
+src.tar.gz.md5 xxx
+src.tar.gz.sha1 xxx
+
+A staged Maven repository is available for review at:
+https://repository.apache.org/content/repositories/orgapachekylin-XXXX/
+
+Release artifacts are signed with the following key:
+https://people.apache.org/keys/committer/lukehan.asc
+
+Please vote on releasing this package as Apache Kylin X.Y.Z.
+
+The vote is open for the next 72 hours and passes if a majority of
+at least three +1 PPMC votes are cast.
+
+[ ] +1 Release this package as Apache Kylin X.Y.Z
+[ ]  0 I don't feel strongly about it, but I'm okay with the release
+[ ] -1 Do not release this package because...
+
+
+Here is my vote:
+
++1 (binding)</code></pre></div>
+
+<p>投票完成后,发出结果:</p>
+
+<div class="highlight"><pre><code class="language-text" data-lang="text">Subject: [RESULT] [VOTE] Release apache-kylin-X.Y.Z (RC[N])
+To: dev@kylin.apache.org
+
+Thanks to everyone who has tested the release candidate and given
+their comments and votes.
+
+The tally is as follows.
+
+N binding +1s:
+
+N non-binding +1s:
+
+No 0s or -1s.
+
+Therefore I am delighted to announce that the proposal to release
+Apache-Kylin-X.Y.Z has passed.
+
+Luke</code></pre></div>
+
+<h2 id="section-1">发布</h2>
+<p>成功发布投票后,我们需要推动发行到镜像,以及其他任务。</p>
+
+<p>在 JIRA 中,搜索<br />
+<a href="https://issues.apache.org/jira/issues/?jql=project%20%3D%20KYLIN%20">all issues resolved in this release</a>,<br />
+并进行批量更新,将它们的状态更改为“关闭”,<br />
+并加上更改的评论<br />
+“Resolved in release X.Y.Z (YYYY-MM-DD)”<br />
+(填写适当的发布号和日期)。  <br />
+<strong>取消 “Send mail for this update”。</strong></p>
+
+<p>标记 JIRA 系统中发布的版本,<a href="https://issues.apache.org/jira/plugins/servlet/project-config/KYLIN/versions">管理版本</a>。</p>
+
+<p>推广分阶段的 nexus 工件。</p>
+
+<ul>
+  <li>转到 <a href="https://repository.apache.org/">https://repository.apache.org/</a> 并登陆</li>
+  <li>在 “Build Promotion” 下点击 “Staging Repositories”</li>
+  <li>在 “orgapachekylin-xxxx” 行中,选中框</li>
+  <li>点击 “Release” 按钮</li>
+</ul>
+
+<p>将工件检入 svn。</p>
+
+<div class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="c"># Get the release candidate.</span>
+<span class="gp">$ </span>mkdir -p ~/dist/dev
+<span class="gp">$ </span><span class="nb">cd</span> ~/dist/dev
+<span class="gp">$ </span>svn co https://dist.apache.org/repos/dist/dev/kylin
+
+<span class="c"># Copy the artifacts. Note that the copy does not have '-rcN' suffix.</span>
+<span class="gp">$ </span>mkdir -p ~/dist/release
+<span class="gp">$ </span><span class="nb">cd</span> ~/dist/release
+<span class="gp">$ </span>svn co https://dist.apache.org/repos/dist/release/kylin
+<span class="gp">$ </span><span class="nb">cd </span>kylin
+<span class="gp">$ </span>cp -rp ../../dev/kylin/apache-kylin-X.Y.Z-rcN apache-kylin-X.Y.Z
+<span class="gp">$ </span>svn add apache-kylin-X.Y.Z
+
+<span class="c"># Check in.</span>
+svn commit -m <span class="s1">'checkin release artifacts'</span></code></pre></div>
+
+<p>Svnpubsub 将会发布到<br />
+<a href="https://dist.apache.org/repos/dist/release/kylin">https://dist.apache.org/repos/dist/release/kylin</a> 并会在 24 小时内传播到<br />
+<a href="http://www.apache.org/dyn/closer.cgi/kylin">http://www.apache.org/dyn/closer.cgi/kylin</a>。</p>
+
+<p>如果现在有超过 2 个版本,请清除最旧的版本:</p>
+
+<div class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="nb">cd</span> ~/dist/release/kylin
+svn rm apache-kylin-X.Y.Z
+svn commit -m <span class="s1">'Remove old release'</span></code></pre></div>
+
+<p>旧版本将保留在 <a href="http://archive.apache.org/dist/kylin/">release archive</a>.</p>
+
+<p>在 JIRA 中发布相同版本,检查最新发布版本的更改日志。</p>
+
+<h2 id="section-2">构建和上传二进制包</h2>
+<p>发布后,您需要生成二进制包并将它们放入到 VPN 发布库中;</p>
+
+<ul>
+  <li>使用 <code class="highlighter-rouge">git fetch --all --prune --tags</code> 来同步您本地和远程的仓库。</li>
+  <li>Git 检出当前发布的标签;</li>
+  <li>通过参考<a href="howto_package.html">此文档</a>制作二进制包;</li>
+  <li>使用 gpg 对生成的二进制包进行签名,例如:</li>
+</ul>
+
+<div class="highlight"><pre><code class="language-bash" data-lang="bash">gpg --armor --output apache-kylin-1.5.0-bin.tar.gz.asc --detach-sig apache-kylin-1.5.0-bin.tar.gz</code></pre></div>
+
+<ul>
+  <li>生成二进制包的 md5 文件,例如:</li>
+</ul>
+
+<div class="highlight"><pre><code class="language-bash" data-lang="bash">md5sum &lt; apache-kylin-1.5.0-bin.tar.gz &gt; apache-kylin-1.5.0-bin.tar.gz.md5</code></pre></div>
+
+<ul>
+  <li>将二进制包,签名文件和 md5 文件推送到 svn <strong>dev</strong> 仓库,然后运行 <code class="highlighter-rouge">svn mv &lt;files-in-dev&gt; &lt;files-in-release&gt;</code> 命令将他们移动到 svn <strong>release</strong> 仓库。</li>
+  <li>对于不同的 Hadoop/HBase 版本,您可能需要上述步骤;</li>
+  <li>添加文件,然后将更改提交 svn。</li>
+</ul>
+
+<h2 id="section-3">更新源码</h2>
+<p>发布后,您需要手动更新一些源代码:</p>
+
+<ul>
+  <li>更新 <code class="highlighter-rouge">KylinVersion</code> 类,将 <code class="highlighter-rouge">CURRENT_KYLIN_VERSION</code> 的值更改为当前开发版本。</li>
+</ul>
+
+<h2 id="section-4">发布网站</h2>
+<p>更多细节参考<a href="howto_docs.html">如何写文档</a>。</p>
+
+<h2 id="section-5">发送通知邮件到邮件列表</h2>
+<p>发送一个邮件主题如 “[Announce] Apache Kylin x.y.z released” 到以下列表:</p>
+
+<ul>
+  <li>Apache Kylin Dev 邮箱列表: dev@kylin.apache.org</li>
+  <li>Apache Kylin User 邮箱列表: user@kylin.apache.org</li>
+  <li>Apache Announce 邮箱列表: announce@apache.org<br />
+请注意始终使用您的 Apache 邮件地址发送;</li>
+</ul>
+
+<p>这是一个公告电子邮件的样本(通过研究 Kafka):</p>
+
+<div class="highlight"><pre><code class="language-text" data-lang="text">The Apache Kylin team is pleased to announce the immediate availability of the 2.1.0 release. 
+
+This is a major release after 2.0, with more than 100 bug fixes and enhancements; All of the changes in this release can be found in:
+https://kylin.apache.org/docs21/release_notes.html
+
+You can download the source release and binary packages from Apache Kylin's download page: https://kylin.apache.org/download/
+
+Apache Kylin is an open source Distributed Analytics Engine designed to provide SQL interface and multi-dimensional analysis (OLAP) on Apache Hadoop, supporting extremely large datasets.
+
+Apache Kylin lets you query massive data set at sub-second latency in 3 steps:
+1. Identify a star schema or snowflake schema data set on Hadoop.
+2. Build Cube on Hadoop.
+3. Query data with ANSI-SQL and get results in sub-second, via ODBC, JDBC or RESTful API.
+
+Thanks everyone who have contributed to the 2.1.0 release.
+
+We welcome your help and feedback. For more information on how to
+report problems, and to get involved, visit the project website at
+https://kylin.apache.org/</code></pre></div>
+
+<h1 id="section-6">感谢</h1>
+<p>本指南起草于 <a href="http://calcite.apache.org">Apache Calcite</a> Howto doc 的参考资料,非常感谢。</p>
+
+
+							</article>
+						</div>
+					</div>
+				</div>
+				<!--
+* 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.
+-->
+
+<div class="col-md-4 col-lg-4 col-xs-12 col-sm-12 aside1 visible-sm visible-xs visible-md visible-lg" id="nside1" style=" margin-top: 5em;float:right;">
+    <ul class="nav nav-pills nav-stacked">
+    
+    <li><a href="#title开发指南" data-toggle="collapse" class="navtitle">开发指南</a></li>
+    <div class="collapse in">
+  	<div class="list-group" id="list1">
+    <ul>
+    
+
+
+
+
+   
+  
+
+  
+    
+  
+
+
+
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+      <li class="navlist">
+        <a href="/cn/development/index.html" class="list-group-item-lay pjaxlink">开发快速指南</a></li>      
+      
+
+
+   
+  
+
+  
+    
+  
+
+
+
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+      <li class="navlist">
+        <a href="/cn/development/dev_env.html" class="list-group-item-lay pjaxlink">搭建开发环境</a></li>      
+      
+
+
+   
+  
+
+  
+    
+  
+
+
+
+  
+    
+  
+    
+  
+    
+      <li class="navlist">
+        <a href="/cn/development/coding_naming_convention.html" class="list-group-item-lay pjaxlink">编码和命名惯例</a></li>      
+      
+
+
+   
+  
+
+  
+    
+  
+
+
+
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+      <li class="navlist">
+        <a href="/cn/development/howto_test.html" class="list-group-item-lay pjaxlink">如何测试</a></li>      
+      
+
+
+   
+  
+
+  
+    
+  
+
+
+
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+      <li class="navlist">
+        <a href="/cn/development/howto_contribute.html" class="list-group-item-lay pjaxlink">如何贡献</a></li>      
+      
+
+
+   
+  
+
+  
+    
+  
+
+
+
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+      <li class="navlist">
+        <a href="/cn/development/howto_docs.html" class="list-group-item-lay pjaxlink">如何写文档</a></li>      
+      
+
+
+   
+  
+
+  
+    
+  
+
+
+
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+      <li class="navlist">
+        <a href="/cn/development/howto_package.html" class="list-group-item-lay pjaxlink">如何打二进制包</a></li>      
+      
+
+
+   
+  
+
+  
+    
+  
+
+
+
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+      <li class="navlist">
+        <a href="/cn/development/howto_hbase_branches.html" class="list-group-item-lay pjaxlink">如何维护 HBase 分支</a></li>      
+      
+
+
+   
+  
+
+  
+    
+  
+
+
+
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+      <li class="navlist">
+        <a href="/cn/development/howto_release.html" class="list-group-item-lay pjaxlink">如何发布</a></li>      
+      
+
+
+   
+  
+
+  
+    
+  
+
+
+
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+      <li class="navlist">
+        <a href="/cn/development/plugin_arch.html" class="list-group-item-lay pjaxlink">插件架构</a></li>      
+      
+
+
+   
+  
+
+  
+    
+  
+
+
+
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+      <li class="navlist">
+        <a href="/cn/development/new_metadata.html" class="list-group-item-lay pjaxlink">新的元数据模型</a></li>      
+      
+
+
+   
+  
+
+  
+    
+  
+
+
+
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+      <li class="navlist">
+        <a href="/cn/development/web_tech.html" class="list-group-item-lay pjaxlink">Kylin Web 摘要</a></li>      
+      
+
+
+   
+  
+
+  
+    
+  
+
+
+
+  
+    
+      <li class="navlist">
+        <a href="/cn/development/about_temp_files.html" class="list-group-item-lay pjaxlink">关于临时文件</a></li>      
+      
+
+
+
+
+
+        <ul>
+  </div>
+</div>
+    
+
+    </ul>
+</div>
+			</div>
+		</div>		
+		<!--
+* 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.
+-->
+
+<footer id="underfooter">
+    <div>
+        <div class="row">
+            <div class="col-md-12 widget">
+                <div class="widget-body">
+                    <div class="footer-img">
+                        <a href="http://www.apache.org">
+                            <img id="asf-logo" height="78px" alt="Apache Software Foundation" src="/assets/images/apache_footer.png">
+                        </a>
+                    </div>
+                    <p style="padding-top: 11px;">
+                        The contents of this website are © 2015 Apache Software Foundation under the terms of the 
+                        <a href="http://www.apache.org/licenses/LICENSE-2.0"> Apache License v2 </a>. 
+                    </p>
+                    <p style="margin-bottom: 11px;">    
+                        Apache Kylin and its logo are trademarks of the Apache Software Foundation.
+                    </div>
+
+                </div>
+            </div>
+        </div>
+        <!-- /row of widgets -->
+
+    </div>
+    <div></div>
+
+</footer>
+
+	<script src="/assets/js/jquery-1.9.1.min.js"></script> 
+	<script src="/assets/js/bootstrap.min.js"></script> 
+	<script src="/assets/js/main.js"></script>
+	</body>
+</html>

Added: kylin/site/cn/development/howto_test.html
URL: http://svn.apache.org/viewvc/kylin/site/cn/development/howto_test.html?rev=1838640&view=auto
==============================================================================
--- kylin/site/cn/development/howto_test.html (added)
+++ kylin/site/cn/development/howto_test.html Wed Aug 22 14:10:06 2018
@@ -0,0 +1,835 @@
+<!--
+* 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>
+	<!--
+* 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.
+-->
+
+<head>
+  <meta charset="utf-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <meta name="viewport" content="width=device-width, initial-scale=1">
+
+  <title>Apache Kylin | 如何测试</title>
+  <meta name="description" content="Apache Kylin Home">
+  <meta name="author"      content="Apache Kylin">
+  <link rel="shortcut icon" href="fav.png" type="image/png">
+
+
+
+<link rel="stylesheet" href="/assets/css/animate.css">
+<!-- Bootstrap -->
+<link rel="stylesheet" href="/assets/css/bootstrap.min.css">
+
+<!-- Fonts -->
+<!-- <link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Alice|Open+Sans:400,300,700"> -->
+
+<!-- Icons -->
+<link rel="stylesheet" href="/assets/css/font-awesome.min.css">
+
+  <!-- Custom styles -->
+  <link rel="stylesheet" href="/assets/css/styles.css">
+  <link rel="stylesheet" href="/assets/css/docs.css">
+
+  <link rel="canonical" href="http://kylin.apache.org/cn/development/howto_test.html">
+  <link rel="alternate" type="application/rss+xml" title="Apache Kylin" href="http://kylin.apache.org/feed.xml" />
+
+<!--[if lt IE 9]> <script src="assets/js/html5shiv.js"></script> <![endif]-->
+<!-- Global site tag (gtag.js) - Google Analytics -->
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-120788561-1"></script>
+<script>
+  window.dataLayer = window.dataLayer || [];
+  function gtag(){dataLayer.push(arguments);}
+  gtag('js', new Date());
+
+  gtag('config', 'UA-120788561-1');
+</script>
+<script type="text/javascript" src="/assets/js/jquery-1.9.1.min.js"></script>
+<script type="text/javascript" src="/assets/js/nside.js"></script> </script>
+<script type="text/javascript" src="/assets/js/nnav.js"></script> </script>
+<script>
+var _hmt = _hmt || [];
+(function() {
+  var hm = document.createElement("script");
+  hm.src = "https://hm.baidu.com/hm.js?bdc5e03add430c0b72cc0eb91eabfa99";
+  var s = document.getElementsByTagName("script")[0]; 
+  s.parentNode.insertBefore(hm, s);
+})();
+</script>
+</head>
+
+	<body>
+		<!--
+* 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.
+-->
+
+<header id="header" >
+  <!-- Main Menu -->
+  <nav class="navbar navbar-default" role="navigation" id="nav-wrapper">
+    <div class="container-fluid" id="nav">
+      <!-- Brand and toggle get grouped for better mobile display -->
+      <div class="navbar-header">
+        <img class="navbar-logo" width="46" src="/assets/images/kylin_logo.png "></img> 
+        
+        <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
+          <span class="sr-only">Toggle navigation</span>
+          <span class="icon-bar"></span>
+          <span class="icon-bar"></span>
+          <span class="icon-bar"></span>
+        </button>
+        <ul class="nav icon-navbar">
+            <li><a href="https://twitter.com/apachekylin" target="_blank" class="fa fa-twitter fa-lg"  title="Twitter: @ApacheKylin" ></a></li>
+            <li><a href="https://github.com/apache/kylin" target="_blank" class="fa fa-github-alt fa-lg" title="Github: apache/kylin" ></a></li>          
+            <li><a href="https://www.facebook.com/kylinio" target="_blank" class="fa fa-facebook fa-lg" title="Facebook: kylin.io" ></a></li>    
+        </ul>
+      </div>
+
+      <!-- Collect the nav links, forms, and other content for toggling -->
+      <div class="navbar-collapse" id="bs-example-navbar-collapse-1">
+        <ul class="nav navbar-nav">
+            <li><a href="/cn">首页</a></li>
+            <li><a href="/cn/docs" >文档</a></li>
+            <li><a href="/cn/download">下载</a></li>
+            <li><a href="/cn/community" >社区</a></li>
+            <li><a href="/cn/development" >开发</a></li>
+            <li><a href="/blog">博客</a></li>
+            <li><a href="/" >English</a></li>           
+        </ul>
+        
+
+      </div><!-- /.navbar-collapse -->
+    </div><!-- /.container-fluid -->
+  </nav>
+
+  <div id="head" class="parallax normal-header" >
+    <div class="text-center header-apache">
+      <a href="http://apache.org/foundation/contributing.html" title="Support Apache" style="margin-left: 150px;">
+        <div>
+          <img src="https://www.apache.org/images/SupportApache-small.png">
+        </div>
+      </a>
+    </div>  
+  </div>
+
+ </header>
+
+		
+		<div class="container">
+			<div class="row"  style="clear:both;">
+				
+				<div class="col-md-8 col-lg-8 col-xs-12 col-sm-12 aside2" style="float: right;">
+					<div id="container" class="docs">
+						<div id="pjax">
+							<h1 class="post-title">如何测试</h1>
+							<article class="post-content" >
+							<p>一般来说,应该有单元测试来涵盖个别 classes;必须有集成测试来涵盖端到端的场景,如构建,合并和查询。单元测试必须独立运行(不需要外部沙箱)。</p>
+
+<h2 id="v15-">测试 v1.5 及以上</h2>
+
+<ul>
+  <li><code class="highlighter-rouge">mvn clean test</code> 运行单元测试,它的测试覆盖范围有限。
+    <ul>
+      <li>单元测试没有额外的依赖且能在任何机器上运行</li>
+      <li>单元测试不覆盖端到端的场景,如构建,合并和查询。</li>
+      <li>单元测试只需几分钟即可完成。</li>
+    </ul>
+  </li>
+  <li><code class="highlighter-rouge">dev-support/test_all_against_hdp_2_4_0_0_169.sh</code> 运行集成测试,有很好的覆盖率。
+    <ul>
+      <li>集成测试 <strong>最好运行在 Hadoop 沙箱上</strong>。我们建议您在沙箱中检出一个代码副本,并在其中直接运行 test_all_against_hdp_2_2_4_2_2.sh。如果您不想在沙箱上添加代码,请参阅 <strong>更多关于 V1.5+ UT/IT 分离</strong> 的内容。</li>
+      <li>正如名称所示,脚本仅适用于 HDP 2.4.0.0-169.2,但您可以从中理解集成测试是如何运行的。</li>
+      <li>集成测试从生成随机数据开始,然后构建 Cube、合并 Cube,最后查询结果并与 H2 引擎进行比较。</li>
+      <li>集成测试需要一到两个小时才能完成。</li>
+    </ul>
+  </li>
+  <li><code class="highlighter-rouge">nohup dev-support/test_all_against_hdp_2_4_0_0_169.sh &lt; /dev/null 2&gt;&amp;1 &gt; nohup.out &amp;</code> 以无人值守的方式运行集成测试。</li>
+</ul>
+
+<h2 id="v15-utit-">更多关于 V1.5 UT/IT 分离</h2>
+
+<p>运行 <code class="highlighter-rouge">mvn verify -Dhdp.version=2.4.0.0-169</code> (假定您运行在 HDP 2.4 沙箱上) 是运行完整的所有测试套件所需的全部内容。</p>
+
+<p>它将按顺序执行以下步骤:</p>
+
+<div class="highlighter-rouge"><pre class="highlight"><code>1. Build Artifacts 
+2. Run all UTs (takes few minutes) 
+3. Provision Cubes on the sandbox environment for IT uasge (takes 1~2 hours) 
+4. Run all ITs (takes few tens of minutes) 
+5. Verify jar stuff 
+</code></pre>
+</div>
+
+<p>如果您的代码改动很小那么只需要运行 UT,使用: <br />
+<code class="highlighter-rouge">mvn test</code><br />
+如果您的沙箱已经配置,并且您的代码更改不会影响沙箱配置的结果,(并且您不想等待数小时的配置),只需运行以下命令来单独运行 UT 和 IT: <br />
+<code class="highlighter-rouge">mvn test</code><br />
+<code class="highlighter-rouge">mvn failsafe:integration-test</code></p>
+
+<h3 id="cube-">Cube 配置</h3>
+
+<p>测试用的 cube 配置确实会运行 kylin cube 作业,以在沙箱中准备样例 cube。这些准备好的 cubes 将会被集成测试使用,当前准备步骤与 maven 预集成测试阶段绑定,且其包含运行 BuildCubeWithEngine(需要 HBase),BuildCubeWithStream(需要 Kafka)。您可以在沙箱或进行开发的计算机中运行 mvn 命令。对于后者情况您需要在 <strong>$KYLIN_HOME/examples/test_case_data/sandbox/kylin.properties</strong> 中设置 kylin.job.use-remote-cli=true。<br />
+尝试将 <code class="highlighter-rouge">-DfastBuildMode=true</code> 附加到 mvn verify 命令,通过跳过增量 Cubing 来加速配置。</p>
+
+
+							</article>
+						</div>
+					</div>
+				</div>
+				<!--
+* 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.
+-->
+
+<div class="col-md-4 col-lg-4 col-xs-12 col-sm-12 aside1 visible-sm visible-xs visible-md visible-lg" id="nside1" style=" margin-top: 5em;float:right;">
+    <ul class="nav nav-pills nav-stacked">
+    
+    <li><a href="#title开发指南" data-toggle="collapse" class="navtitle">开发指南</a></li>
+    <div class="collapse in">
+  	<div class="list-group" id="list1">
+    <ul>
+    
+
+
+
+
+   
+  
+
+  
+    
+  
+
+
+
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+      <li class="navlist">
+        <a href="/cn/development/index.html" class="list-group-item-lay pjaxlink">开发快速指南</a></li>      
+      
+
+
+   
+  
+
+  
+    
+  
+
+
+
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+      <li class="navlist">
+        <a href="/cn/development/dev_env.html" class="list-group-item-lay pjaxlink">搭建开发环境</a></li>      
+      
+
+
+   
+  
+
+  
+    
+  
+
+
+
+  
+    
+  
+    
+  
+    
+      <li class="navlist">
+        <a href="/cn/development/coding_naming_convention.html" class="list-group-item-lay pjaxlink">编码和命名惯例</a></li>      
+      
+
+
+   
+  
+
+  
+    
+  
+
+
+
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+      <li class="navlist">
+        <a href="/cn/development/howto_test.html" class="list-group-item-lay pjaxlink">如何测试</a></li>      
+      
+
+
+   
+  
+
+  
+    
+  
+
+
+
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+      <li class="navlist">
+        <a href="/cn/development/howto_contribute.html" class="list-group-item-lay pjaxlink">如何贡献</a></li>      
+      
+
+
+   
+  
+
+  
+    
+  
+
+
+
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+      <li class="navlist">
+        <a href="/cn/development/howto_docs.html" class="list-group-item-lay pjaxlink">如何写文档</a></li>      
+      
+
+
+   
+  
+
+  
+    
+  
+
+
+
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+      <li class="navlist">
+        <a href="/cn/development/howto_package.html" class="list-group-item-lay pjaxlink">如何打二进制包</a></li>      
+      
+
+
+   
+  
+
+  
+    
+  
+
+
+
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+      <li class="navlist">
+        <a href="/cn/development/howto_hbase_branches.html" class="list-group-item-lay pjaxlink">如何维护 HBase 分支</a></li>      
+      
+
+
+   
+  
+
+  
+    
+  
+
+
+
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+      <li class="navlist">
+        <a href="/cn/development/howto_release.html" class="list-group-item-lay pjaxlink">如何发布</a></li>      
+      
+
+
+   
+  
+
+  
+    
+  
+
+
+
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+      <li class="navlist">
+        <a href="/cn/development/plugin_arch.html" class="list-group-item-lay pjaxlink">插件架构</a></li>      
+      
+
+
+   
+  
+
+  
+    
+  
+
+
+
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+      <li class="navlist">
+        <a href="/cn/development/new_metadata.html" class="list-group-item-lay pjaxlink">新的元数据模型</a></li>      
+      
+
+
+   
+  
+
+  
+    
+  
+
+
+
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+      <li class="navlist">
+        <a href="/cn/development/web_tech.html" class="list-group-item-lay pjaxlink">Kylin Web 摘要</a></li>      
+      
+
+
+   
+  
+
+  
+    
+  
+
+
+
+  
+    
+      <li class="navlist">
+        <a href="/cn/development/about_temp_files.html" class="list-group-item-lay pjaxlink">关于临时文件</a></li>      
+      
+
+
+
+
+
+        <ul>
+  </div>
+</div>
+    
+
+    </ul>
+</div>
+			</div>
+		</div>		
+		<!--
+* 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.
+-->
+
+<footer id="underfooter">
+    <div>
+        <div class="row">
+            <div class="col-md-12 widget">
+                <div class="widget-body">
+                    <div class="footer-img">
+                        <a href="http://www.apache.org">
+                            <img id="asf-logo" height="78px" alt="Apache Software Foundation" src="/assets/images/apache_footer.png">
+                        </a>
+                    </div>
+                    <p style="padding-top: 11px;">
+                        The contents of this website are © 2015 Apache Software Foundation under the terms of the 
+                        <a href="http://www.apache.org/licenses/LICENSE-2.0"> Apache License v2 </a>. 
+                    </p>
+                    <p style="margin-bottom: 11px;">    
+                        Apache Kylin and its logo are trademarks of the Apache Software Foundation.
+                    </div>
+
+                </div>
+            </div>
+        </div>
+        <!-- /row of widgets -->
+
+    </div>
+    <div></div>
+
+</footer>
+
+	<script src="/assets/js/jquery-1.9.1.min.js"></script> 
+	<script src="/assets/js/bootstrap.min.js"></script> 
+	<script src="/assets/js/main.js"></script>
+	</body>
+</html>

Added: kylin/site/cn/development/index.html
URL: http://svn.apache.org/viewvc/kylin/site/cn/development/index.html?rev=1838640&view=auto
==============================================================================
--- kylin/site/cn/development/index.html (added)
+++ kylin/site/cn/development/index.html Wed Aug 22 14:10:06 2018
@@ -0,0 +1,818 @@
+<!--
+* 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>
+	<!--
+* 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.
+-->
+
+<head>
+  <meta charset="utf-8">
+  <meta http-equiv="X-UA-Compatible" content="IE=edge">
+  <meta name="viewport" content="width=device-width, initial-scale=1">
+
+  <title>Apache Kylin | 开发快速指南</title>
+  <meta name="description" content="Apache Kylin Home">
+  <meta name="author"      content="Apache Kylin">
+  <link rel="shortcut icon" href="fav.png" type="image/png">
+
+
+
+<link rel="stylesheet" href="/assets/css/animate.css">
+<!-- Bootstrap -->
+<link rel="stylesheet" href="/assets/css/bootstrap.min.css">
+
+<!-- Fonts -->
+<!-- <link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Alice|Open+Sans:400,300,700"> -->
+
+<!-- Icons -->
+<link rel="stylesheet" href="/assets/css/font-awesome.min.css">
+
+  <!-- Custom styles -->
+  <link rel="stylesheet" href="/assets/css/styles.css">
+  <link rel="stylesheet" href="/assets/css/docs.css">
+
+  <link rel="canonical" href="http://kylin.apache.org/cn/development/">
+  <link rel="alternate" type="application/rss+xml" title="Apache Kylin" href="http://kylin.apache.org/feed.xml" />
+
+<!--[if lt IE 9]> <script src="assets/js/html5shiv.js"></script> <![endif]-->
+<!-- Global site tag (gtag.js) - Google Analytics -->
+<script async src="https://www.googletagmanager.com/gtag/js?id=UA-120788561-1"></script>
+<script>
+  window.dataLayer = window.dataLayer || [];
+  function gtag(){dataLayer.push(arguments);}
+  gtag('js', new Date());
+
+  gtag('config', 'UA-120788561-1');
+</script>
+<script type="text/javascript" src="/assets/js/jquery-1.9.1.min.js"></script>
+<script type="text/javascript" src="/assets/js/nside.js"></script> </script>
+<script type="text/javascript" src="/assets/js/nnav.js"></script> </script>
+<script>
+var _hmt = _hmt || [];
+(function() {
+  var hm = document.createElement("script");
+  hm.src = "https://hm.baidu.com/hm.js?bdc5e03add430c0b72cc0eb91eabfa99";
+  var s = document.getElementsByTagName("script")[0]; 
+  s.parentNode.insertBefore(hm, s);
+})();
+</script>
+</head>
+
+	<body>
+		<!--
+* 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.
+-->
+
+<header id="header" >
+  <!-- Main Menu -->
+  <nav class="navbar navbar-default" role="navigation" id="nav-wrapper">
+    <div class="container-fluid" id="nav">
+      <!-- Brand and toggle get grouped for better mobile display -->
+      <div class="navbar-header">
+        <img class="navbar-logo" width="46" src="/assets/images/kylin_logo.png "></img> 
+        
+        <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
+          <span class="sr-only">Toggle navigation</span>
+          <span class="icon-bar"></span>
+          <span class="icon-bar"></span>
+          <span class="icon-bar"></span>
+        </button>
+        <ul class="nav icon-navbar">
+            <li><a href="https://twitter.com/apachekylin" target="_blank" class="fa fa-twitter fa-lg"  title="Twitter: @ApacheKylin" ></a></li>
+            <li><a href="https://github.com/apache/kylin" target="_blank" class="fa fa-github-alt fa-lg" title="Github: apache/kylin" ></a></li>          
+            <li><a href="https://www.facebook.com/kylinio" target="_blank" class="fa fa-facebook fa-lg" title="Facebook: kylin.io" ></a></li>    
+        </ul>
+      </div>
+
+      <!-- Collect the nav links, forms, and other content for toggling -->
+      <div class="navbar-collapse" id="bs-example-navbar-collapse-1">
+        <ul class="nav navbar-nav">
+            <li><a href="/cn">首页</a></li>
+            <li><a href="/cn/docs" >文档</a></li>
+            <li><a href="/cn/download">下载</a></li>
+            <li><a href="/cn/community" >社区</a></li>
+            <li><a href="/cn/development" >开发</a></li>
+            <li><a href="/blog">博客</a></li>
+            <li><a href="/" >English</a></li>           
+        </ul>
+        
+
+      </div><!-- /.navbar-collapse -->
+    </div><!-- /.container-fluid -->
+  </nav>
+
+  <div id="head" class="parallax normal-header" >
+    <div class="text-center header-apache">
+      <a href="http://apache.org/foundation/contributing.html" title="Support Apache" style="margin-left: 150px;">
+        <div>
+          <img src="https://www.apache.org/images/SupportApache-small.png">
+        </div>
+      </a>
+    </div>  
+  </div>
+
+ </header>
+
+		
+		<div class="container">
+			<div class="row"  style="clear:both;">
+				
+				<div class="col-md-8 col-lg-8 col-xs-12 col-sm-12 aside2" style="float: right;">
+					<div id="container" class="docs">
+						<div id="pjax">
+							<h1 class="post-title">开发快速指南</h1>
+							<article class="post-content" >
+							<p>Apache Kylin 一直寻求的不只是代码的贡献,还寻求使用文档,性能报告,问答等方面的贡献。所有类型的贡献都为成为 Kylin Committer 铺平了道路。每个人都有机会,尤其是那些有分析和解决方案背景的,因为缺少来自于用户和解决方案视角的内容。</p>
+
+<h3 id="section">如何贡献</h3>
+<p>查看<a href="/cn/development/howto_contribute.html">如何贡献</a>文档。</p>
+
+<h3 id="section-1">源仓库</h3>
+<p>Apache Kylin™ 源码使用 Git version control 进行版本控制:<br />
+Commits <a href="https://github.com/apache/kylin/commits/master">总结</a>  <br />
+源仓库:<a href="https://github.com/apache/kylin">https://github.com/apache/kylin </a>  <br />
+Gitbox 的镜像:<a href="https://gitbox.apache.org/repos/asf?p=kylin.git">https://gitbox.apache.org/repos/asf?p=kylin.git </a></p>
+
+<h3 id="ci-">CI 和代码分析</h3>
+<p>使用 JDK 1.7(过时)的 master 分支上的 UT:<a href="https://builds.apache.org/job/Kylin-Master-JDK-1.7/">Kylin-Master-JDK-1.7</a> <br />
+使用 JDK 1.8 的 master 分支上的 UT:<a href="https://builds.apache.org/job/Kylin-Master-JDK-1.8/">Kylin-Master-JDK-1.8</a> <br />
+静态代码分析:<a href="https://builds.apache.org/analysis/overview?id=org.apache.kylin%3Akylin">SonarCube dashboard</a></p>
+
+<p><a href="https://travis-ci.org/apache/kylin"><img src="https://travis-ci.org/apache/kylin.svg?branch=master" alt="Build Status" /></a><a href="https://www.codacy.com/app/kyligence-git/kylin?utm_source=github.com&amp;utm_medium=referral&amp;utm_content=apache/kylin&amp;utm_campaign=Badge_Grade"><img src="https://api.codacy.com/project/badge/Grade/74f0139786cd4e8a8ce69bb0c17c2e71" alt="Codacy Badge" /></a><br />
+<a href="https://sonarcloud.io/dashboard/index/org.apache.kylin%3Akylin"><img src="https://sonarcloud.io/api/badges/gate?key=org.apache.kylin%3Akylin" alt="Quality Gate" /></a><a href="https://sonarcloud.io/component_measures/metric/coverage/list?id=org.apache.kylin%3Akylin"><img src="https://sonarcloud.io/api/badges/measure?key=org.apache.kylin%3Akylin&amp;metric=coverage" alt="SonarCloud Coverage" /></a><a href="https://sonarcloud.io/component_measures/metric/reliability_rating/list?id=org.apache.kylin%3Akylin"><img src="https://sonarcloud.io/api/badges/measure?key=org.apache.kylin%3Akylin&amp;metric=bugs" alt="SonarCloud Bugs" /></a><a href="https://sonarcloud.io/component_measures/metric/security_rating/list?id=org.apache.kylin%3Akylin"><img src="https://sonarcloud.io/api/badges/measure?key=org.apache.kylin%3Akylin&amp;metric=vulnerabilities" alt="SonarCloud Vulnerabilities" /></a></p>
+
+<h3 id="issue-">Issue 追踪</h3>
+<p>在 Apache JIRA 上的 “Kylin” 项目追踪 issues(<a href="http://issues.apache.org/jira/browse/KYLIN">浏览</a>)。</p>
+
+<h3 id="section-2">路线图</h3>
+<ul>
+  <li>支持 Hadoop 3.0(纠偏编码)</li>
+  <li>完全使用 Spark 的 Cube 引擎</li>
+  <li>接入更多的源(MySQL,Oracle,Spark SQL 等)</li>
+  <li>无需构建 Cube 的即席查询</li>
+  <li>更好的存储引擎(Druid,Kudu,等)</li>
+  <li>支持实时数据分析的 Lambda 架构</li>
+</ul>
+
+							</article>
+						</div>
+					</div>
+				</div>
+				<!--
+* 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.
+-->
+
+<div class="col-md-4 col-lg-4 col-xs-12 col-sm-12 aside1 visible-sm visible-xs visible-md visible-lg" id="nside1" style=" margin-top: 5em;float:right;">
+    <ul class="nav nav-pills nav-stacked">
+    
+    <li><a href="#title开发指南" data-toggle="collapse" class="navtitle">开发指南</a></li>
+    <div class="collapse in">
+  	<div class="list-group" id="list1">
+    <ul>
+    
+
+
+
+
+   
+  
+
+  
+    
+  
+
+
+
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+      <li class="navlist">
+        <a href="/cn/development/index.html" class="list-group-item-lay pjaxlink">开发快速指南</a></li>      
+      
+
+
+   
+  
+
+  
+    
+  
+
+
+
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+      <li class="navlist">
+        <a href="/cn/development/dev_env.html" class="list-group-item-lay pjaxlink">搭建开发环境</a></li>      
+      
+
+
+   
+  
+
+  
+    
+  
+
+
+
+  
+    
+  
+    
+  
+    
+      <li class="navlist">
+        <a href="/cn/development/coding_naming_convention.html" class="list-group-item-lay pjaxlink">编码和命名惯例</a></li>      
+      
+
+
+   
+  
+
+  
+    
+  
+
+
+
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+      <li class="navlist">
+        <a href="/cn/development/howto_test.html" class="list-group-item-lay pjaxlink">如何测试</a></li>      
+      
+
+
+   
+  
+
+  
+    
+  
+
+
+
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+      <li class="navlist">
+        <a href="/cn/development/howto_contribute.html" class="list-group-item-lay pjaxlink">如何贡献</a></li>      
+      
+
+
+   
+  
+
+  
+    
+  
+
+
+
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+      <li class="navlist">
+        <a href="/cn/development/howto_docs.html" class="list-group-item-lay pjaxlink">如何写文档</a></li>      
+      
+
+
+   
+  
+
+  
+    
+  
+
+
+
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+      <li class="navlist">
+        <a href="/cn/development/howto_package.html" class="list-group-item-lay pjaxlink">如何打二进制包</a></li>      
+      
+
+
+   
+  
+
+  
+    
+  
+
+
+
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+      <li class="navlist">
+        <a href="/cn/development/howto_hbase_branches.html" class="list-group-item-lay pjaxlink">如何维护 HBase 分支</a></li>      
+      
+
+
+   
+  
+
+  
+    
+  
+
+
+
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+      <li class="navlist">
+        <a href="/cn/development/howto_release.html" class="list-group-item-lay pjaxlink">如何发布</a></li>      
+      
+
+
+   
+  
+
+  
+    
+  
+
+
+
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+      <li class="navlist">
+        <a href="/cn/development/plugin_arch.html" class="list-group-item-lay pjaxlink">插件架构</a></li>      
+      
+
+
+   
+  
+
+  
+    
+  
+
+
+
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+      <li class="navlist">
+        <a href="/cn/development/new_metadata.html" class="list-group-item-lay pjaxlink">新的元数据模型</a></li>      
+      
+
+
+   
+  
+
+  
+    
+  
+
+
+
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+  
+    
+      <li class="navlist">
+        <a href="/cn/development/web_tech.html" class="list-group-item-lay pjaxlink">Kylin Web 摘要</a></li>      
+      
+
+
+   
+  
+
+  
+    
+  
+
+
+
+  
+    
+      <li class="navlist">
+        <a href="/cn/development/about_temp_files.html" class="list-group-item-lay pjaxlink">关于临时文件</a></li>      
+      
+
+
+
+
+
+        <ul>
+  </div>
+</div>
+    
+
+    </ul>
+</div>
+			</div>
+		</div>		
+		<!--
+* 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.
+-->
+
+<footer id="underfooter">
+    <div>
+        <div class="row">
+            <div class="col-md-12 widget">
+                <div class="widget-body">
+                    <div class="footer-img">
+                        <a href="http://www.apache.org">
+                            <img id="asf-logo" height="78px" alt="Apache Software Foundation" src="/assets/images/apache_footer.png">
+                        </a>
+                    </div>
+                    <p style="padding-top: 11px;">
+                        The contents of this website are © 2015 Apache Software Foundation under the terms of the 
+                        <a href="http://www.apache.org/licenses/LICENSE-2.0"> Apache License v2 </a>. 
+                    </p>
+                    <p style="margin-bottom: 11px;">    
+                        Apache Kylin and its logo are trademarks of the Apache Software Foundation.
+                    </div>
+
+                </div>
+            </div>
+        </div>
+        <!-- /row of widgets -->
+
+    </div>
+    <div></div>
+
+</footer>
+
+	<script src="/assets/js/jquery-1.9.1.min.js"></script> 
+	<script src="/assets/js/bootstrap.min.js"></script> 
+	<script src="/assets/js/main.js"></script>
+	</body>
+</html>