jenkins-jnlp-connect.sh must be copied to /home/jenkins
[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
16 if [ -f ${SLAVE_CONF} ]
17 then
18     . ${SLAVE_CONF}
19 else
20     echo "Error : Configuration file ($SLAVE_CONF) does not exist, details please refer to README."
21     exit
22 fi
23
24 if [ -z "${SLAVENAME}" ] || [ -z "${TOKEN}" ]
25 then
26     echo "Error : Please define SLAVENAME and TOKEN values in the Configuration file ($SLAVE_CONF),  details please refer to README."
27     exit
28 fi
29
30 SLAVE_JNLP="-jnlpUrl https://build.opnfv.org/ci/computer/${SLAVENAME}/slave-agent.jnlp"
31 JENKINS_HOME="/home/jenkins"
32 SLAVE_JAR="${JENKINS_HOME}/slave.jar"
33 JENKINS_SLAVE_ROOTDIR="${JENKINS_HOME}/jenkins-slave"
34 PID_FILE="${JENKINS_SLAVE_ROOTDIR}/slave.pid"
35 SLAVE_LOG="${JENKINS_SLAVE_ROOTDIR}/slave.log"
36 USER="jenkins"
37 GROUP="jenkins"
38 JAVA_BIN="/usr/bin/java"
39
40 if [ ! -f ${SLAVE_JAR} ]
41 then
42     echo "Error : ${SLAVE_JAR} dosenot exist, details please refer to README."
43     exit
44 fi
45
46 [ -e ${JENKINS_SLAVE_ROOTDIR} ] || { mkdir ${JENKINS_SLAVE_ROOTDIR}; chown ${USER}:${GROUP} ${JENKINS_SLAVE_ROOTDIR};};
47 if [ ! -d ${JENKINS_SLAVE_ROOTDIR} ]
48 then
49     echo "Error : ${JENKINS_SLAVE_ROOTDIR} can not be created! Maybe there is a file with the same name of 'jenkins-slave'."
50     exit
51 fi
52
53 usage ()
54 {
55 cat<<EOF
56 Usage: jenkins-slave {start|stop|restart}
57 EOF
58 }
59
60 start()
61 {
62     echo "Starting jenkins slave(${SLAVENAME})"
63     if ! start-stop-daemon --start -m -b -c ${USER} -p ${PID_FILE} \
64         --startas /bin/bash -- -c \
65         "exec ${JAVA_BIN}  -jar ${SLAVE_JAR} ${SLAVE_JNLP} -secret ${TOKEN} >>${SLAVE_LOG} 2>&1"
66     then
67         echo "Start jenkins slave failed!"
68     else
69         echo "DONE."
70     fi
71 }
72
73 stop()
74 {
75     echo "Stopping jenkins slave(${SLAVENAME})"
76     if ! start-stop-daemon --stop -p ${PID_FILE}
77     then
78         echo "Stop jenkins slave failed!"
79     else
80         echo "DONE."
81     fi
82     rm -f ${PID_FILE}
83 }
84
85 status()
86 {
87     set +e
88     pid=`ps -ef | grep "${SLAVE_JAR}" | grep -v 'grep' |  awk '{print $2}'`
89     set -e
90     if [ -z $pid ]
91     then
92         echo "jenkins slave is not running!"
93     else
94         echo "jenkins slave is running, pid is $pid"
95     fi
96 }
97
98 if [ $# -gt 0 ]
99 then
100     OPTION=$1
101 else
102     echo "Please input your argument!"
103     usage
104     exit 1
105 fi
106
107 case "$OPTION" in
108     start)
109         start
110     ;;
111     stop)
112         stop
113     ;;
114     restart)
115         stop
116         sleep 2
117         start
118     ;;
119     status)
120         status
121     ;;
122     *)
123         echo "Error: $OPTION is not a valid argument"
124         usage
125         exit 1
126     ;;
127 esac
128