-
Notifications
You must be signed in to change notification settings - Fork 0
Building and Testing
There are several top-level targets for a full RunDeck build, but there are also ways to only build the lower-level components during development or testing.
Requirements:
- Java 5. Make sure
JAVA_HOME
is set. - GNU Make, or maven2
RunDeck is composed of these components:
- core - located in
core/
. Build system: gradle or maven2 - plugins - located in
plugins/
. Build system: gradle or maven2 (Depends on core) - rundeckapp - located in
rundeckapp/
. Build system: grails or maven2/grails. (Depends on core,plugins) - docs - located in
docs/
. Build system: GNU Make, pandoc. optional - rundeck-laucher - located in
rundeck-launcher/
. Build system: gradle or maven2
Gradle based build components already include the "gradle wrapper" so they do not require a local gradle installation. You can use the gradlew
or gradlew.bat
scripts that are included.
Maven2 can be used to build the entire project, except for the docs.
Grails uses version 1.3.7.
The top-level build system is GNU Make or maven2. The Makefile separately invokes gradle to build the subcomponents as well as the docs. The top-level maven2 pom.xml will build the entire project except for the docs.
To build the rundeck-launcher:
make
To build the rpm
make rpm
To build the .deb
make deb
To use Maven2, make sure you set the MAVEN_OPTS environment variable to allocate enough RAM:
MAVEN_OPTS="-Xmx512m -XX:MaxPermSize=192m" mvn clean package
Building RunDeck requires access to the internet, but it is possible to use an HTTP proxy instead of direct internet access.
- Requires: UNIX or Linux system, bash, GNU make, wget, Java 6
- no git required
In a nutshell, set the http_proxy
and https_proxy
environment variables appropriately, then download a tarball from github (which sidesteps the need to use a proxy for git), then build.
In more detail:
# Download and unpack the tarball. Replace Proxy URLs appropriately.
# You can also use a tarball from a different revision or tag.
http_proxy=http://172.16.123.1:80 https_proxy=http://172.16.123.1:80 wget https://github.com/dtolabs/rundeck/tarball/v1.3 -O - | tar xvz
# NOTE: on CentOS 5 add --no-check-certificate because github's CA is not in the
# (quite old) root cert set in CentOS 5. Or, update the root certs.
http_proxy=http://172.16.123.1:80 https_proxy=http://172.16.123.1:80 wget --no-check-certificate https://github.com/dtolabs/rundeck/tarball/v1.3 -O - | tar xvz
# At this point there should be a directory called: dtolabs-rundeck-<git revision>
cd dtolabs-rundeck-*
# Run the build
# On Debian or Ubuntu:
JAVA_HOME=/usr/lib/jvm/java-6-openjdk http_proxy=http://172.16.123.1:80 make
# OR: On CentOS:
JAVA_HOME=/usr/lib/jvm/java-1.6.0 http_proxy=http://172.16.123.1:80 make
# After build completes, copy the launcher into a working directory and start it
mkdir ~/rundeck
cp rundeckapp/target/rundeck-launcher-1.3.0.jar ~/rundeck
cd ~/rundeck
java -jar rundeck-launcher-1.3.0.jar
- core : use gradle directly:
cd core; ./gradlew clean build
- plugins: use gradle:
cd plugins; ./gradlew
. (Depends on core) - rundeckapp: use grails directly. Set your
GRAILS_HOME
env variable to a Grails 1.3.7 installation. Then perform:cd rundeckapp; grails prod war
. (Depends on core,plugins) - rundeck-launcher: use gradle.
cd rundeck-launcher; ./gradlew clean build
(Depends on core,plugins,rundeckapp)
Maven can also be used for all of the component directories.
Documentation requires pandoc to build. This is only required for the rpm/deb
targets. Set your PATH to include the location of pandoc. e.g. export PATH=$PATH:$HOME/.cabal/bin
. Then use GNU Make:
make clean docs
After that you can build the launcher/rpm/deb and it will include the docs.
To perform tests on the components:
- core: use gradle check:
cd core; ./gradlew check
- to test a single test class, use
./gradlew -Dtest.single=classname test
- to test a single test class, use
- rundeckapp: use grails test-app:
cd rundeckapp; grails test-app
- to test a single unit or integration test such as "MyDomainTests", use:
grails test-app MyDomain :unit
orgrails test-app MyDomain :integration
.
- to test a single unit or integration test such as "MyDomainTests", use:
Maven can also be used for all of the component directories.
The RunDeck CLI tools and HTTP API can be tested against a running RunDeck server instance.
export RDECK_BASE=/path/to/rdeck/base
sh test/test.sh [http://server:port] [username] [password]
This test assumes the server is running at http://localhost:4440
if not specified, and the default admin:admin
username and password if they are not specified. It will create a test
project and perform tests of the API endpoints.
If you wish to add a new API endpoint test, see the examples under test/api/test-*.sh
.