8402b67ee46f8e6ad0f3f903faefb6b893eaea22
[octopus.git] / ci / jenkins-slave.init
1 #!/bin/bash
2 ##############################################################################
3 # Copyright (c) 2015 Huawei Technologies Co.,Ltd.
4 # meimei@huawei.com
5 # All rights reserved. This program and the accompanying materials
6 # are made available under the terms of the Apache License, Version 2.0
7 # which accompanies this distribution, and is available at
8 # http://www.apache.org/licenses/LICENSE-2.0#
9 ##############################################################################
10 set -o errexit
11 set -o nounset
12 set -o pipefail
13
14 SLAVE_CONF="/etc/default/jenkins-slave"
15 if [ -f ${SLAVE_CONF} ]; then
16     . ${SLAVE_CONF}
17 else
18     echo "Fatal : Configuration file dosenot exist, details please refer to README."
19     exit
20 fi
21
22 if [ -z "${SLAVENAME}" ] || [ -z "${TOKEN}" ]
23 then
24     echo "Fatal : Lack of slavename and token"
25     exit
26 fi
27
28 JENKINS_HOME="/home/jenkins"
29 PID_FILE="${JENKINS_HOME}/slave.pid"
30 SLAVE_JAR="${JENKINS_HOME}/slave.jar"
31 SLAVE_JNLP="-jnlpUrl https://build.opnfv.org/ci/computer/${SLAVENAME}/slave-agent.jnlp"
32 USER="jenkins"
33 SLAVE_LOG="${JENKINS_HOME}/slave.log"
34 JAVA_BIN="/usr/bin/java"
35
36 usage ()
37 {
38 cat<<EOF
39 Usage: jenkins-slave {start|stop|restart}
40 EOF
41 }
42
43 start()
44 {
45     echo "Starting jenkins slave(${SLAVENAME})"
46     if ! start-stop-daemon --start -m -b -c ${USER} -p ${PID_FILE} \
47         --startas /bin/bash -- -c \
48         "exec ${JAVA_BIN}  -jar ${SLAVE_JAR} ${SLAVE_JNLP} -secret ${TOKEN} >>${SLAVE_LOG} 2>&1"
49     then
50         echo "Start jenkins slave failed!"
51     else
52         echo "DONE."
53     fi
54 }
55
56 stop()
57 {
58     echo "Stopping jenkins slave(${SLAVENAME})"
59     if ! start-stop-daemon --stop -p ${PID_FILE}
60     then
61         echo "Stop jenkins slave failed!"
62     else
63         echo "DONE."
64     fi
65     rm -f ${PID_FILE}
66 }
67
68 status()
69 {
70     set +e
71     pid=`ps -ef | grep "${SLAVE_JAR}" | grep -v 'grep' |  awk '{print $2}'`
72     set -e
73     if [ -z $pid ]
74     then
75         echo "jenkins slave is not running!"
76     else
77         echo "jenkins slave is running, pid is $pid"  
78     fi
79 }
80
81 if [ $# -gt 0 ]
82 then
83     OPTION=$1
84 else
85     echo "None valid argument!"
86     usage
87     exit 1
88 fi
89
90 case "$OPTION" in
91     start)
92         start
93     ;;
94     stop)
95         stop
96     ;;
97     restart)
98         stop
99         sleep 2
100         start
101     ;;
102     status)
103         status
104     ;;
105     *)
106         echo "$OPTION is not a valid argument!"
107     usage
108         exit 1
109     ;;
110 esac
111