Maven Continuum :: FAQ
Question Index
#How do I configure Continuum to use GMail as the SMTP server?
#What are some alternatives to Continuum?
#Can I run multiple Continuum instances on one server?
#How do I set up multiple Continuum instances as separate Windows services?
#Can I change the location of the log files for the Plexus runtime?
#Can I change the location of the log files in Tomcat?
#Why was my build cancelled?
#How do I fix out of memory errors?
#How do I unlock the admin account?
#How do I change the location of derby.log and the databases?
#Are passwords required?
#What is a 'Quiet Period' in a build schedule?
#How can I fix a corrupted system configuration?
#How can I modify the email templates?
#How can I specify the workspace in which builds are (checked-out and) built?
#How do I set up a weekly build schedule?
Answers
How do I configure Continuum to use GMail as the SMTP server?
In /path/to/continuum/conf/plexus.xml, use this:
<resource> <name>mail/Session</name> <type>javax.mail.Session</type> <properties> <property> <name>mail.smtp.host</name> <value>smtp.gmail.com</value> </property> <property> <name>mail.smtp.port</name> <value>465</value> </property> <property> <name>mail.smtp.auth</name> <value>true</value> </property> <property> <name>mail.smtp.user</name> <value>username@gmail.com</value> </property> <property> <name>password</name> <value>password</value> </property> <property> <name>mail.smtp.starttls.enable</name> <value>true</value> </property> <property> <name>mail.smtp.socketFactory.class</name> <value>javax.net.ssl.SSLSocketFactory</value> </property> </properties> </resource>
What are some alternatives to Continuum?
- Bamboo
- Cruise Control
- Hudson
- Vulcan http://code.google.com/p/vulcan/
- More here: http://docs.codehaus.org/display/DAMAGECONTROL/Continuous+Integration+Server+Feature+Matrix
Can I run multiple Continuum instances on one server?
Yes, just change the port in apps/continuum/conf/application.xml and the paths in the configuration. (Requires a restart).
IIRC, Continuum won't respect a change to the working directory for existing projects, it will still check them out in the old location. Until/unless this is fixed, be sure to make configuration changes before adding any projects, or delete them and re-add.
How do I set up multiple Continuum instances as separate Windows services?
TODO
Can I change the location of the log files for the Plexus runtime?
TODO
Can I change the location of the log files in Tomcat?
create a plexus.properties file in WEB-INF with the following content:
appserver.base=[full path to your tomcat installation dir]
this will stop continuum from creating an appserver.base dir and will force it to write the continuum.log into tomcat/logs
Why was my build cancelled?
org.apache.maven.continuum.execution.ContinuumBuildCancelledException: The build was cancelled
By default, builds are allowed to run for XX seconds. If your builds take longer, increase the value in the build definition.
How do I fix out of memory errors?
[INFO] ------------------------------------------------------------------------ [ERROR] FATAL ERROR [INFO] ------------------------------------------------------------------------ [INFO] Java heap space [INFO] ------------------------------------------------------------------------ [INFO] Trace java.lang.OutOfMemoryError: Java heap space [INFO] ------------------------------------------------------------------------
Continuum uses Maven behind the scenes, so set MAVEN_OPTS=-Xmx512m (adjust as necessary) for the user under which Continuum is running.
By default, JDK 1.5 uses 1/4 of the physical memory on the box. (Actually it's the lesser of 1/4 physical memory or 1GB, but few of us have a 4GB box. See: gc-ergonomics)
How do I unlock the admin account?
1. Restarting the application will unlock the admin account.
2. Log in with another account that has the "User Administrator" role, and unlock it. You do have another admin account, right?
3. Try editing the database directly.
4. If you don't mind losing all of your user accounts, stop Continuum and delete the continuum-1.1/data/users/database directory. You will be prompted to create the admin account again, and from there you can set up your users and permissions. Be sure to make at least one other account a user administrator this time.
How do I change the location of derby.log and the databases?
Set the derby.system.home System property, as described here
For Tomcat, this can be done by adding a setenv.sh script in $TOMCAT_HOME/bin with the contents:
export JAVA_OPTS=-Dderby.system.home=/path/to/derby-files
On Windows: a $TOMCAT_HOME/bin/setenv.bat file containing
set JAVA_OPTS=-Dderby.system.home=c:\path\to\derby-files
Are passwords required?
No, but only an administrator can create an account with no password.
Why won't Continuum send any email when running on Tomcat 5.5.20?
Tomcat 5.5.20 is missing the MailSessionFactory class (and a few others.) Until Tomcat 5.5.21 is released, either use Tomcat 5.5.17, or use the workaround explained in Bug 40668.
You may see entries similar to the following in Continuum's log files:
2006-12-23 15:09:23,281 http-8080-Processor25 ERROR Mailer - Unable to send message, subject Welcome to Maven Continuum org.codehaus.plexus.mailsender.MailSenderException: Can't get mail session for component 'java:comp/env/mail/Session'.
Caused by: javax.naming.NamingException: Could not create resource factory instance org.apache.naming.factory.MailSessionFactory
What is a 'Quiet Period' in a build schedule?
A length of time (in seconds) after a scm update, during which a scheduled build will not be started.
It is intended to prevent starting a build in mid-commit. (This is not relevant for Subversion.)
How can I fix a corrupted system configuration?
If Continuum fails to start up completely (e.g. no page found at localhost:8080/continuum), this might be due to a corrupt database. One possibility here is that the system configuration database table became corrupted through the insertion of more than one configuration. checking conf/wrapper.log should confirm this, with an error message like:
org.apache.maven.continuum.store.ContinuumStoreException: Database is corrupted. There are more than one systemConfiguration object.
Before reinstalling continumm and manually adding back all the users, builds, etc, try this:
1) shut down Continuum
2) use derby's "ij" program to attach to the database
3) delete the offending row(s) with an SQL command
Derby can be downloaded from http://db.apache.org/derby. An example of connecting to the database and removing a record is as follows:
> db-derby-10.2.2.0-bin/bin/ij
ij> connect 'jdbc:derby:/home/3rdptysw/default/continuum-1.0.3/apps/continuum/database';
ij> delete from sa.systemconfiguration where systemconfiguration_id=6;
ij> exit;
If you're lucky, this will do the trick.
How can I modify the email templates?
The email templates are in WEB-INF/lib/continuum-core-x.x.jar under the package org/apache/maven/continuum/notification/mail/templates. You must modify them directly in that jar (or extract them, change them and replace them in the same directory within the jar).
How can I specify the workspace in which builds are (checked-out and) built?
TODO
How do I set up a weekly build schedule?
To set up a weekly schedule, you must use ? in the day of the month field in addition to filling in the day of week field.
How do modify the database to unlock the admin account?
(contributed by Anoop Kumar)
Here are the steps to follow if you have forgotten the password of the only 'Continuum Admin' on your system. It assumes you have at least one other user whose password is known. This user will be promoted to the role of Continuum Admin. And then log in as this user and reset the actual Continuum Admin's password. This method does not require you to go through the error prone process of sha1 hashing of the password etc..
1. Install Derby db from http://db.apache.org/derby/derby_downloads.html
2. Set DERBY_HOME like: export DERBY_HOME=~/derby/db-derby-10.2.2.0-bin/
3. set classpath like this: export CLASSPATH=$DERBY_HOME/lib/derby.jar:$DERBY_HOME/lib/derbytools.jar
4. Ensure that continuum is shut down. I use kill <pid of continuum.>
5. Then run ij to start the derby database, like this: ~/derby/db- derby-10.2.2.0-bin/bin/ij
6. I got the ij> prompt.
7. At the ij> prompt, start the db, like this: connect 'jdbc:derby:/usr/local/continuum- 1.0.3/apps/continuum/database';
8. ij> connect 'jdbc:derby:/usr/local/continuum-1.0.3/apps/continuum/database';
ij> select * from sa.continuumuser;
9. Next modify the data using a simple sql, like this:
(Basically I am setting GROUP_ID_OID to 1 for a normal user using the account_id to identify the user. If the GROUP_ID_OID is set to 1 for a user, then that user becomes the Continuum Admin)
ij> describe sa.continuumuser;
COLUMN_NAME |TYPE_NAME|DEC&|NUM&|COLUM&|COLUMN_DEF|CHAR_OCTE&|IS_NULL&
------------------------------------------------------------------------------
ACCOUNT_ID |INTEGER |0 |10 |10 |NULL |NULL |NO
EMAIL |VARCHAR |NULL|NULL|255 |NULL |510 |YES
FULL_NAME |VARCHAR |NULL|NULL|255 |NULL |510 |YES
GROUP_ID_OID |INTEGER |0 |10 |10 |NULL |NULL |YES
GUEST |CHAR |NULL|NULL|1 |NULL |2 |NO
HASHED_PASSWORD|VARCHAR |NULL|NULL|255 |NULL |510 |YES
MODEL_ENCODING |VARCHAR |NULL|NULL|255 |NULL |510 |YES
USERNAME |VARCHAR |NULL|NULL|255 |NULL |510 |YES
8 rows selected
ij> UPDATE SA.CONTINUUMUSER set GROUP_ID_OID=1 where ACCOUNT_ID = 6;
1 row inserted/updated/deleted
ij> commit;
ij> exit;
10. Now start continuum and log in as the user (whose account_id = 6). This user is now a Continuum admin and has the capability to change the password for any Continuum user.
(You may want to repeat the above process to revert back the user's role to a normal role)