blob: 0dc78db78c25c56e30842d06bcf37498449aea27 [file] [log] [blame]
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="The Apache Cassandra database is the right choice when you need scalability and high availability without compromising performance. Linear scalability and proven fault-tolerance on commodity hardware or cloud infrastructure make it the perfect platform for mission-critical data. Cassandra's support for replicating across multiple datacenters is best-in-class, providing lower latency for your users and the peace of mind of knowing that you can survive regional outages.
">
<meta name="keywords" content="cassandra, apache, apache cassandra, distributed storage, key value store, scalability, bigtable, dynamo" />
<meta name="robots" content="index,follow" />
<meta name="language" content="en" />
<title>Documentation</title>
<link rel="canonical" href="http://cassandra.apache.org/doc/latest/development/ci.html">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous">
<link rel="stylesheet" href="./../../../css/style.css">
<link rel="stylesheet" href="./../../../css/sphinx.css">
<link rel="top" title="Apache Cassandra Documentation v4.0-alpha5" href="../index.html"/> <link rel="up" title="Contributing to Cassandra" href="index.html"/> <link rel="next" title="Dependency Management" href="dependencies.html"/> <link rel="prev" title="Working on Documentation" href="documentation.html"/>
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.2.0/css/all.css" integrity="sha384-hWVjflwFxL6sNzntih27bfxkr27PmbbK/iSvJ+a4+0owXq79v+lsFkW54bOGbiDQ" crossorigin="anonymous">
<link type="application/atom+xml" rel="alternate" href="http://cassandra.apache.org/feed.xml" title="Apache Cassandra Website" />
</head>
<body>
<!-- breadcrumbs -->
<div class="topnav">
<div class="container breadcrumb-container">
<ul class="breadcrumb">
<li>
<div class="dropdown">
<img class="asf-logo" src="./../../../img/asf_feather.png" />
<a data-toggle="dropdown" href="#">Apache Software Foundation <span class="caret"></span></a>
<ul class="dropdown-menu" role="menu" aria-labelledby="dLabel">
<li><a href="http://www.apache.org">Apache Homepage</a></li>
<li><a href="http://www.apache.org/licenses/">License</a></li>
<li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
<li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li>
<li><a href="http://www.apache.org/security/">Security</a></li>
</ul>
</div>
</li>
<li><a href="./../../../">Apache Cassandra</a></li>
<li><a href="./../../../doc/latest/">Documentation</a></li>
<li><a href="./">Contributing to Cassandra</a></li>
<li>Jenkins CI Environment</li>
</ul>
</div>
<!-- navbar -->
<nav class="navbar navbar-default navbar-static-top" role="navigation">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#cassandra-menu" aria-expanded="false">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="./../../../"><img src="./../../../img/cassandra_logo.png" alt="Apache Cassandra logo" /></a>
</div><!-- /.navbar-header -->
<div id="cassandra-menu" class="collapse navbar-collapse">
<ul class="nav navbar-nav navbar-right">
<li><a href="./../../../">Home</a></li>
<li><a href="./../../../download/">Download</a></li>
<li><a href="./../../../doc/latest/">Documentation</a></li>
<li><a href="./../../../community/">Community</a></li>
<li>
<a href="./../../../blog/">Blog</a>
</li>
</ul>
</div><!-- /#cassandra-menu -->
</div>
</nav><!-- /.navbar -->
</div><!-- /.topnav -->
<div class="container-fluid">
<div class="row">
<div class="col-md-3">
<div class="doc-navigation">
<div class="doc-menu" role="navigation">
<div class="navbar-header">
<button type="button" class="pull-left navbar-toggle" data-toggle="collapse" data-target=".sidebar-navbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
</div>
<div class="navbar-collapse collapse sidebar-navbar-collapse">
<form id="doc-search-form" class="navbar-form" action="../search.html" method="get" role="search">
<div class="form-group">
<input type="text" size="30" class="form-control input-sm" name="q" placeholder="Search docs">
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</div>
</form>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../getting_started/index.html">Getting Started</a></li>
<li class="toctree-l1"><a class="reference internal" href="../new/index.html">New Features in Apache Cassandra 4.0</a></li>
<li class="toctree-l1"><a class="reference internal" href="../architecture/index.html">Architecture</a></li>
<li class="toctree-l1"><a class="reference internal" href="../cql/index.html">The Cassandra Query Language (CQL)</a></li>
<li class="toctree-l1"><a class="reference internal" href="../data_modeling/index.html">Data Modeling</a></li>
<li class="toctree-l1"><a class="reference internal" href="../configuration/index.html">Configuring Cassandra</a></li>
<li class="toctree-l1"><a class="reference internal" href="../operating/index.html">Operating Cassandra</a></li>
<li class="toctree-l1"><a class="reference internal" href="../tools/index.html">Cassandra Tools</a></li>
<li class="toctree-l1"><a class="reference internal" href="../troubleshooting/index.html">Troubleshooting</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="index.html">Contributing to Cassandra</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="gettingstarted.html">Getting Started</a></li>
<li class="toctree-l2"><a class="reference internal" href="ide.html">Building and IDE Integration</a></li>
<li class="toctree-l2"><a class="reference internal" href="testing.html">Testing</a></li>
<li class="toctree-l2"><a class="reference internal" href="patches.html">Contributing Code Changes</a></li>
<li class="toctree-l2"><a class="reference internal" href="code_style.html">Code Style</a></li>
<li class="toctree-l2"><a class="reference internal" href="how_to_review.html">Review Checklist</a></li>
<li class="toctree-l2"><a class="reference internal" href="how_to_commit.html">How-to Commit</a></li>
<li class="toctree-l2"><a class="reference internal" href="documentation.html">Working on Documentation</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">Jenkins CI Environment</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#about-ci-testing-and-apache-cassandra">About CI testing and Apache Cassandra</a></li>
<li class="toctree-l3"><a class="reference internal" href="#setting-up-your-own-jenkins-server">Setting up your own Jenkins server</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="dependencies.html">Dependency Management</a></li>
<li class="toctree-l2"><a class="reference internal" href="release_process.html">Release Process</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../faq/index.html">Frequently Asked Questions</a></li>
<li class="toctree-l1"><a class="reference internal" href="../plugins/index.html">Third-Party Plugins</a></li>
<li class="toctree-l1"><a class="reference internal" href="../bugs.html">Reporting Bugs</a></li>
<li class="toctree-l1"><a class="reference internal" href="../contactus.html">Contact us</a></li>
</ul>
</div><!--/.nav-collapse -->
</div>
</div>
</div>
<div class="col-md-8">
<div class="content doc-content">
<div class="content-container">
<div class="section" id="jenkins-ci-environment">
<h1>Jenkins CI Environment<a class="headerlink" href="#jenkins-ci-environment" title="Permalink to this headline"></a></h1>
<div class="section" id="about-ci-testing-and-apache-cassandra">
<h2>About CI testing and Apache Cassandra<a class="headerlink" href="#about-ci-testing-and-apache-cassandra" title="Permalink to this headline"></a></h2>
<p>Cassandra can be automatically tested using various test suites, that are either implemented based on JUnit or the <a class="reference external" href="https://github.com/riptano/cassandra-dtest">dtest</a> scripts written in Python. As outlined in <a class="reference internal" href="testing.html"><span class="doc">Testing</span></a>, each kind of test suite addresses a different way how to test Cassandra. But in the end, all of them will be executed together on our CI platform at <a class="reference external" href="https://builds.apache.org">builds.apache.org</a>, running <a class="reference external" href="http://jenkins-ci.org">Jenkins</a>.</p>
</div>
<div class="section" id="setting-up-your-own-jenkins-server">
<h2>Setting up your own Jenkins server<a class="headerlink" href="#setting-up-your-own-jenkins-server" title="Permalink to this headline"></a></h2>
<p>Jenkins is an open source solution that can be installed on a large number of platforms. Setting up a custom Jenkins instance for Cassandra may be desirable for users who have hardware to spare, or organizations that want to run Cassandra tests for custom patches before contribution.</p>
<p>Please refer to the Jenkins download and documentation pages for details on how to get Jenkins running, possibly also including slave build executor instances. The rest of the document will focus on how to setup Cassandra jobs in your Jenkins environment.</p>
<div class="section" id="required-plugins">
<h3>Required plugins<a class="headerlink" href="#required-plugins" title="Permalink to this headline"></a></h3>
<p>The following plugins need to be installed additionally to the standard plugins (git, ant, ..).</p>
<p>You can install any missing plugins through the install manager.</p>
<p>Go to <code class="docutils literal notranslate"><span class="pre">Manage</span> <span class="pre">Jenkins</span> <span class="pre">-&gt;</span> <span class="pre">Manage</span> <span class="pre">Plugins</span> <span class="pre">-&gt;</span> <span class="pre">Available</span></code> and install the following plugins and respective dependencies:</p>
<ul class="simple">
<li>Job DSL</li>
<li>Javadoc Plugin</li>
<li>description setter plugin</li>
<li>Throttle Concurrent Builds Plug-in</li>
<li>Test stability history</li>
<li>Hudson Post build task</li>
</ul>
</div>
<div class="section" id="setup-seed-job">
<h3>Setup seed job<a class="headerlink" href="#setup-seed-job" title="Permalink to this headline"></a></h3>
<p>Config <code class="docutils literal notranslate"><span class="pre">New</span> <span class="pre">Item</span></code></p>
<ul class="simple">
<li>Name it <code class="docutils literal notranslate"><span class="pre">Cassandra-Job-DSL</span></code></li>
<li>Select <code class="docutils literal notranslate"><span class="pre">Freestyle</span> <span class="pre">project</span></code></li>
</ul>
<p>Under <code class="docutils literal notranslate"><span class="pre">Source</span> <span class="pre">Code</span> <span class="pre">Management</span></code> select Git using the repository: <code class="docutils literal notranslate"><span class="pre">https://github.com/apache/cassandra-builds</span></code></p>
<p>Under <code class="docutils literal notranslate"><span class="pre">Build</span></code>, confirm <code class="docutils literal notranslate"><span class="pre">Add</span> <span class="pre">build</span> <span class="pre">step</span></code> -&gt; <code class="docutils literal notranslate"><span class="pre">Process</span> <span class="pre">Job</span> <span class="pre">DSLs</span></code> and enter at <code class="docutils literal notranslate"><span class="pre">Look</span> <span class="pre">on</span> <span class="pre">Filesystem</span></code>: <code class="docutils literal notranslate"><span class="pre">jenkins-dsl/cassandra_job_dsl_seed.groovy</span></code></p>
<p>Generated jobs will be created based on the Groovy script’s default settings. You may want to override settings by checking <code class="docutils literal notranslate"><span class="pre">This</span> <span class="pre">project</span> <span class="pre">is</span> <span class="pre">parameterized</span></code> and add <code class="docutils literal notranslate"><span class="pre">String</span> <span class="pre">Parameter</span></code> for on the variables that can be found in the top of the script. This will allow you to setup jobs for your own repository and branches (e.g. working branches).</p>
<p><strong>When done, confirm “Save”</strong></p>
<p>You should now find a new entry with the given name in your project list. However, building the project will still fail and abort with an error message <cite>“Processing DSL script cassandra_job_dsl_seed.groovy ERROR: script not yet approved for use”</cite>. Goto <code class="docutils literal notranslate"><span class="pre">Manage</span> <span class="pre">Jenkins</span></code> -&gt; <code class="docutils literal notranslate"><span class="pre">In-process</span> <span class="pre">Script</span> <span class="pre">Approval</span></code> to fix this issue. Afterwards you should be able to run the script and have it generate numerous new jobs based on the found branches and configured templates.</p>
<p>Jobs are triggered by either changes in Git or are scheduled to execute periodically, e.g. on daily basis. Jenkins will use any available executor with the label “cassandra”, once the job is to be run. Please make sure to make any executors available by selecting <code class="docutils literal notranslate"><span class="pre">Build</span> <span class="pre">Executor</span> <span class="pre">Status</span></code> -&gt; <code class="docutils literal notranslate"><span class="pre">Configure</span></code> -&gt; Add “<code class="docutils literal notranslate"><span class="pre">cassandra</span></code>” as label and save.</p>
<p>Executors need to have “JDK 1.8 (latest)” installed. This is done under <code class="docutils literal notranslate"><span class="pre">Manage</span> <span class="pre">Jenkins</span> <span class="pre">-&gt;</span> <span class="pre">Global</span> <span class="pre">Tool</span> <span class="pre">Configuration</span> <span class="pre">-&gt;</span> <span class="pre">JDK</span> <span class="pre">Installations…</span></code>. Executors also need to have the virtualenv package installed on their system.</p>
</div>
</div>
</div>
<div class="doc-prev-next-links" role="navigation" aria-label="footer navigation">
<a href="dependencies.html" class="btn btn-default pull-right " role="button" title="Dependency Management" accesskey="n">Next <span class="glyphicon glyphicon-circle-arrow-right" aria-hidden="true"></span></a>
<a href="documentation.html" class="btn btn-default" role="button" title="Working on Documentation" accesskey="p"><span class="glyphicon glyphicon-circle-arrow-left" aria-hidden="true"></span> Previous</a>
</div>
</div>
</div>
</div>
</div>
</div>
<hr />
<footer>
<div class="container">
<div class="col-md-4 social-blk">
<span class="social">
<a href="https://twitter.com/cassandra"
class="twitter-follow-button"
data-show-count="false" data-size="large">Follow @cassandra</a>
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>
<a href="https://twitter.com/intent/tweet?button_hashtag=cassandra"
class="twitter-hashtag-button"
data-size="large"
data-related="ApacheCassandra">Tweet #cassandra</a>
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script>
</span>
<a class="subscribe-rss icon-link" href="/feed.xml" title="Subscribe to Blog via RSS">
<span><i class="fa fa-rss"></i></span>
</a>
</div>
<div class="col-md-8 trademark">
<p>&copy; 2016 <a href="http://apache.org">The Apache Software Foundation</a>.
Apache, the Apache feather logo, and Apache Cassandra are trademarks of The Apache Software Foundation.
<p>
</div>
</div><!-- /.container -->
</footer>
<!-- Javascript. Placed here so pages load faster -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script>
<script src="./../../../js/underscore-min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js" integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS" crossorigin="anonymous"></script>
<script src="./../../../js/doctools.js"></script>
<script src="./../../../js/searchtools.js"></script>
<script type="text/javascript"> var DOCUMENTATION_OPTIONS = { URL_ROOT: "", VERSION: "", COLLAPSE_INDEX: false, FILE_SUFFIX: ".html", HAS_SOURCE: false, SOURCELINK_SUFFIX: ".txt" }; </script>
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
try {
var pageTracker = _gat._getTracker("UA-11583863-1");
pageTracker._trackPageview();
} catch(err) {}
</script>
</body>
</html>