<!DOCTYPE html>
<html lang="en">
<head>
<!--
    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.
-->
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href="/css/bootstrap.min.css" rel="stylesheet">
<link href="/css/bootstrap-theme.min.css" rel="stylesheet">
<link href="/css/dataTables.bootstrap.css" rel="stylesheet">
<link href="/css/pirk.css" rel="stylesheet" type="text/css">
<link href="//netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css" rel="stylesheet">

<title>Updating the Website</title>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<script src="/js/bootstrap.min.js"></script>
<script src="/js/jquery.dataTables.min.js"></script>
<script src="/js/dataTables.bootstrap.js"></script>
<script>
  // show location of canonical site if not currently on the canonical site
  $(function() {
    var host = window.location.host;
    if (typeof host !== 'undefined' && host !== 'pirk.incubator.apache.org') {
      $('#non-canonical').show();
    }
  });

  
  // decorate menu with currently navigated page
  $(function() {
    $("#nav_website_updates").addClass("active");
  });
  

  $(function() {
    // decorate section headers with anchors
    return $("h2, h3, h4, h5, h6").each(function(i, el) {
      var $el, icon, id;
      $el = $(el);
      id = $el.attr('id');
      icon = '<i class="fa fa-link"></i>';
      if (id) {
        return $el.append($("<a />").addClass("header-link").attr("href", "#" + id).html(icon));
      }
    });
  });

  // configure Google Analytics
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');

  ga('create', 'UA-81114308-1', 'auto');
  ga('send', 'pageview');
  
</script>
</head>
<body style="padding-top: 100px">

  <nav class="navbar navbar-default navbar-fixed-top">
  <div class="container-fluid">
    <div class="navbar-header">
      <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#navbar-items">
        <span class="sr-only">Toggle navigation</span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
      </button>
      <a href="/"><img id="nav-logo" alt="Apache Pirk" class="img-responsive" src="/images/pirkImage.png" width="150"/></a>
    </div>
    <div class="collapse navbar-collapse" id="navbar-items">
      <ul class="nav navbar-nav">
        <li class="nav-link"><a href="/downloads">Download</a></li>
        <li class="dropdown">
        <a class="dropdown-toggle" data-toggle="dropdown" href="#">Documentation<span class="caret"></span></a>
        <ul class="dropdown-menu">
          <li id="nav_users"><a href="/for_users">For Users</a></li>
          <li id="nav_developers"><a href="/for_developers">For Developers</a></li>
          <li id="nav_developers"><a href="/cloud_instructions">Cloud instructions</a></li>
          <li id="nav_papers"><a href="/papers">Papers &amp Presentations</a></li>
          <li class="nav_faq"><a href="/faq">FAQ</a></li>
          <li class="divider"></li>
           <li><a href="/javadocs">Javadocs</a></li>     
        </ul>
        </li>
        <li class="dropdown">
        <a class="dropdown-toggle" data-toggle="dropdown" href="#">Community<span class="caret"></span></a>
        <ul class="dropdown-menu">
          <li id="nav_getinvolvedpirk"><a href="/get_involved_pirk">Get Involved</a></li>
          <li id="nav_listspirk"><a href="/mailing_list_pirk">Mailing Lists</a></li>
          <li id="nav_peoplepirk"><a href="/people_pirk">People</a></li>
       	</ul>
        </li>
        <li class="dropdown">
        <a class="dropdown-toggle" data-toggle="dropdown" href="#">Development<span class="caret"></span></a>
        <ul class="dropdown-menu">
          <li id="nav_releasing"><a href="/how_to_contribute">How to Contribute</a></li>
          <li id="nav_releasing"><a href="/releasing">Making Releases</a></li>
          <li id="nav_nav_verify_release"><a href="/verifying_releases">Verifying Releases</a></li>
          <li id="nav_update_website"><a href="/website_updates">Website Updates</a></li>
          <hr>
          <li><a href="https://issues.apache.org/jira/browse/PIRK ">Issue Tracker/JIRA <i class="fa fa-external-link"></i></a></li>
          <li><a href="https://builds.apache.org/job/pirk/">Jenkins Builds <i class="fa fa-external-link"></i></a></li>
          <li><a href="https://travis-ci.org/apache/incubator-pirk">Travis CI Builds <i class="fa fa-external-link"></i></a></li>
          <li><a href="https://github.com/apache/incubator-pirk"> Pirk Github Mirror <i class="fa fa-external-link"></i></a></li>
        </ul>
        </li>
        <li class="nav-link"><a href="/roadmap">Roadmap</a></li>
       <ul class="nav navbar-nav navbar-right">
        <li class="dropdown">
        <a class="dropdown-toggle" data-toggle="dropdown" href="#">Apache Software Foundation<span class="caret"></span></a>
        <ul class="dropdown-menu">
          <li><a href="https://www.apache.org">Apache Homepage <i class="fa fa-external-link"></i></a></li>
          <li><a href="https://www.apache.org/licenses/LICENSE-2.0">License <i class="fa fa-external-link"></i></a></li>
          <li><a href="https://www.apache.org/foundation/sponsorship">Sponsorship <i class="fa fa-external-link"></i></a></li>
          <li><a href="https://www.apache.org/security">Security <i class="fa fa-external-link"></i></a></li>
          <li><a href="https://www.apache.org/foundation/thanks">Thanks <i class="fa fa-external-link"></i></a></li>
          <li><a href="https://www.apache.org/foundation/policies/conduct">Code of Conduct <i class="fa fa-external-link"></i></a></li>
        </ul>
        </li>
        </ul>
        </ul>
    </div> 
  </div>  
</nav>


  <div class="container">
    <div class="row">
      <div class="col-md-12">
        <div id="content">
          
          <h1 class="title">Updating the Website</h1>
          
          <p>Pirk’s web site is developed using <a href="https://jekyllrb.com">Jekyll</a>. The Jekyll source is contained in the 
<a href="https://git-wip-us.apache.org/repos/asf?p=incubator-pirk.git;a=tree;h=gh-pages">gh-pages</a> branch and the 
<a href="https://git-wip-us.apache.org/repos/asf?p=incubator-pirk.git;a=tree;h=asf-site">asf-site</a> branch contains 
the HTML content.</p>

<p>Website development is
performed by editing the contents of the 
<a href="https://git-wip-us.apache.org/repos/asf?p=incubator-pirk.git;a=tree;h=gh-pages">gh-pages</a> branch, either
directly by a committer, with a pull request to <a href="https://github.com/apache/incubator-pirk">GitHub</a>, or a patch
submitted to <a href="https://issues.apache.org/jira/browse/PIRK">JIRA</a>. The rendered site can be previewed locally or on
<a href="https://apache.github.io/incubator-pirk/">GitHub</a>, and the rendered site (in the <code class="highlighter-rouge">_site</code> directory) will be
merged into the <code class="highlighter-rouge">asf-site</code> branch to update the <a href="http://pirk.incubator.apache.org/">official site</a> after being built with the <code class="highlighter-rouge">_config-asf.yml</code> configuration.</p>

<p>To manage any Gem dependencies, it is highly recommended to use <a href="https://bundler.io">Bundler</a>.
To start using Bundler, install it and then install the dependencies for the website:</p>

<div class="highlighter-rouge"><pre class="highlight"><code>gem install bundler
bundle install
</code></pre>
</div>

<p>To get help with jekyll:</p>

<div class="highlighter-rouge"><pre class="highlight"><code>jekyll help
</code></pre>
</div>

<p>To test the site locally (usually on http://localhost:4000):</p>

<div class="highlighter-rouge"><pre class="highlight"><code>bundle exec jekyll serve --config _config-asf.yml --safe --baseurl=""
</code></pre>
</div>

<p>To build for updating the <code class="highlighter-rouge">asf-site</code> branch:</p>

<div class="highlighter-rouge"><pre class="highlight"><code>bundle exec jekyll build --config _config-asf.yml --safe
</code></pre>
</div>

<p>A <a href="https://git-wip-us.apache.org/repos/asf?p=accumulo.git;a=blob_plain;f=_devtools/git-hooks/post-commit;hb=gh-pages">post-commit hook</a> is available (Thanks <a href="https://accumulo.apache.org/">Apache Accumulo!</a>) for you to automatically create a
commit in the <code class="highlighter-rouge">asf-site</code> branch locally each time you commit to the <code class="highlighter-rouge">gh-pages</code>
branch. You can also run this command manually:</p>

<div class="highlighter-rouge"><pre class="highlight"><code>./_devtools/git-hooks/post-commit
</code></pre>
</div>

<p>To automatically run this post-commit hook in your local repository, copy
the given file into your <code class="highlighter-rouge">.git/hooks</code> directory, and ensure the file is executable:</p>

<div class="highlighter-rouge"><pre class="highlight"><code>cp ./_devtools/git-hooks/post-commit .git/hooks/
chmod +x .git/hooks/post-commit
</code></pre>
</div>

<p>Finally, ensure you have pushed the changes in both the <code class="highlighter-rouge">asf-site</code> and <code class="highlighter-rouge">gh-pages</code> branches. The <code class="highlighter-rouge">gh-pages</code> branch 
contains the source used by the <code class="highlighter-rouge">post-commit</code> script to generate the static HTML which lives in the
<code class="highlighter-rouge">asf-site</code> branch and is actually served.</p>

        </div>

        
<footer>

  <p><a href="https://www.apache.org"><img src="/images/feather-small.gif" alt="Apache Software Foundation" id="asf-logo" height="100" /></a></p>

  <p>Copyright © 2016-2016 The Apache Software Foundation. Licensed under the <a href="https://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.</p>

</footer>


      </div>
    </div>
  </div>
</body>
</html>
