newpipe-documentation/05_releasing/index.html

223 lines
8.8 KiB
HTML
Raw Normal View History

<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="shortcut icon" href="../img/favicon.ico">
<title>Releasing a new NewPipe version - NewPipe Documentation</title>
<!-- local fonts -->
<link rel="stylesheet" href="../css/local_fonts.css" type="text/css" />
<link rel="stylesheet" href="../css/theme.css" type="text/css" />
<link rel="stylesheet" href="../css/theme_extra.css" type="text/css" />
<!-- local code syntax highlighting -->
<link rel="stylesheet" href="../css/github.min.css" type="text/css" />
<link rel="stylesheet" href="../css/highlight.css" type="text/css" />
<script>
// Current page data
var mkdocs_page_name = "Releasing a new NewPipe version";
var mkdocs_page_input_path = "05_releasing.md";
var mkdocs_page_url = null;
</script>
<script src="../js/jquery-2.1.1.min.js" defer></script>
<script src="../js/modernizr-2.8.3.min.js" defer></script>
<script src="../js/highlight.min.js"></script>
<script>hljs.initHighlightingOnLoad();</script>
</head>
<body class="wy-body-for-nav" role="document">
<div class="wy-grid-for-nav">
<nav data-toggle="wy-nav-shift" class="wy-nav-side stickynav">
<div class="wy-side-nav-search">
<a href=".." class="icon icon-home"> NewPipe Documentation</a>
<div role="search">
<form id ="rtd-search-form" class="wy-form" action="../search.html" method="get">
<input type="text" name="q" placeholder="Search docs" title="Type search term here" />
</form>
</div>
</div>
<div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
<ul class="current">
<li class="toctree-l1">
<a class="" href="..">Welcome to the NewPipe Documentation.</a>
</li>
<li class="toctree-l1">
<a class="" href="../00_Prepare_everything/">Prepare everything</a>
</li>
<li class="toctree-l1">
<a class="" href="../01_Concept_of_the_extractor/">Concept of the Extractor</a>
</li>
<li class="toctree-l1">
<a class="" href="../02_Concept_of_LinkHandler/">Concept of LinkHandler</a>
</li>
<li class="toctree-l1">
<a class="" href="../03_Implement_a_service/">Implement a service</a>
</li>
<li class="toctree-l1">
<a class="" href="../04_Run_changes_in_App/">Run the changes in the App</a>
</li>
<li class="toctree-l1 current">
<a class="current" href="./">Releasing a new NewPipe version</a>
<ul class="subnav">
<li class="toctree-l2"><a href="#releasing-a-new-newpipe-version">Releasing a new NewPipe version</a></li>
<ul>
<li><a class="toctree-l3" href="#difference-between-regular-and-hotfix-release">Difference between regular and hotfix release</a></li>
<li><a class="toctree-l3" href="#regular-releases">Regular releases</a></li>
<li><a class="toctree-l3" href="#hotfix-releases">Hotfix releases</a></li>
</ul>
</ul>
</li>
<li class="toctree-l1">
<a class="" href="../06_documentation/">Documentation</a>
</li>
</ul>
</div>
&nbsp;
</nav>
<section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
<nav class="wy-nav-top" role="navigation" aria-label="top navigation">
<i data-toggle="wy-nav-top" class="fa fa-bars"></i>
<a href="..">NewPipe Documentation</a>
</nav>
<div class="wy-nav-content">
<div class="rst-content">
<div role="navigation" aria-label="breadcrumbs navigation">
<ul class="wy-breadcrumbs">
<li><a href="..">Docs</a> &raquo;</li>
<li>Releasing a new NewPipe version</li>
<li class="wy-breadcrumbs-aside">
</li>
</ul>
<hr/>
</div>
<div role="main">
<div class="section">
<h1 id="releasing-a-new-newpipe-version">Releasing a new NewPipe version</h1>
<p>This site is ment for those who want to maintain NewPipe, or just want to know how releasing work.</p>
<p><img alt="one does not simply push to master" src="../img/onedoes.jpg" /></p>
<h2 id="difference-between-regular-and-hotfix-release">Difference between regular and hotfix release</h2>
<p>NewPipe is a web crawler. That means it does not use a web API, but instead tries to scrape the data from the website,
this however has the disadvantage of the app to brake instantly when Youtube changes something.
We can not know when this happen therefore we need to be prepared when it happens, and at lease reduce our downtime as
god as possible. Our whole release cycle is therefore designed around this issue.</p>
<p>So there is a difference between a release that is meant to introduce new features or fix minor bugs,
and a version that fixes an issue that occurred because Youtube (or some other service) suddenly changed their website (mostly call this a shutdown).
Lets first have a look how a regular release work, and then how the hotfix release work.</p>
<h2 id="regular-releases">Regular releases</h2>
<p>Regular releases are normal releases like they are done like in any other app. Releases are always stored on <strong>master</strong> branch. By means the latest commit on
<strong>master</strong> is always equal to the current releases. No development is done on master. This ensures that we always have one
branch with a stable/releasable version.</p>
<h3 id="feature-branching">Feature branching</h3>
<p>For development the <strong>dev</strong> branch is used. Pushing to <strong>dev</strong> directly however is also not allowed since QA and testing should be done before pushing to <strong>dev</strong>.
This ensures that also the dev version works as good a possible.
So in order to change something on the app one may want to <strong>fork</strong> the dev branch and develop the changes in his own branch (this is called feature branching).</p>
<p><img alt="feature_branching" src="../img/release_branch.svg" /></p>
<h3 id="merching-featuresbugfixes">Merching features/bugfixes</h3>
<p>After being done with the feature one should open up a <strong>Pull Reuqest</strong> to the dev branch here a maintainer can do <strong>Code review</strong> and <strong>Quality Assurance (QA)</strong>.
If you are a maintainer please take care about the code architecture so corrosion or code shifting can be prevented. Please also preface core quality over functionality.
So in short: cool function but bad code -&gt; no merge. We should focus on leaving the code as clean as possible.</p>
<p><img alt="merge_feature_into_dev" src="../img/merge_into_dev.svg" /></p>
<p>At best you as a maintainer should build the app and put the signed apk into the description of that new Pullrequest. This way other people can test the feature/bugfix and therefore help with QA.</p>
<h3 id="creating-a-new-release">Creating a new release</h3>
<h3 id="releasing">Releasing</h3>
<h2 id="hotfix-releases">Hotfix releases</h2>
<p><img alt="this_is_fine" src="../img/could_not_decrypt.png" /></p>
<h3 id="fix-branch">Fix branch</h3>
<h3 id="releasing_1">Releasing</h3>
</div>
</div>
<footer>
<div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
<a href="../06_documentation/" class="btn btn-neutral float-right" title="Documentation">Next <span class="icon icon-circle-arrow-right"></span></a>
<a href="../04_Run_changes_in_App/" class="btn btn-neutral" title="Run the changes in the App"><span class="icon icon-circle-arrow-left"></span> Previous</a>
</div>
<hr/>
<div role="contentinfo">
<!-- Copyright etc -->
</div>
Built with <a href="http://www.mkdocs.org">MkDocs</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>.
</footer>
</div>
</div>
</section>
</div>
<div class="rst-versions" role="note" style="cursor: pointer">
<span class="rst-current-version" data-toggle="rst-current-version">
<span><a href="../04_Run_changes_in_App/" style="color: #fcfcfc;">&laquo; Previous</a></span>
<span style="margin-left: 15px"><a href="../06_documentation/" style="color: #fcfcfc">Next &raquo;</a></span>
</span>
</div>
<script>var base_url = '..';</script>
<script src="../js/theme.js" defer></script>
<script src="../search/main.js" defer></script>
</body>
</html>