Note: The standalone version ships with Jetty 8, which requires Java 6.
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>
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.
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.
continuum.bat install
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.
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.
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
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.3-SNAPSHOT/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.3-SNAPSHOT/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.
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.