blob: f8014a7912cf57a28994e6d16e86f128da0dc262 [file] [log] [blame]
---
layout: docpage
title: "Documentation"
is_homepage: false
is_sphinx_doc: true
doc-parent: "Contributing to Cassandra"
doc-title: "Jenkins CI Environment"
doc-header-links: '
<link rel="top" title="Apache Cassandra Documentation v4.0-alpha3" 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"/>
'
doc-search-path: "../search.html"
extra-footer: '
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: "",
VERSION: "",
COLLAPSE_INDEX: false,
FILE_SUFFIX: ".html",
HAS_SOURCE: false,
SOURCELINK_SUFFIX: ".txt"
};
</script>
'
---
<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="../architecture/index.html">Architecture</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="../cql/index.html">The Cassandra Query Language (CQL)</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>
</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>