blob: fc0836aff8eafcc97b44bc76e18aaf333db7e78a [file] [view]
Developing the Aurora Scheduler
===============================
The Aurora scheduler is written in Java code and built with [Gradle](http://gradle.org).
Prerequisite
============
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:
1. Install Gradle following the instructions on the [Gradle web site](http://gradle.org)
2. From the root directory of the Apache Aurora project generate the Gradle
wrapper by running:
gradle wrapper
Getting Started
===============
You will need Java 8 installed and on your `PATH` or unzipped somewhere with `JAVA_HOME` set. Then
./gradlew tasks
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.
Running the Tests
-----------------
Aurora has a comprehensive unit test suite. To run the tests use
./gradlew build
Gradle will only re-run tests when dependencies of them have changed. To force a re-run of all
tests use
./gradlew clean build
Running the build with code quality checks
------------------------------------------
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 **always** run this before pushing a
commit to origin/master.
./gradlew build -Pq
Running integration tests
-------------------------
To run the same tests that are run in the Apache Aurora continuous integration
environment:
./build-support/jenkins/build.sh
In addition, there is an end-to-end test that runs a suite of aurora commands
using a virtual cluster:
./src/test/sh/org/apache/aurora/e2e/test_end_to_end.sh
Creating a bundle for deployment
--------------------------------
Gradle can create a zip file containing Aurora, all of its dependencies, and a launch script with
./gradlew distZip
or a tar file containing the same files with
./gradlew distTar
The output file will be written to `dist/distributions/aurora-scheduler.zip` or
`dist/distributions/aurora-scheduler.tar`.
Developing Aurora Java code
===========================
Setting up an IDE
-----------------
Gradle can generate project files for your IDE. To generate an IntelliJ IDEA project run
./gradlew idea
and import the generated `aurora.ipr` file.
Adding or Upgrading a Dependency
--------------------------------
New dependencies can be added from Maven central by adding a `compile` dependency to `build.gradle`.
For example, to add a dependency on `com.example`'s `example-lib` 1.0 add this block:
compile 'com.example:example-lib:1.0'
NOTE: Anyone thinking about adding a new dependency should first familiarize themselves with the
Apache Foundation's third-party licensing
[policy](http://www.apache.org/legal/resolved.html#category-x).
Developing the Aurora Build System
==================================
Bootstrapping Gradle
--------------------
The following files were autogenerated by `gradle wrapper` using gradle's
[Wrapper](http://www.gradle.org/docs/current/dsl/org.gradle.api.tasks.wrapper.Wrapper.html) plugin and
should not be modified directly:
./gradlew
./gradlew.bat
./gradle/wrapper/gradle-wrapper.jar
./gradle/wrapper/gradle-wrapper.properties
To upgrade Gradle unpack the new version somewhere, run `/path/to/new/gradle wrapper` in the
repository root and commit the changed files.