Bug Tracker YouTrack
20 February 2016
I've been using Redmine as help desk and bug tracker since it has all the features/plugins you could ask for for a help desk or a bug tracker. But tracking bugs and issues has changed lately. When fixing bugs, you need to put in your estimate so you will have a pretty good idea how much effort you are putting into it. This is probably one of the reasons why RedmineCRM premium plugins exists. The lack of planning tools in RedmineCRM pushed me further to use Acunote. This is hosted online and free for a team of 5 users but 5 is very
limiting. Acunote also lacks the tooling support you will get from Jira, FogBugz and the likes.
Since I don't need enterprise solution at the moment so I'll give YouTrack a try. It's free for the first 10 users so I actually doubled what Acunote is offering for free. As with Jira, FogBugz or Acunote, it has hosted solution too.
Downloading YouTrack
$ wget https://download.jetbrains.com/charisma/youtrack-6.0.12634.jar
HTTP request sent, awaiting response... 200 OK
Length: 111007822 (106M) [binary/octet-stream]
Saving to: ‘youtrack-6.0.12634.jar’
100%[======================================>] 111,007,822 4.93MB/s in 26s
Running YouTrack
You can run youtrack by executing this
$ java -Xmx1g -XX:MaxPermSize=250m -Djava.awt.headless=true -jar youtrack-6.0.12634.jar localhost:8112/youtrack
This will automatically open your browser to http://localhost:8112/youtrack. After adding the root account, you can start creating your first project.
NOTE: These scripts are optional.
/etc/init.d/youtrack
#! /bin/sh
### BEGIN INIT INFO
# Provides: youtrack
# Required-Start: $local_fs $remote_fs
# Required-Stop: $local_fs $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: initscript for youtrack
# Description: initscript for youtrack
### END INIT INFO
export HOME=/home/drmanalo
set -e
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
NAME=youtrack
OWNER=drmanalo
SCRIPT=/opt/$NAME/$NAME.sh
d_start() {
su $OWNER -l -c "$SCRIPT start"
}
d_stop() {
su $OWNER -l -c "$SCRIPT stop"
}
case "$1" in
start)
echo "Starting $NAME..."
d_start
;;
stop)
echo "Stopping $NAME..."
d_stop
;;
restart|force-reload)
echo "Restarting $NAME..."
d_stop
d_start
;;
*)
echo "Usage: sudo /etc/init.d/youtrack {start|stop|restart}" >&2
exit 1
;;
esac
exit 0
/opt/youtrack/youtrack.sh
#! /bin/sh
export HOME=/home/drmanalo
export JAVA_HOME=/opt/jdk/jdk1.8.0_05
NAME=youtrack
PORT=8112
INSTALL_FOLDER=/opt/$NAME
JAR=$INSTALL_FOLDER/`ls -Lt $INSTALL_FOLDER/*.jar | grep -o "$NAME-[^/]*.jar" | head -1`
LOG=$INSTALL_FOLDER/$NAME-$PORT.log
PID=$INSTALL_FOLDER/$NAME-$PORT.pid
d_start() {
if [ -f $PID ]; then
PID_VALUE=`cat $PID`
if [ ! -z "$PID_VALUE" ]; then
PID_VALUE=`ps ax | grep $PID_VALUE | grep -v grep | awk '{print $1}'`
if [ ! -z "$PID_VALUE" ]; then
exit 1;
fi
fi
fi
PREV_DIR=`pwd`
cd $INSTALL_FOLDER
exec $JAVA_HOME/bin/java -Xmx1g -jar $JAR $PORT >> $LOG 2>&1 &
echo $! > $PID
cd $PREV_DIR
}
d_stop() {
if [ -f $PID ]; then
PID_VALUE=`cat $PID`
if [ ! -z "$PID_VALUE" ]; then
PID_VALUE=`ps ax | grep $PID_VALUE | grep -v grep | awk '{print $1}'`
if [ ! -z "$PID_VALUE" ]; then
kill $PID_VALUE
WAIT_TIME=0
while [ `ps ax | grep $PID_VALUE | grep -v grep | wc -l` -ne 0 -a "$WAIT_TIME" -lt 2 ]
do
sleep 1
WAIT_TIME=$(expr $WAIT_TIME + 1)
done
if [ `ps ax | grep $PID_VALUE | grep -v grep | wc -l` -ne 0 ]; then
WAIT_TIME=0
while [ `ps ax | grep $PID_VALUE | grep -v grep | wc -l` -ne 0 -a "$WAIT_TIME" -lt 15 ]
do
sleep 1
WAIT_TIME=$(expr $WAIT_TIME + 1)
done
echo
fi
if [ `ps ax | grep $PID_VALUE | grep -v grep | wc -l` -ne 0 ]; then
kill -9 $PID_VALUE
fi
fi
fi
rm -f $PID
fi
}
case "$1" in
start)
d_start
;;
stop)
d_stop
;;
*)
echo "Usage: $0 {start|stop|restart}" >&2
exit 1
;;
esac
exit 0
YouTrack as service
$ sudo update-rc.d youtrack defaults
Adding system startup for /etc/init.d/youtrack ...
/etc/rc0.d/K20youtrack -> ../init.d/youtrack
/etc/rc1.d/K20youtrack -> ../init.d/youtrack
/etc/rc6.d/K20youtrack -> ../init.d/youtrack
/etc/rc2.d/S20youtrack -> ../init.d/youtrack
/etc/rc3.d/S20youtrack -> ../init.d/youtrack
/etc/rc4.d/S20youtrack -> ../init.d/youtrack
/etc/rc5.d/S20youtrack -> ../init.d/youtrack