Atlassian’s tools for supporting software development are great but they aren’t really admin friendly to start with. For example FishEye & Crucible doesn’t ship with scripts to start it at system boot time but with the help of Atlassian’s Wiki, sysadmin tasks and scripts you can run it as a normal service. First we create a dedicated user for crucible and second we add a new service for it. I have done this on CentOS 5.7 x86_64.
Setting up the service account
As the root user, create a separate “FishEye & Crucible” service account at root shell:
# useradd -c "FishEye & Crucible service account" -d /home/crucible -m crucible
To make it easier for this to work also after FishEye & Crucible upgrades we create a symbolic link to the latest version (modify “/opt/fecru” to match your deployment).
# ln -s /opt/fecru/fecru-2.7.15 /opt/fecru/latest
Then, ensure that this user is the filesystem owner of the FishEye & Crucible instance (modify “/opt/fecru” to match your deployment).
# chown -R crucible:crucible /opt/fecru
Running Crucible as a crucible user
Save the following script to /etc/init.d/crucible. Be sure to edit the FISHEYE_HOME value to the location where your FishEye/Crucible instance resides:
#!/bin/bash # RUN_AS: The user to run fisheye & crucible as. Its recommended that you create a separate user account for security reasons RUN_AS=crucible # FISHEYE_HOME: The path to the FishEye & Crucible installation. Its recommended to create a symbolic link to the latest version so the process will still work after upgrades. FISHEYE_HOME="/opt/fecru/latest" # FISHEYE_INST: The path where the data itself will be stored. export FISHEYE_INST="/opt/fecru/fecru-data" fisheyectl() { if [ "x$USER" != "x$RUN_AS" ]; then # If running without FISHEYE_INST # su - "$RUN_AS" -c "$FISHEYE_HOME/bin/fisheyectl.sh $1" su - "$RUN_AS" -c "FISHEYE_INST=$FISHEYE_INST $FISHEYE_HOME/bin/fisheyectl.sh $1" else "$FISHEYE_HOME/bin/fisheyectl.sh $1" fi } case "$1" in start) fisheyectl start ;; stop) fisheyectl stop ;; restart) fisheyectl stop sleep 10 fisheyectl start ;; *) echo "Usage: $0 {start|stop|restart}" esac exit 0
After saving the script, modify it’s permissions so that it can be executed:
# chmod 755 /etc/init.d/crucible
Running Crucible as a service
Now that we have an init script we can add it as a service and be able to configure the system to run the script on startup (more precisely, ensure that Crucible runs in runlevels 3, 4 and 5):
chkconfig --add crucible chkconfig crucible on
Verify that the script has been installed correctly:
# chkconfig --list crucible
After this has been done you can manually start or stop the service by using these commands:
service crucible stop service crucible start
And you’re done.
Leave a Reply