Installing Continuum Standalone

Download and Configuration

  • Download the standalone version from the Download page
  • Extract the file

Note: The standalone version ships with Jetty 8, which requires Java 6.

Defining JNDI Resources

Mail server configuration

Before you start Continuum, you must configure your SMTP configuration for mail notification. In many servers, the default of delivering to localhost with no authentication will be properly relayed. However, if you need to configure a different SMTP server, the configuration is in $CONTINUUM_HOME/contexts/continuum.xml:

<New id="validation_mail" class="org.eclipse.jetty.plus.jndi.Resource">
  <Arg><Ref id="wac"/></Arg>
  <Arg>mail/Session</Arg>
  <Arg>
    <New class="org.eclipse.jetty.jndi.factories.MailSessionReference">
      <Set name="user"></Set>
      <Set name="password"></Set>
      <Set name="properties">
        <New class="java.util.Properties">
          <Put name="mail.smtp.host">localhost</Put>
        </New>
      </Set>
    </New>
  </Arg>
</New>
Database configuration

By default, Continuum use an embedded Derby database. If you want to use a different database, you can modify the JNDI configuration in $CONTINUUM_HOME/contexts/continuum.xml:

  <!-- continuum database -->

  <New id="continuum" class="org.eclipse.jetty.plus.jndi.Resource">
    <Arg><Ref id="wac"/></Arg>
    <Arg>jdbc/continuum</Arg>
    <Arg>
      <New class="org.apache.commons.dbcp.BasicDataSource">
        <Set name="driverClassName">org.apache.derby.jdbc.EmbeddedDriver</Set>
        <Set name="url">jdbc:derby:<Property name="appserver.base" default="."/>/data/databases/continuum;create=true</Set>
        <Set name="username">SA</Set>
        <Set name="password"></Set>
        <Set name="testOnBorrow">true</Set>
        <Set name="validationQuery">SELECT count(*) FROM SYS.SYSTABLES</Set>
      </New>
    </Arg>
  </New>

  <!-- Users / Security Database -->

  <New id="users" class="org.eclipse.jetty.plus.jndi.Resource">
    <Arg><Ref id="wac"/></Arg>
    <Arg>jdbc/users</Arg>
    <Arg>
      <New class="org.apache.commons.dbcp.BasicDataSource">
        <Set name="driverClassName">org.apache.derby.jdbc.EmbeddedDriver</Set>
        <Set name="url">jdbc:derby:<Property name="appserver.base" default="."/>/data/databases/users;create=true</Set>
        <Set name="username">SA</Set>
        <Set name="password"></Set>
        <Set name="testOnBorrow">true</Set>
        <Set name="validationQuery">SELECT count(*) FROM SYS.SYSTABLES</Set>
      </New>
    </Arg>
  </New>

Please refer to the documentation for your JDBC driver for the correct settings to use. You may need to alter the validationQuery to one that can successfully execute on your database (or remove the setting if you do not want to validate connections before using them).

You must ensure the JDBC driver is available in the classpath, by copying it to the $CONTINUUM_HOME/lib directory and updating $CONTINUUM_HOME/conf/wrapper.conf to ensure it is listed instead of the Derby JAR.

Refer to the Commons DBCP documentation for more advanced configuration of the connection pool.

More information on supported databases is available in the Administrator's Guide on External Databases.

Testing the Configuration

Start Continuum from the console in the $CONTINUUM_HOME/bin/ directory:

continuum console

If it appears to be working correctly, it is a good idea to set it up as a service so that it will run in the background under a suitable role account, and can be set to start whenever the server has started.

Installing as a Windows Service

  • Go to $CONTINUUM_HOME/bin/ and run the following command:
    continuum.bat install
  • Edit the Apache Continuum service
    • To see the services that are on your computer go to Start|Run and enter services.msc.
  • Select the Startup Type
  • Go to the Log On tab and select a real user. A real user is required because you'll need a home directory for Maven repository and some other things
  • Validate your changes

Installing as a Linux Service

Since the Continuum Linux script bin/continuum understands the same arguments as Linux boot scripts, there is no need to write a particular startup script to add Continuum to the Linux boot process. All you need to do, as root, is:

ln -s /usr/local/continuum-[VERSION]/bin/continuum /etc/init.d/continuum

This will allow you to run service continuum start and other commands.

To have the service start on boot, follow the instructions below for your particular family of operating system.

On a Debian-based system

At this point you have Continuum ready to be symlinked from different runlevels. Debian GNU/Linux comes with a very handy utility to create these links, just run as root:

update-rc.d continuum defaults 80

If you run this command, you will see something like this:

 Adding system startup for /etc/init.d/continuum ...
   /etc/rc0.d/K80continuum -> ../init.d/continuum
   /etc/rc1.d/K80continuum -> ../init.d/continuum
   /etc/rc6.d/K80continuum -> ../init.d/continuum
   /etc/rc2.d/S80continuum -> ../init.d/continuum
   /etc/rc3.d/S80continuum -> ../init.d/continuum
   /etc/rc4.d/S80continuum -> ../init.d/continuum
   /etc/rc5.d/S80continuum -> ../init.d/continuum

What you see is the symlinks that would be created.

On a RedHat-based system

Configuring Continuum on a RedHat-based system (like Fedora Core) is slightly different. Instead of running update-rc.d, you need to add a new service using the chkconfig command.

chkconfig --add continuum
chkconfig continuum on

Installing as a Mac OS X Service

On OS X, you can use launchd to run a service. Create the following as root in /Library/LaunchDaemons/org.apache.continuum.plist:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>org.apache.continuum</string>
    <key>ProgramArguments</key>
    <array>
        <string>/Applications/Continuum/apache-continuum-1.4.2/bin/continuum</string>
        <string>console</string>
    </array>
    <key>Disabled</key>
    <false/>
    <key>RunAtLoad</key>
    <true/>
    <key>UserName</key>
    <string>continuum</string>
    <key>StandardOutPath</key>
    <string>/Applications/Continuum/apache-continuum-1.4.2/logs/launchd.log</string>
    <!-- Optional - store data separate from installation -->
    <key>EnvironmentVariables</key>
    <dict>
      <key>CONTINUUM_BASE</key>
      <string>/Users/continuum/Library/Continuum</string>
    </dict>
    <!-- Optional: force it to keep running
    <key>KeepAlive</key>
    <true/>
    -->
</dict>
</plist>

To install the service, run the following:

$ sudo chown root:wheel /Library/LaunchDaemons/org.apache.continuum.plist
$ sudo launchctl load -w /Library/LaunchDaemons/org.apache.continuum.plist

Start and stop the service with:

$ sudo launchctl start org.apache.continuum.plist
$ sudo launchctl stop org.apache.continuum.plist

To uninstall the service:

$ sudo launchctl unload -w /Library/LaunchDaemons/org.apache.continuum.plist

You can follow the same steps to install build agents as a service by replacing the appropriate paths, and changing org.apache.continuum to org.apache.continuum.buildagent in the label and plist filename.

Installing with Puppet

If you use Puppet to manage your infrastructure, you can use a third-party Puppet module to install Continuum. This will take care of adding the required users, databases and configuration based on official release tarballs.