ติดตั้ง Jenkins อีกตัวเพื่อจัดการ deploy application ตัวใหม่ที่กำลังพัฒนากันอยู่ ทำเป็น OS service เอาไว้ด้วย เวลา server มันถูกรีสตาร์ตมันจะได้กลับทำงานอยู่ตลอด
ตอนแรก project ที่พัฒนาอยู่ใช้ Ant build script ภายหลังเรามาเปลี่ยนเป็น Maven จึงไปปรับ Jenkins configuration จะให้ Jenkins เค้าติดตั้ง Apache Maven ให้ด้วย แต่ว่า check checkbox แล้วก็ยังใช้ไม่ได้ เค้าไม่ติดตั้งให้เลยต้องมาติดตั้ง maven command เองซะเลยดีกว่า
วิธีติดตั้ง maven ก็ไม่ซับซ้อน ไปโหลด binary distribution ที่เป็นไฟล์แบบ .tar.gz
มา
wget http://www-eu.apache.org/dist/maven/maven-3/3.5.0/binaries/apache-maven-3.5.0-bin.tar.gz
...
tar zxvf wget apache-maven-3.5.0-bin.tar.gz
mkdir /opt
sudo mv apache-maven-3.5.0 /opt/
ไฟล์ที่ใช้ทำเป็น service สร้างไว้ที่ /etc/init.d/jenkins-init
เนื้อหาในไฟล์เป็นแบบนี้
#!/bin/sh
[ -f /etc/default/jenkins-init ] && . /etc/default/jenkins-init
DESC="Jenkins CI Server"
NAME=jenkins
PIDFILE=/var/run/$NAME.pid
RUN_AS=vagrant
COMMAND="/usr/bin/java -- -jar /home/ubuntu/apps/jenkins.war"
d_start() {
start-stop-daemon --start --quiet --background --make-pidfile --pidfile $PIDFILE --chuid $RUN_AS --exec $COMMAND
}
d_stop() {
start-stop-daemon --stop --quiet --pidfile $PIDFILE
if [ -e $PIDFILE ]
then rm $PIDFILE
fi
}
case $1 in
start)
echo -n "Starting $DESC: $NAME"
d_start
echo "."
;;
stop)
echo -n "Stopping $DESC: $NAME"
d_stop
echo "."
;;
restart)
echo -n "Restarting $DESC: $NAME"
d_stop
sleep 1
d_start
echo "."
;;
*)
echo "usage: $NAME {start|stop|restart}"
exit 1
;;
esac
exit 0
ตรง /home/ubuntu/apps/
นี่ก็แล้วแต่ว่าจะเอาไว้ที่ไหนนะ อาจจะไม่เอาไว้ใน folder apps ก็ได้ แต่เราต้องเปลี่ยนใน script ให้ตรงกับที่มีไฟล์ jenkins.war อยู่จริงๆ
จะต้องเปลี่ยน mode ให้ execute ได้ด้วย
sudo chmod +x /etc/init.d/jenkins-init
ต่อไปสร้าง environment variable สำหรับการรันคำสั่ง mvn
ด้วย (เป็นไฟล์ที่มีการอ้างถึงใน script ด้านบนแล้ว)
sudo vi /etc/default/jenkins-init
เนื้อหาไฟล์ (JAVA_HOME แต่ละคนอาจจะแตกต่างจากนี้ ถ้าใน ubuntu ส่วนใหญ่แล้วจะอยู่ใต้ /usr/lib/jvm
)
export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
export M2_HOME=/opt/apache-maven
export MAVEN_HOME=/opt/apache-maven
export PATH=$M2_HOME/bin:$PATH
เป็นอันเสร็จเวลาเรา start,stop service จะใช้คำสั่งแบบนี้
sudo service jenkins-init start
และ sudo service jenkins-init stop
ตามลำดับ
ถ้าจะตรวจสอบว่า jenkins เห็น environment variable อะไรบ้างหรือเห็น M2_HOME
หรือยังให้ไปที่ {jenkins's URL}/systemInfo