<!DOCTYPE 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. 
-->
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>Apache Gobblin</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <link rel="icon"
          type="image/png"
          href="http://gobblin.io/favicon.ico">
    <!--===============================================
      CSS files
    =================================================-->
    <link rel="stylesheet" href="../assets/css/bootstrap.css" media="screen">
    <link rel="stylesheet" href="https://netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css">
    <link rel="stylesheet" href="../assets/css/custom.min.css">
    <link rel="stylesheet" href="../assets/css/gobblin.css">
    <!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
    <!--[if lt IE 9]>
      <script src="../assets/js/html5shiv.js"></script>
      <script src="../assets/js/respond.min.js"></script>
    <![endif]-->
  </head>
  <body>
    <!--===============================================
      Gobblin Navigation Space <start>
    =================================================-->
    <div id="navigation"></div>

    <!--===============================================
      Gobblin Navigation Space <end>
    =================================================-->
    <!--===============================================
      Gobblin Center Space <start>
    =================================================-->
    <div class="container">

      <div class="page-header" id="primary-content">
        <div class="row">
            <div class="col-md-12">
                <div id="content">
                    <h1 style="font-size: 3em; margin-top: -5px">Downloads</h1>

                    <p>Be sure to verify your downloads by these <a href="https://www.apache.org/info/verification" title="Verify" target="_blank">procedures</a> using these <a href="https://www.apache.org/dist/incubator/gobblin/KEYS" title="KEYS" target="_blank">KEYS</a> for any Apache release.</p>
                    <!--=============================================
                    Latest Release
                    ==============================================-->
                    <h2 id="current-releases">Current Releases<a class="header-link" href="#current-releases"><i class="fa fa-link"></i></a></h2>
                    
                    <!-- Release Step 2: Create a new section by copying the provided template for new release -->
		    <!-- 0.15.0 Release start -->
                    <h3 id="latest-label-label-primary-">0.15.0</h3>
                    
                    <p>
                        Official <a href="https://www.apache.org/dyn/closer.lua/incubator/gobblin/apache-gobblin-incubating-0.15.0/apache-gobblin-incubating-sources-0.15.0.tgz" target="_blank">source release</a> 
                        [ <a href="https://www.apache.org/dist/incubator/gobblin/apache-gobblin-incubating-0.15.0/apache-gobblin-incubating-sources-0.15.0.tgz.sha512" target="_blank">SHA512</a> ] 
                        [ <a href="https://www.apache.org/dist/incubator/gobblin/apache-gobblin-incubating-0.15.0/apache-gobblin-incubating-sources-0.15.0.tgz.asc" target="_blank">ASC</a> ]
                    </p>
                    <p>
                        <a href="https://github.com/apache/incubator-gobblin/blob/release-0.15.0/CHANGELOG.md" target="_blank" rel="nofollow">CHANGELOG</a>
                    </p>
                    <!-- 0.15.0 Release end -->

                    <!-- 0.14.0 Release start -->
                    <h3 id="latest-label-label-primary-">0.14.0</h3>
                    
                    <p>
                        Official <a href="https://www.apache.org/dyn/closer.lua/incubator/gobblin/apache-gobblin-incubating-0.14.0/apache-gobblin-incubating-sources-0.14.0.tgz" target="_blank">source release</a> 
                        [ <a href="https://www.apache.org/dist/incubator/gobblin/apache-gobblin-incubating-0.14.0/apache-gobblin-incubating-sources-0.14.0.tgz.sha512" target="_blank">SHA512</a> ] 
                        [ <a href="https://www.apache.org/dist/incubator/gobblin/apache-gobblin-incubating-0.14.0/apache-gobblin-incubating-sources-0.14.0.tgz.asc" target="_blank">ASC</a> ]
                    </p>
                    <p>
                        <a href="https://github.com/apache/incubator-gobblin/blob/release-0.14.0/CHANGELOG.md" target="_blank" rel="nofollow">CHANGELOG</a>
                    </p>
                    <!-- 0.14.0 Release end -->
                    
                    <!-- 0.13.0 Release start -->
                    <h3 id="latest-label-label-primary-">0.13.0</h3>
                    
                    <p>
                        Official <a href="https://www.apache.org/dyn/closer.lua/incubator/gobblin/apache-gobblin-incubating-0.13.0/apache-gobblin-incubating-sources-0.13.0.tgz" target="_blank">source release</a> 
                        [ <a href="https://www.apache.org/dist/incubator/gobblin/apache-gobblin-incubating-0.13.0/apache-gobblin-incubating-sources-0.13.0.tgz.sha512" target="_blank">SHA512</a> ] 
                        [ <a href="https://www.apache.org/dist/incubator/gobblin/apache-gobblin-incubating-0.13.0/apache-gobblin-incubating-sources-0.13.0.tgz.asc" target="_blank">ASC</a> ]
                    </p>
                    <p>
                        <a href="https://github.com/apache/incubator-gobblin/blob/release-0.13.0/CHANGELOG.md" target="_blank" rel="nofollow">CHANGELOG</a>
                    </p>
                    <!-- 0.13.0 Release end -->                    
                    
                    <!-- 0.12.0 Release start -->
                    <h3 id="latest-label-label-primary-">0.12.0</h3>
                    
                    <p>
                        Official <a href="https://www.apache.org/dyn/closer.lua/incubator/gobblin/apache-gobblin-incubating-0.12.0/apache-gobblin-incubating-sources-0.12.0.tgz" target="_blank">source release</a> 
                        [ <a href="https://www.apache.org/dist/incubator/gobblin/apache-gobblin-incubating-0.12.0/apache-gobblin-incubating-sources-0.12.0.tgz.sha512" target="_blank">SHA512</a> ] 
                        [ <a href="https://www.apache.org/dist/incubator/gobblin/apache-gobblin-incubating-0.12.0/apache-gobblin-incubating-sources-0.12.0.tgz.asc" target="_blank">ASC</a> ]
                    </p>
                    <!--
                    <p>
                        <a href="https://www.apache.org/dyn/closer.lua/incubator/gobblin/apache-gobblin-incubating-0.12.0/apache-gobblin-incubating-bin-0.12.0.tar.gz" target="_blank">Binary distribution</a>
                        [ <a href="https://www.apache.org/dist/incubator/gobblin/apache-gobblin-incubating-0.12.0/apache-gobblin-incubating-bin-0.12.0.tar.gz.sha512" target="_blank">SHA512</a> ] 
                        [ <a href="https://www.apache.org/dist/incubator/gobblin/apache-gobblin-incubating-0.12.0/apache-gobblin-incubating-bin-0.12.0.tar.gz.asc" target="_blank">ASC</a> ]
                    </p>
                    -->
                    <p>
                        <a href="https://github.com/apache/incubator-gobblin/blob/release-0.12.0/CHANGELOG.md" target="_blank" rel="nofollow">CHANGELOG</a>
                    </p>
                    <!-- 0.12.0 Release end -->
                    
                    
                    <!-- 0.11.0 Release start -->
                    <!-- Deprecate 0.11.0
                    <h3 id="latest-label-label-primary-">0.11.0 (Pre-Apache)</h3>
                    <p>The last release prior to Apache incubation is version 0.11.0. <br>It is not supported or maintained anymore and can be found on Github</p>
                    <p>
                        Official <a href="https://github.com/apache/incubator-gobblin/archive/gobblin_0.11.0.zip" target="_blank" rel="nofollow">source release</a> 
                        [ <a href="#">SHA512</a> ]
                    </p>
                    <p>
                        <a href="https://github.com/apache/incubator-gobblin/archive/gobblin_0.11.0.tar.gz" target="_blank" rel="nofollow">Binary distribution</a>
                        [ <a href="#">SHA512</a> ]
                    </p>
                    <p>
                        <a href="https://github.com/apache/incubator-gobblin/blob/gobblin_0.11.0/CHANGELOG.md" target="_blank" rel="nofollow">CHANGELOG</a>
                    </p>
                    -->
                    <!-- 0.11.0 Release end -->

                    <!--=============================================
                      Older Releases (Archived)
                    ==============================================-->
                    <!-- 
                    <h2 id="older-releases">Older Pre-Apache releases<a class="header-link" href="#older-releases"><i class="fa fa-link"></i></a></h2>

                    <p>Older releases can be found in the <a href="https://github.com/apache/incubator-gobblin/releases" target="_blank" rel="nofollow">archives</a>.</p>
                    -->
                </div>
            </div>
        </div>
        <hr>
        <footer style="margin-bottom: 0em; margin-top: 0em;">
          <div id="footer">
              <div class="row">
                  <div class="col-sm-6">
                      <div class="footer-section__policies-section--policies">
                          <p style="font-size: 12px; line-height: 1.5em;">
                            Copyright © 2021 <a href="http://www.apache.org/" target="_blank">The Apache Software Foundation</a>
                            <br>
                            Apache, Apache Gobblin, the Apache feather and the Gobblin logo are trademarks of The Apache Software Foundation
                            <br>
                         </p>
                      </div>
                </div>
                <div class="col-sm-6">
                    <p style="font-size: 12px; line-height: 1.5em; text-align: right;">
                        <!-- REQUIRED BY APACHE [START] -->
                        <a class="external" href="https://www.apache.org/">Foundation</a> | 
                        <a class="external" href="https://www.apache.org/licenses/">License</a> | 
                        <a class="external" href="https://www.apache.org/events/current-event">Events</a> | 
                        <a class="external" href="https://www.apache.org/security">Security</a> | 
                        <a class="external" href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a> | 
                        <a class="external" href="https://www.apache.org/foundation/thanks.html">Thanks</a> 
                        <!-- REQUIRED BY APACHE [END] -->
                    </p>
                </div>
              
            </div>
          </div>
        </footer>
      </div>
    <!--===============================================
      Gobblin Center Space <end>
    =================================================-->
    </div>

    <!--===============================================
      Javascript files
    =================================================-->
    <script src="https://code.jquery.com/jquery-1.10.2.min.js"></script>
    <script src="../assets/js/bootstrap.min.js"></script>
    <script src="../assets/js/jquery.particleground.min.js"></script>
    <script src="../assets/js/custom.js"></script>
    <script src="../assets/js/gobblin.js"></script>
  </body>
</html>
