Added: kylin/site/development40/howto_release.html URL: http://svn.apache.org/viewvc/kylin/site/development40/howto_release.html?rev=1891303&view=auto ============================================================================== --- kylin/site/development40/howto_release.html (added) +++ kylin/site/development40/howto_release.html Tue Jul 6 07:50:56 2021 @@ -0,0 +1,10004 @@ +<!-- +* 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 | How to Make Release</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="stylesheet" href="/assets/css/pygments.css"> + + <link rel="canonical" href="http://kylin.apache.org/development40/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"> + <!-- + <img class="img-circle" width="40px" height="40px" id="circlelogo" src="/assets/images/kylin_logo.jpg"> + --> + <!-- 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 collapse" id="bs-example-navbar-collapse-1"> + + <ul class="nav navbar-nav"> + + <li><a href="/">Home</a></li> + <li> + <a href="/docs">Docs</a> +<!-- + <a href="#" class="dropdown-toggle" data-toggle="dropdown">Docs</a> + <ul class="dropdown-menu"> + + <li class="dropdown-submenu"><a href="#titleGetting Started" data-toggle="collapse" class="navtitle">Getting Started</a> + <ul class="dropdown-menu"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li class="navlist"> + <a href="/docs/index.html" class="list-group-item-lay pjaxlink">Overview</a> + </li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li class="navlist"> + <a href="/docs/release_notes.html" class="list-group-item-lay pjaxlink">Release Notes</a> + </li> + + + + + + + + + + + + + + + + + + <li class="navlist"> + <a href="/docs/gettingstarted/concepts.html" class="list-group-item-lay pjaxlink">Technical Concepts</a> + </li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li class="navlist"> + <a href="/docs/gettingstarted/terminology.html" class="list-group-item-lay pjaxlink">Terminology</a> + </li> + + + + + + + + + + + + + + + + + + + + + + + + <li class="navlist"> + <a href="/docs/gettingstarted/faq.html" class="list-group-item-lay pjaxlink">FAQ</a> + </li> + + + + + + + + + + + + + + + + + + + + <li class="navlist"> + <a href="/docs/gettingstarted/events.html" class="list-group-item-lay pjaxlink">Events and Conferences</a> + </li> + + + + + + + + + + + + + + + + <li class="navlist"> + <a href="/docs/gettingstarted/best_practices.html" class="list-group-item-lay pjaxlink">Community Best Practices</a> + </li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li class="navlist"> + <a href="/docs/gettingstarted/kylin-quickstart.html" class="list-group-item-lay pjaxlink">Quick Start</a> + </li> + + + + + + + + + <ul> + </li> + + <li class="dropdown-submenu"><a href="#titleInstallation" data-toggle="collapse" class="navtitle">Installation</a> + <ul class="dropdown-menu"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li class="navlist"> + <a href="/docs/install/index.html" class="list-group-item-lay pjaxlink">Installation Guide</a> + </li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li class="navlist"> + <a href="/docs/install/kylin_cluster.html" class="list-group-item-lay pjaxlink">Deploy in Cluster Mode</a> + </li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li class="navlist"> + <a href="/docs/install/configuration.html" class="list-group-item-lay pjaxlink">Kylin Configuration</a> + </li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li class="navlist"> + <a href="/docs/install/kylin_aws_emr.html" class="list-group-item-lay pjaxlink">Install Kylin on AWS EMR</a> + </li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li class="navlist"> + <a href="/docs/install/kylin_docker.html" class="list-group-item-lay pjaxlink">Run Kylin with Docker</a> + </li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li class="navlist"> + <a href="/docs/install/kylin_on_kubernetes.html" class="list-group-item-lay pjaxlink">Deploy Kylin on Kubernetes</a> + </li> + + + + + + + + + <ul> + </li> + + <li class="dropdown-submenu"><a href="#titleTutorial" data-toggle="collapse" class="navtitle">Tutorial</a> + <ul class="dropdown-menu"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li class="navlist"> + <a href="/docs/tutorial/kylin_sample.html" class="list-group-item-lay pjaxlink">Quick Start with Sample Cube</a> + </li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li class="navlist"> + <a href="/docs/tutorial/web.html" class="list-group-item-lay pjaxlink">Web Interface</a> + </li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li class="navlist"> + <a href="/docs/tutorial/create_cube.html" class="list-group-item-lay pjaxlink">Cube Wizard</a> + </li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li class="navlist"> + <a href="/docs/tutorial/cube_build_job.html" class="list-group-item-lay pjaxlink">Cube Build and Job Monitoring</a> + </li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li class="navlist"> + <a href="/docs/tutorial/cube_migration.html" class="list-group-item-lay pjaxlink">Cube Migration</a> + </li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li class="navlist"> + <a href="/docs/tutorial/sql_reference.html" class="list-group-item-lay pjaxlink">SQL Reference</a> + </li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li class="navlist"> + <a href="/docs/tutorial/project_level_acl.html" class="list-group-item-lay pjaxlink">Project And Table Level ACL</a> + </li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li class="navlist"> + <a href="/docs/tutorial/cube_spark.html" class="list-group-item-lay pjaxlink">Build Cube with Spark</a> + </li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li class="navlist"> + <a href="/docs/tutorial/cube_flink.html" class="list-group-item-lay pjaxlink">Build Cube with Flink</a> + </li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li class="navlist"> + <a href="/docs/tutorial/cube_streaming.html" class="list-group-item-lay pjaxlink">Cubing from Kafka(Near RT Streaming)</a> + </li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li class="navlist"> + <a href="/docs/tutorial/realtime_olap.html" class="list-group-item-lay pjaxlink">Real-time OLAP</a> + </li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li class="navlist"> + <a href="/docs/tutorial/cube_build_performance.html" class="list-group-item-lay pjaxlink">Cube Build Tuning</a> + </li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li class="navlist"> + <a href="/docs/tutorial/kylin_client_tool.html" class="list-group-item-lay pjaxlink">Kylin Python Client</a> + </li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li class="navlist"> + <a href="/docs/tutorial/setup_systemcube.html" class="list-group-item-lay pjaxlink">Set Up System Cube</a> + </li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li class="navlist"> + <a href="/docs/tutorial/use_cube_planner.html" class="list-group-item-lay pjaxlink">Use Cube Planner</a> + </li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li class="navlist"> + <a href="/docs/tutorial/use_dashboard.html" class="list-group-item-lay pjaxlink">Use Dashboard</a> + </li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li class="navlist"> + <a href="/docs/tutorial/setup_jdbc_datasource.html" class="list-group-item-lay pjaxlink">Setup JDBC Data Source</a> + </li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li class="navlist"> + <a href="/docs/tutorial/hybrid.html" class="list-group-item-lay pjaxlink">Hybrid Model</a> + </li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li class="navlist"> + <a href="/docs/tutorial/mysql_metastore.html" class="list-group-item-lay pjaxlink">Use MySQL as Metastore</a> + </li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li class="navlist"> + <a href="/docs/tutorial/lambda_mode_and_timezone_realtime_olap.html" class="list-group-item-lay pjaxlink">Lambda mode and Timezone in Real-time OLAP</a> + </li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li class="navlist"> + <a href="/docs/tutorial/query_pushdown.html" class="list-group-item-lay pjaxlink">Enable Query Pushdown</a> + </li> + + + + + + + + + <ul> + </li> + + <li class="dropdown-submenu"><a href="#titleIntegration" data-toggle="collapse" class="navtitle">Integration</a> + <ul class="dropdown-menu"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li class="navlist"> + <a href="/docs/tutorial/odbc.html" class="list-group-item-lay pjaxlink">Kylin ODBC Driver</a> + </li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li class="navlist"> + <a href="/docs/tutorial/jdbc.html" class="list-group-item-lay pjaxlink">Kylin JDBC Driver</a> + </li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li class="navlist"> + <a href="/docs/tutorial/tableau.html" class="list-group-item-lay pjaxlink">Tableau 8</a> + </li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li class="navlist"> + <a href="/docs/tutorial/tableau_91.html" class="list-group-item-lay pjaxlink">Tableau 9</a> + </li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li class="navlist"> + <a href="/docs/tutorial/powerbi.html" class="list-group-item-lay pjaxlink">MS Excel and Power BI</a> + </li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li class="navlist"> + <a href="/docs/tutorial/microstrategy.html" class="list-group-item-lay pjaxlink">MicroStrategy</a> + </li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li class="navlist"> + <a href="/docs/tutorial/squirrel.html" class="list-group-item-lay pjaxlink">SQuirreL</a> + </li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li class="navlist"> + <a href="/docs/tutorial/flink.html" class="list-group-item-lay pjaxlink">Apache Flink</a> + </li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li class="navlist"> + <a href="/docs/tutorial/spark.html" class="list-group-item-lay pjaxlink">Apache Spark</a> + </li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li class="navlist"> + <a href="/docs/tutorial/hue.html" class="list-group-item-lay pjaxlink">Hue</a> + </li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li class="navlist"> + <a href="/docs/tutorial/Qlik.html" class="list-group-item-lay pjaxlink">Qlik Sense</a> + </li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li class="navlist"> + <a href="/docs/tutorial/superset.html" class="list-group-item-lay pjaxlink">Superset</a> + </li> + + + + + + + + + <ul> + </li> + + <li class="dropdown-submenu"><a href="#titleHow To" data-toggle="collapse" class="navtitle">How To</a> + <ul class="dropdown-menu"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li class="navlist"> + <a href="/docs/howto/howto_use_restapi.html" class="list-group-item-lay pjaxlink">Use RESTful API</a> + </li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li class="navlist"> + <a href="/docs/howto/howto_build_cube_with_restapi.html" class="list-group-item-lay pjaxlink">Build Cube with API</a> + </li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li class="navlist"> + <a href="/docs/howto/howto_optimize_cubes.html" class="list-group-item-lay pjaxlink">Optimize Cube Design</a> + </li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li class="navlist"> + <a href="/docs/howto/howto_backup_metadata.html" class="list-group-item-lay pjaxlink">Backup Metadata</a> + </li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li class="navlist"> + <a href="/docs/howto/howto_cleanup_storage.html" class="list-group-item-lay pjaxlink">Cleanup Storage</a> + </li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li class="navlist"> + <a href="/docs/howto/howto_upgrade.html" class="list-group-item-lay pjaxlink">Upgrade From Old Versions</a> + </li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li class="navlist"> + <a href="/docs/howto/howto_use_cli.html" class="list-group-item-lay pjaxlink">Use Utility CLIs</a> + </li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li class="navlist"> + <a href="/docs/howto/howto_ldap_and_sso.html" class="list-group-item-lay pjaxlink">Secure with LDAP and SSO</a> + </li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li class="navlist"> + <a href="/docs/howto/howto_use_beeline.html" class="list-group-item-lay pjaxlink">Use Beeline for Hive</a> + </li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li class="navlist"> + <a href="/docs/howto/howto_update_coprocessor.html" class="list-group-item-lay pjaxlink">Update Coprocessor</a> + </li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li class="navlist"> + <a href="/docs/howto/howto_install_ranger_kylin_plugin.html" class="list-group-item-lay pjaxlink">Install Ranger Plugin</a> + </li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li class="navlist"> + <a href="/docs/howto/howto_enable_zookeeper_acl.html" class="list-group-item-lay pjaxlink">Enable Zookeeper ACL</a> + </li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li class="navlist"> + <a href="/docs/howto/howto_use_hive_mr_dict.html" class="list-group-item-lay pjaxlink">Use Hive to build global dictionary</a> + </li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li class="navlist"> + <a href="/docs/howto/sample_dataset.html" class="list-group-item-lay pjaxlink">Sample Dataset</a> + </li> + + + + + + + + + <ul> + </li> + + <li class="dropdown-submenu"><a href="#titleSecurity" data-toggle="collapse" class="navtitle">Security</a> + <ul class="dropdown-menu"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li class="navlist"> + <a href="/docs/security.html" class="list-group-item-lay pjaxlink">Security Issues</a> + </li> + + + + + + + + + <ul> + </li> + + </ul> --> + </li> + <li><a href="/download">Download</a></li> + <li><a href="/community" >Community</a></li> + <li><a href="/development" >Development</a></li> + <li><a href="/blog">Blog</a></li> + <li><a href="/cn" >䏿ç</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">How to Make Release</h1> + <article class="post-content" > + <p><em>This guide is for Apache Kylin Committers only.</em> <br /> +<em>Shell commands are on Mac OS X as sample.</em> <br /> +<em>For people in China, please aware using proxy to avoid potential firewall issue.</em></p> + +<h2 id="setup-account">Setup Account</h2> +<p>Make sure you have avaliable account and privilege for following applications:</p> + +<ul> + <li>Apache account: <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 repo (for website only): <a href="https://svn.apache.org/repos/asf/kylin">https://svn.apache.org/repos/asf/kylin</a></li> + <li>Apache Nexus (maven repo): <a href="https://repository.apache.org">https://repository.apache.org</a></li> + <li>Apache Kylin dist repo: <a href="https://dist.apache.org/repos/dist/dev/kylin">https://dist.apache.org/repos/dist/dev/kylin</a></li> +</ul> + +<h2 id="software-requirement">Software requirement</h2> +<ul> + <li>Java 8 or above;</li> + <li>Maven 3.5.3 or above;</li> + <li>If youâre on Apple Mac OS X, please install GNU TAR, check <a href="http://macappstore.org/gnu-tar/">this post</a>.</li> +</ul> + +<h2 id="setup-gpg-signing-keys">Setup GPG signing keys</h2> +<p>Follow instructions at <a href="http://www.apache.org/dev/release-signing">http://www.apache.org/dev/release-signing</a> to create a key pair <br /> +Install gpg (On Mac OS X as sample): <br /> +<code class="highlighter-rouge">brew install gpg</code></p> + +<p>Generate gpg key: <br /> +Reference: <a href="https://www.gnupg.org/gph/en/manual/c14.html">https://www.gnupg.org/gph/en/manual/c14.html</a> <br /> +<em>All new RSA keys generated should be at least 4096 bits. Do not generate new DSA keys</em> <br /> +<code class="highlighter-rouge">gpg --full-generate-key</code></p> + +<p>Verify your key: <br /> +<code class="highlighter-rouge">gpg --list-sigs YOUR_NAME</code></p> + +<p>Get the fingerprint of your key:<br /> +<code class="highlighter-rouge">gpg --fingerprint YOUR_NAME</code></p> + +<p>It will display the fingerprint like âKey fingerprint = XXXX XXXX â¦â, then add the fingerprint to your apache account at <a href="https://id.apache.org/">https://id.apache.org/</a> in âOpenPGP Public Key Primary Fingerprintâ field; wait for a few hours the key will added to <a href="https://people.apache.org/keys/">https://people.apache.org/keys/</a>, for example:<br /> +<a href="https://people.apache.org/keys/committer/lukehan.asc">https://people.apache.org/keys/committer/lukehan.asc</a></p> + +<p>Generate ASCII Amromed Key: <br /> +<code class="highlighter-rouge">gpg -a --export YOUR_MAIL_ADDRESS > YOUR_NAME.asc &</code></p> + +<p>Upload key to public server: <br /> +<code class="highlighter-rouge">gpg --send-keys YOUR_KEY_HASH</code></p> + +<p>or Submit key via web: <br /> +Open and Submit to <a href="http://pool.sks-keyservers.net:11371">http://pool.sks-keyservers.net:11371</a> (you can pickup any available public key server)</p> + +<p>Once your key submitted to server, you can verify using following command: <br /> +<code class="highlighter-rouge">gpg --recv-keys YOUR_KEY_HASH</code><br /> +for example: <br /> +<code class="highlighter-rouge">gpg --recv-keys 027DC364</code></p> + +<p>Add your public key to the KEYS file by following instructions in the KEYS file.: <br /> +<em>KEYS file location:</em> <strong>${kylin}/KEYS</strong> <br /> +For example: <br /> +<code class="highlighter-rouge">(gpg --list-sigs YOURNAME && gpg --armor --export YOURNAME) >> KEYS</code></p> + +<p>Commit your changes.</p> + +<h2 id="prepare-artifacts-for-release">Prepare artifacts for release</h2> +<p><strong>Before you start:</strong></p> + +<ul> + <li>Set up signing keys as described above.</li> + <li>Make sure you are using JDK 1.8.</li> + <li>Make sure you are using GIT 2.7.2 or above.</li> + <li>Make sure you are working on right release version number.</li> + <li>Make sure that every âresolvedâ JIRA case (including duplicates) has a fix version assigned.</li> + <li>Make sure you are working in clean dir.</li> +</ul> + +<p><strong>Configure Apache repository server in Maven</strong><br /> +If youâre the first time to do release, you need update the server authentication information in ~/.m2/settings.xml; If this file doesnât exist, copy a template from $M2_HOME/conf/settings.xml;</p> + +<p>In the âserversâ section, make sure the following servers be added, and replace #YOUR_APACHE_ID#, #YOUR_APACHE_PWD#, #YOUR_GPG_PASSPHRASE# with your ID, password, and passphrase:</p> + +<div class="highlight"><pre><code class="language-bash" data-lang="bash"><servers> + <!-- To publish a snapshot of some part of Maven --> + <server> + <id>apache.snapshots.https</id> + <username>#YOUR_APACHE_ID#</username> + <password>#YOUR_APACHE_PWD#</password> + </server> + <!-- To stage a release of some part of Maven --> + <server> + <id>apache.releases.https</id> + <username>#YOUR_APACHE_ID#</username> + <password>#YOUR_APACHE_PWD#</password> + </server> + + <!-- To publish a website of some part of Maven --> + <server> + <id>apache.website</id> + <username>#YOUR_APACHE_ID#</username> + <password>#YOUR_APACHE_PWD#</password> + <!-- Either + <privateKey>...</privateKey> + --> + <filePermissions>664</filePermissions> + <directoryPermissions>775</directoryPermissions> + </server> + + <!-- To stage a website of some part of Maven --> + <server> + <id>stagingSite</id> + <!-- must match hard-coded repository identifier <span class="k">in </span>site:stage-deploy --> + <username>#YOUR_APACHE_ID#</username> + <filePermissions>664</filePermissions> + <directoryPermissions>775</directoryPermissions> + </server> + <server> + <id>gpg.passphrase</id> + <passphrase>#YOUR_GPG_PASSPHRASE#</passphrase> + </server> + </servers></code></pre></div> + +<p><strong>Fix license issues</strong></p> + +<div class="highlight"><pre><code class="language-bash" data-lang="bash">Set passphrase variable without putting it into shell <span class="nb">history</span> +<span class="gp">$ </span><span class="nb">read</span> -s GPG_PASSPHRASE + +Make sure that there are no junk files <span class="k">in </span>the sandbox +<span class="gp">$ </span>git clean -xf +<span class="gp">$ </span>mvn clean + +Make sure all unit tests are passed +<span class="gp">$ </span>mvn <span class="nb">test + +</span>Check the <span class="sb">`</span>org.apache.kylin.common.KylinVersion<span class="sb">`</span> class, ensure the value of <span class="sb">`</span>CURRENT_KYLIN_VERSION<span class="sb">`</span> is the release version. + +Fix any license issues as reported by target/rat.txt +<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>Optionally, when the dry-run has succeeded, change install to deploy:</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>Prepare</strong></p> + +<p>Make sure your can ssh connection to github:</p> + +<div class="highlight"><pre><code class="language-bash" data-lang="bash">ssh -T g...@github.com</code></pre></div> + +<p>Create a branch for release work from your current development branch, named with this release version, e.g. v2.5.0-release (should not be the same name with the tag name), and then push it to 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>If any of the steps fail, clean up (see below), fix the problem, and start again from the top.</p> + +<div class="highlight"><pre><code class="language-bash" data-lang="bash">Set passphrase variable without putting it into shell <span class="nb">history</span> +<span class="gp">$ </span><span class="nb">read</span> -s GPG_PASSPHRASE + +Make sure that there are no junk files <span class="k">in </span>the sandbox +<span class="gp">$ </span>git clean -xf +<span class="gp">$ </span>mvn clean + +Optionally, <span class="k">do </span>a dry run of the release:prepare step, which sets version numbers. e.g. <span class="nv">releaseVersion</span><span class="o">=</span>2.5.0, <span class="nv">developmentVersion</span><span class="o">=</span>2.5.1-SNAPSHOT, use default tag kylin-2.5.0 +<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>&1 | tee /tmp/prepare-dry.log</code></pre></div> + +<p><strong>Check the dry run output:</strong></p> + +<ul> + <li>In the <code class="highlighter-rouge">target</code> directory should be these 8 files, among others: + <ul> + <li>apache-kylin-X.Y.Z-SNAPSHOT-source-release.zip</li> + <li>apache-kylin-X.Y.Z-SNAPSHOT-source-release.zip.asc</li> + <li>apache-kylin-X.Y.Z-SNAPSHOT-source-release.zip.asc.sha256</li> + <li>apache-kylin-X.Y.Z-SNAPSHOT-source-release.zip.sha256</li> + </ul> + </li> + <li>Remove the .zip.asc.sha256 file as it is not needed.</li> + <li>Note that the file names start <code class="highlighter-rouge">apache-kylin-</code>.</li> + <li>In the source distro <code class="highlighter-rouge">.zip</code>, check that all files belong to a directory called<br /> +<code class="highlighter-rouge">apache-kylin-X.Y.Z-SNAPSHOT</code>.</li> + <li>That directory must contain files <code class="highlighter-rouge">NOTICE</code>, <code class="highlighter-rouge">LICENSE</code>, <code class="highlighter-rouge">README.md</code></li> + <li>Check PGP, per <a href="https://httpd.apache.org/dev/verification.html">this</a>.</li> +</ul> + +<p><strong>Run real release:</strong><br /> +Now, run the release for real.</p> + +<div class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="c"># Note that if a dry run is done previously, need to do the cleanup first before run the release for real</span> +<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>Close the staged artifacts in the Nexus repository:</strong></p> + +<ul> + <li>Go to <a href="https://repository.apache.org/">https://repository.apache.org/</a> and login</li> + <li>Under <code class="highlighter-rouge">Build Promotion</code>, click <code class="highlighter-rouge">Staging Repositories</code></li> + <li>In the <code class="highlighter-rouge">Staging Repositories</code> tab there should be a line with profile <code class="highlighter-rouge">org.apache.kylin</code></li> + <li>Navigate through the artifact tree and make sure the .jar, .pom, .asc files are present</li> + <li>Check the box on in the first column of the row, and press the âCloseâ button to publish the repository at<br /> +<a href="https://repository.apache.org/content/repositories/orgapachekylin-1055">https://repository.apache.org/content/repositories/orgapachekylin-1055</a><br /> +(or a similar URL)</li> +</ul> + +<p><strong>Upload to staging area:</strong> <br /> +Upload the artifacts via subversion to a staging area, 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">## Remove the .zip.asc.sha256 file as it is not needed.</span> +<span class="gp">$ </span>rm ~/dist/dev/kylin/apache-kylin-X.Y.Z-rcN/apache-kylin-X.Y.Z-SNAPSHOT-source-release.zip.asc.sha256 + +<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 <YOUR_APACHE_ID></code></pre></div> + +<p><strong>Cleaning up after a failed release attempt:</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> + +<h2 id="validate-a-release">Validate a release</h2> + +<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 sha256 hashes</span> +<span class="c"># (Assumes your O/S has a 'shasum' command.)</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>pom,gz<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>.sha256 <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>.sha256<span class="k">)</span><span class="s2">"</span> <span class="o">=</span> <span class="s2">"</span><span class="k">$(</span>shasum -a 256 <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>.sha256 present and correct + <span class="k">else + </span><span class="nb">echo</span> <span class="nv">$i</span>.sha256 does not match + <span class="k">fi + else + </span>shasum -a 256 <span class="nv">$i</span> > <span class="nv">$i</span>.sha256 + <span class="nb">echo</span> <span class="nv">$i</span>.sha256 created + <span class="k">fi + done</span> +<span class="o">}</span>; +<span class="gp">$ </span>checkHash apache-kylin-X.Y.Z-rcN</code></pre></div> + +<h2 id="apache-voting-process">Apache voting process</h2> + +<p><strong>Vote on Apache Kylin dev mailing list</strong> <br /> +Release vote on dev list, use the commit id that generated by Maven release plugin, whose message looks like â[maven-release-plugin] prepare release kylin-x.x.xâ:</p> + +<div class="highlight"><pre><code class="language-text" data-lang="text">To: d...@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://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12316121&version=12343540 + +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 hash of the artifact is as follows: +apache-kylin-X.Y.Z-source-release.zip.sha256 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 PMC 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>After vote finishes, send out the result:</p> + +<div class="highlight"><pre><code class="language-text" data-lang="text">Subject: [RESULT][VOTE] Release apache-kylin-X.Y.Z (RC[N]) +To: d...@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.</code></pre></div> + +<h2 id="publishing-a-release">Publishing a release</h2> +<p>After a successful release vote, we need to push the release<br /> +out to mirrors, and other tasks.</p> + +<p>In JIRA, search for<br /> +<a href="https://issues.apache.org/jira/issues/?jql=project%20%3D%20KYLIN%20">all issues resolved in this release</a>,<br /> +and do a bulk update changing their status to âClosedâ,<br /> +with a change comment<br /> +âResolved in release X.Y.Z (YYYY-MM-DD)â<br /> +(fill in release number and date appropriately). <br /> +<strong>Uncheck âSend mail for this updateâ.</strong></p> + +<p>Mark the version released in JIRA system, <a href="https://issues.apache.org/jira/plugins/servlet/project-config/KYLIN/versions">Manage Versions</a>.</p> + +<p>Promote the staged nexus artifacts.</p> + +<ul> + <li>Go to <a href="https://repository.apache.org/">https://repository.apache.org/</a> and login</li> + <li>Under âBuild Promotionâ click âStaging Repositoriesâ</li> + <li>In the line with âorgapachekylin-xxxxâ, check the box</li> + <li>Press âReleaseâ button</li> +</ul> + +<p>Check the artifacts into 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>mkdir apache-kylin-X.Y.Z +<span class="gp">$ </span>cp -rp ../../dev/kylin/apache-kylin-X.Y.Z-rcN/apache-kylin<span class="k">*</span> 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 will publish to<br /> +<a href="https://dist.apache.org/repos/dist/release/kylin">https://dist.apache.org/repos/dist/release/kylin</a> and propagate to<br /> +<a href="http://www.apache.org/dyn/closer.cgi/kylin">http://www.apache.org/dyn/closer.cgi/kylin</a> within 24 hours.</p> + +<p>If there are more than 2 releases, clear out the oldest ones:</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>The old releases will remain available in the<br /> +<a href="http://archive.apache.org/dist/kylin/">release archive</a>.</p> + +<p>Release same version in JIRA, check Change Log.</p> + +<h2 id="build-and-upload-binary-package">Build and upload binary package</h2> +<p>After publish the release, you need generate the binary packages and then put them to the svn release repository;</p> + +<ul> + <li>Do <code class="highlighter-rouge">git fetch --all --prune --tags</code> to sync your local repo with remote.</li> + <li>Git checkout the tag for current release;</li> + <li>Make a binary package by refering to <a href="howto_package.html">this doc</a>;</li> + <li>Sign the generated binary package with gpg, e.g,:</li> +</ul> + +<div class="highlight"><pre><code class="language-bash" data-lang="bash">gpg --armor --output apache-kylin-2.5.0-bin.tar.gz.asc --detach-sig apache-kylin-2.5.0-bin.tar.gz</code></pre></div> + +<ul> + <li>Generate the sha256 file for the binary package, e.g,:</li> +</ul> + +<div class="highlight"><pre><code class="language-bash" data-lang="bash">shasum -a 256 apache-kylin-2.5.0-bin.tar.gz > apache-kylin-2.5.0-bin.tar.gz.sha256 + + on Linux: + openssl sha256 apache-kylin-2.5.0-bin.tar.gz > apache-kylin-2.5.0-bin.tar.gz.sha256</code></pre></div> + +<ul> + <li>Push the binary package, the signature file and the sha256 file to the svn <strong>dev</strong> repo, then run <code class="highlighter-rouge">svn mv <files-in-dev> <files-in-release></code> to move them to svn <strong>release</strong> repo.</li> + <li>For different Hadoop/HBase version, you may need repeat the above steps;</li> + <li>Add the files and then commit the svn changes.</li> +</ul> + +<h2 id="update-source-code">Update source code</h2> +<p>After publish the release, you need to do update some source code:</p> + +<ul> + <li> + <p>Merge the release branch, e.g. v2.5.0-release, to the current development branch, e.g. 2.5.x, for preparing the next development iteration.</p> + </li> + <li> + <p>Manually update <code class="highlighter-rouge">KylinVersion</code> class, change value of <code class="highlighter-rouge">CURRENT_KYLIN_VERSION</code> to current development version.</p> + </li> +</ul> + +<h2 id="publishing-the-web-site">Publishing the web site</h2> +<p>Refer to <a href="howto_docs.html">How to document</a> for more detail.</p> + +<h2 id="send-announcement-mail-to-mailing-list">Send announcement mail to mailing list</h2> +<p>Send one mail with subject like â[Announce] Apache Kylin X.Y.Z releasedâ to following list:</p> + +<ul> + <li>Apache Kylin Dev mailing list: d...@kylin.apache.org</li> + <li>Apache Kylin User mailing list: u...@kylin.apache.org</li> + <li>Apache Announce mailing list: annou...@apache.org<br /> +Please notice to always use your Apache mail address to send this;</li> +</ul> + +<p>Here is a sample of announcement email (by studying Kafkaâs):</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.5.0 release. + +This is a major release after 2.4, with more than 100 bug fixes and enhancements; All of the changes in this release can be found in: +https://kylin.apache.org/docs/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 dataset 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 to everyone who has contributed to the 2.5.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> + +<h2 id="thanks">Thanks</h2> +<p>This guide drafted with reference from <a href="http://calcite.apache.org">Apache Calcite</a> Howto doc, Thank you very much.</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="#titleDevelopment Guide" data-toggle="collapse" class="navtitle">Development Guide</a></li> + <div class="collapse in"> + <div class="list-group" id="list1"> + <ul> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li class="navlist"> + <a href="/development40/index.html" class="list-group-item-lay pjaxlink">Development Quick Guide</a></li> + + + + + + + + + + + + + + + + + + + + + + + + + <li class="navlist"> + <a href="/development40/dev_env.html" class="list-group-item-lay pjaxlink">Setup Development Env</a></li> + + + + + + + + + + + + + + + + + + + + + <li class="navlist"> + <a href="/development40/coding_naming_convention.html" class="list-group-item-lay pjaxlink">Coding and Naming Convention</a></li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li class="navlist"> + <a href="/development40/howto_test.html" class="list-group-item-lay pjaxlink">How to Test</a></li> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + <li class="navlist"> + <a href="/development40/howto_contribute.html" class="list-group-item-lay pjaxlink">How to Contribute</a></li> + + + + + + + + + + + + + + + +
[... 463 lines stripped ...]