| <!DOCTYPE html> |
| <html lang="en"> |
| <head> |
| <meta charset="utf-8"> |
| <meta name="viewport" content="width=device-width, initial-scale=1"> |
| <title>Apache Aurora</title> |
| <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css"> |
| <link href="/assets/css/main.css" rel="stylesheet"> |
| <!-- Analytics --> |
| <script type="text/javascript"> |
| var _gaq = _gaq || []; |
| _gaq.push(['_setAccount', 'UA-45879646-1']); |
| _gaq.push(['_setDomainName', 'apache.org']); |
| _gaq.push(['_trackPageview']); |
| |
| (function() { |
| var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; |
| ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; |
| var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); |
| })(); |
| </script> |
| </head> |
| <body> |
| <div class="container-fluid section-header"> |
| <div class="container"> |
| <div class="nav nav-bar"> |
| <a href="/"><img src="/assets/img/aurora_logo_dkbkg.svg" width="300" alt="Transparent Apache Aurora logo with dark background"/></a> |
| <ul class="nav navbar-nav navbar-right"> |
| <li><a href="/documentation/latest/">Documentation</a></li> |
| <li><a href="/community/">Community</a></li> |
| <li><a href="/downloads/">Downloads</a></li> |
| <li><a href="/blog/">Blog</a></li> |
| </ul> |
| </div> |
| </div> |
| </div> |
| |
| <div class="container-fluid"> |
| <div class="container content"> |
| <div class="col-md-12 documentation"> |
| <h5 class="page-header text-uppercase">Documentation |
| <select onChange="window.location.href='/documentation/' + this.value + '/developing-aurora-scheduler/'" |
| value="0.11.0"> |
| <option value="0.22.0" |
| > |
| 0.22.0 |
| (latest) |
| </option> |
| <option value="0.21.0" |
| > |
| 0.21.0 |
| </option> |
| <option value="0.20.0" |
| > |
| 0.20.0 |
| </option> |
| <option value="0.19.1" |
| > |
| 0.19.1 |
| </option> |
| <option value="0.19.0" |
| > |
| 0.19.0 |
| </option> |
| <option value="0.18.1" |
| > |
| 0.18.1 |
| </option> |
| <option value="0.18.0" |
| > |
| 0.18.0 |
| </option> |
| <option value="0.17.0" |
| > |
| 0.17.0 |
| </option> |
| <option value="0.16.0" |
| > |
| 0.16.0 |
| </option> |
| <option value="0.15.0" |
| > |
| 0.15.0 |
| </option> |
| <option value="0.14.0" |
| > |
| 0.14.0 |
| </option> |
| <option value="0.13.0" |
| > |
| 0.13.0 |
| </option> |
| <option value="0.12.0" |
| > |
| 0.12.0 |
| </option> |
| <option value="0.11.0" |
| selected="selected"> |
| 0.11.0 |
| </option> |
| <option value="0.10.0" |
| > |
| 0.10.0 |
| </option> |
| <option value="0.9.0" |
| > |
| 0.9.0 |
| </option> |
| <option value="0.8.0" |
| > |
| 0.8.0 |
| </option> |
| <option value="0.7.0-incubating" |
| > |
| 0.7.0-incubating |
| </option> |
| <option value="0.6.0-incubating" |
| > |
| 0.6.0-incubating |
| </option> |
| <option value="0.5.0-incubating" |
| > |
| 0.5.0-incubating |
| </option> |
| </select> |
| </h5> |
| <p>Java code in the aurora repo is built with <a href="http://gradle.org">Gradle</a>.</p> |
| |
| <h1 id="prerequisite">Prerequisite</h1> |
| |
| <p>When using Apache Aurora checked out from the source repository or the binary |
| distribution, the Gradle wrapper and JavaScript dependencies are provided. |
| However, you need to manually install them when using the source release |
| downloads:</p> |
| |
| <ol> |
| <li>Install Gradle following the instructions on the <a href="http://gradle.org">Gradle web site</a></li> |
| <li><p>From the root directory of the Apache Aurora project generate the gradle |
| wrapper by running:</p> |
| |
| <p>gradle wrapper</p></li> |
| </ol> |
| |
| <h1 id="getting-started">Getting Started</h1> |
| |
| <p>You will need Java 8 installed and on your <code>PATH</code> or unzipped somewhere with <code>JAVA_HOME</code> set. Then</p> |
| <pre class="highlight plaintext"><code>./gradlew tasks |
| </code></pre> |
| |
| <p>will bootstrap the build system and show available tasks. This can take a while the first time you |
| run it but subsequent runs will be much faster due to cached artifacts.</p> |
| |
| <h2 id="running-the-tests">Running the Tests</h2> |
| |
| <p>Aurora has a comprehensive unit test suite. To run the tests use</p> |
| <pre class="highlight plaintext"><code>./gradlew build |
| </code></pre> |
| |
| <p>Gradle will only re-run tests when dependencies of them have changed. To force a re-run of all |
| tests use</p> |
| <pre class="highlight plaintext"><code>./gradlew clean build |
| </code></pre> |
| |
| <h2 id="running-the-build-with-code-quality-checks">Running the build with code quality checks</h2> |
| |
| <p>To speed up development iteration, the plain gradle commands will not run static analysis tools. |
| However, you should run these before posting a review diff, and <strong>always</strong> run this before pushing a |
| commit to origin/master.</p> |
| <pre class="highlight plaintext"><code>./gradlew build -Pq |
| </code></pre> |
| |
| <h2 id="running-integration-tests">Running integration tests</h2> |
| |
| <p>To run the same tests that are run in the Apache Aurora continuous integration |
| environment:</p> |
| <pre class="highlight plaintext"><code>./build-support/jenkins/build.sh |
| </code></pre> |
| |
| <p>In addition, there is an end-to-end test that runs a suite of aurora commands |
| using a virtual cluster:</p> |
| <pre class="highlight plaintext"><code>bash src/test/sh/org/apache/aurora/e2e/test_end_to_end.sh |
| </code></pre> |
| |
| <h2 id="creating-a-bundle-for-deployment">Creating a bundle for deployment</h2> |
| |
| <p>Gradle can create a zip file containing Aurora, all of its dependencies, and a launch script with</p> |
| <pre class="highlight plaintext"><code>./gradlew distZip |
| </code></pre> |
| |
| <p>or a tar file containing the same files with</p> |
| <pre class="highlight plaintext"><code>./gradlew distTar |
| </code></pre> |
| |
| <p>The output file will be written to <code>dist/distributions/aurora-scheduler.zip</code> or |
| <code>dist/distributions/aurora-scheduler.tar</code>.</p> |
| |
| <h1 id="developing-aurora-java-code">Developing Aurora Java code</h1> |
| |
| <h2 id="setting-up-an-ide">Setting up an IDE</h2> |
| |
| <p>Gradle can generate project files for your IDE. To generate an IntelliJ IDEA project run</p> |
| <pre class="highlight plaintext"><code>./gradlew idea |
| </code></pre> |
| |
| <p>and import the generated <code>aurora.ipr</code> file.</p> |
| |
| <h2 id="adding-or-upgrading-a-dependency">Adding or Upgrading a Dependency</h2> |
| |
| <p>New dependencies can be added from Maven central by adding a <code>compile</code> dependency to <code>build.gradle</code>. |
| For example, to add a dependency on <code>com.example</code>’s <code>example-lib</code> 1.0 add this block:</p> |
| <pre class="highlight plaintext"><code>compile 'com.example:example-lib:1.0' |
| </code></pre> |
| |
| <p>NOTE: Anyone thinking about adding a new dependency should first familiarize themself with the |
| Apache Foundation’s third-party licensing |
| <a href="http://www.apache.org/legal/resolved.html#category-x">policy</a>.</p> |
| |
| <h1 id="developing-aurora-ui">Developing Aurora UI</h1> |
| |
| <h2 id="installing-bower-optional">Installing bower (optional)</h2> |
| |
| <p>Third party JS libraries used in Aurora (located at 3rdparty/javascript/bower_components) are |
| managed by bower, a JS dependency manager. Bower is only required if you plan to add, remove or |
| update JS libraries. Bower can be installed using the following command:</p> |
| <pre class="highlight plaintext"><code>npm install -g bower |
| </code></pre> |
| |
| <p>Bower depends on node.js and npm. The easiest way to install node on a mac is via brew:</p> |
| <pre class="highlight plaintext"><code>brew install node |
| </code></pre> |
| |
| <p>For more node.js installation options refer to <a href="https://github.com/joyent/node/wiki/Installation">https://github.com/joyent/node/wiki/Installation</a>.</p> |
| |
| <p>More info on installing and using bower can be found at: <a href="http://bower.io/">http://bower.io/</a>. Once installed, you can |
| use the following commands to view and modify the bower repo at |
| 3rdparty/javascript/bower_components</p> |
| <pre class="highlight plaintext"><code>bower list |
| bower install <library name> |
| bower remove <library name> |
| bower update <library name> |
| bower help |
| </code></pre> |
| |
| <h2 id="faster-iteration-in-vagrant">Faster Iteration in Vagrant</h2> |
| |
| <p>The scheduler serves UI assets from the classpath. For production deployments this means the assets |
| are served from within a jar. However, for faster development iteration, the vagrant image is |
| configured to add <code>/vagrant/dist/resources/main</code> to the head of CLASSPATH. This path is configured |
| as a shared filesystem to the path on the host system where your Aurora repository lives. This means |
| that any updates to dist/resources/main in your checkout will be reflected immediately in the UI |
| served from within the vagrant image.</p> |
| |
| <p>The one caveat to this is that this path is under <code>dist</code> not <code>src</code>. This is because the assets must |
| be processed by gradle before they can be served. So, unfortunately, you cannot just save your local |
| changes and see them reflected in the UI, you must first run <code>./gradlew processResources</code>. This is |
| less than ideal, but better than having to restart the scheduler after every change. Additionally, |
| gradle makes this process somewhat easier with the use of the <code>--continuous</code> flag. If you run: |
| <code>./gradlew processResources --continuous</code> gradle will monitor the filesystem for changes and run the |
| task automatically as necessary. This doesn’t quite provide hot-reload capabilities, but it does |
| allow for <5s from save to changes being visibile in the UI with no further action required on the |
| part of the developer.</p> |
| |
| <h1 id="developing-the-aurora-build-system">Developing the Aurora Build System</h1> |
| |
| <h2 id="bootstrapping-gradle">Bootstrapping Gradle</h2> |
| |
| <p>The following files were autogenerated by <code>gradle wrapper</code> using gradle 1.8’s |
| <a href="http://www.gradle.org/docs/1.8/dsl/org.gradle.api.tasks.wrapper.Wrapper.html">Wrapper</a> plugin and |
| should not be modified directly:</p> |
| <pre class="highlight plaintext"><code>./gradlew |
| ./gradlew.bat |
| ./gradle/wrapper/gradle-wrapper.jar |
| ./gradle/wrapper/gradle-wrapper.properties |
| </code></pre> |
| |
| <p>To upgrade Gradle unpack the new version somewhere, run <code>/path/to/new/gradle wrapper</code> in the |
| repository root and commit the changed files.</p> |
| |
| <h1 id="making-thrift-schema-changes">Making thrift schema changes</h1> |
| |
| <p>See <a href="/documentation/0.11.0/thrift-deprecation/">this document</a> for any thrift related changes.</p> |
| |
| </div> |
| |
| </div> |
| </div> |
| <div class="container-fluid section-footer buffer"> |
| <div class="container"> |
| <div class="row"> |
| <div class="col-md-2 col-md-offset-1"><h3>Quick Links</h3> |
| <ul> |
| <li><a href="/downloads/">Downloads</a></li> |
| <li><a href="/community/">Mailing Lists</a></li> |
| <li><a href="http://issues.apache.org/jira/browse/AURORA">Issue Tracking</a></li> |
| <li><a href="/documentation/latest/contributing/">How To Contribute</a></li> |
| </ul> |
| </div> |
| <div class="col-md-2"><h3>The ASF</h3> |
| <ul> |
| <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> |
| <div class="col-md-6"> |
| <p class="disclaimer">© 2014-2017 <a href="http://www.apache.org/">Apache Software Foundation</a>. Licensed under the <a href="http://www.apache.org/licenses/">Apache License v2.0</a>. The <a href="https://www.flickr.com/photos/trondk/12706051375/">Aurora Borealis IX photo</a> displayed on the homepage is available under a <a href="https://creativecommons.org/licenses/by-nc-nd/2.0/">Creative Commons BY-NC-ND 2.0 license</a>. Apache, Apache Aurora, and the Apache feather logo are trademarks of The Apache Software Foundation.</p> |
| </div> |
| </div> |
| </div> |
| |
| </body> |
| </html> |