X-Git-Url: https://gerrit.opnfv.org/gerrit/gitweb?a=blobdiff_plain;f=utils%2Fjenkins-jnlp-connect.sh;h=cd81f29d3a8e59a8c78c2968b205c3b42eab2540;hb=c9aac428e09385a5893313a99b6af6652dafd216;hp=33463e15351a13ed51e425fd50a3ea0d61501273;hpb=90dbe41e705c6247f0171380f49873ac40a54eb1;p=releng.git diff --git a/utils/jenkins-jnlp-connect.sh b/utils/jenkins-jnlp-connect.sh index 33463e153..cd81f29d3 100755 --- a/utils/jenkins-jnlp-connect.sh +++ b/utils/jenkins-jnlp-connect.sh @@ -52,28 +52,17 @@ main () { fi if [[ $(whoami) != "root" ]]; then - if sudo -l | grep "requiretty"; then + if sudo -l | grep "requiretty" | grep -v "\!requiretty"; then echo "please comment out Defaults requiretty from /etc/sudoers" exit 1 fi fi - - if [ -d /etc/monit/conf.d ]; then - monitconfdir="/etc/monit/conf.d/" - elif [ -d /etc/monit.d ]; then - monitconfdir="/etc/monit.d" - else - echo "Could not determine the location of the monit configuration file." - echo "Make sure monit is installed." - exit 1 - fi - #make pid dir pidfile="/var/run/$jenkinsuser/jenkins_jnlp_pid" if ! [ -d /var/run/$jenkinsuser/ ]; then - mkdir /var/run/$jenkinsuser/ - chown $jenkinsuser:$jenkinsuser /var/run/$jenkinsuser/ + sudo mkdir /var/run/$jenkinsuser/ + sudo chown $jenkinsuser:$jenkinsuser /var/run/$jenkinsuser/ fi if [[ $skip_monit != true ]]; then @@ -92,58 +81,83 @@ main () { exit 1 fi fi - fi - makemonit () { - echo "Writing the following as monit config:" + if [ -d /etc/monit/conf.d ]; then + monitconfdir="/etc/monit/conf.d/" + elif [ -d /etc/monit.d ]; then + monitconfdir="/etc/monit.d" + else + echo "Could not determine the location of the monit configuration file." + echo "Make sure monit is installed." + exit 1 + fi + + chown=$(type -p chown) + mkdir=$(type -p mkdir) + + makemonit () { + echo "Writing the following as monit config:" cat << EOF | tee $monitconfdir/jenkins +check directory jenkins_piddir path /var/run/$jenkinsuser +if does not exist then exec "$mkdir -p /var/run/$jenkinsuser" +if failed uid $jenkinsuser then exec "$chown $jenkinsuser /var/run/$jenkinsuser" +if failed gid $jenkinsuser then exec "$chown :$jenkinsuser /var/run/$jenkinsuser" + check process jenkins with pidfile /var/run/$jenkinsuser/jenkins_jnlp_pid start program = "/usr/bin/sudo -u $jenkinsuser /bin/bash -c 'cd $jenkinshome; export started_monit=true; $0 $@' with timeout 60 seconds" stop program = "/bin/bash -c '/bin/kill \$(/bin/cat /var/run/$jenkinsuser/jenkins_jnlp_pid)'" +depends on jenkins_piddir EOF - } + } + + if [[ -f $monitconfdir/jenkins ]]; then + #test for diff + if [[ "$(diff $monitconfdir/jenkins <(echo "\ +check directory jenkins_piddir path /var/run/$jenkinsuser +if does not exist then exec \"$mkdir -p /var/run/$jenkinsuser\" +if failed uid $jenkinsuser then exec \"$chown $jenkinsuser /var/run/$jenkinsuser\" +if failed gid $jenkinsuser then exec \"$chown :$jenkinsuser /var/run/$jenkinsuser\" - if [[ -f $monitconfdir/jenkins ]]; then - #test for diff - if [[ "$(diff $monitconfdir/jenkins <(echo "\ check process jenkins with pidfile /var/run/$jenkinsuser/jenkins_jnlp_pid start program = \"/usr/bin/sudo -u $jenkinsuser /bin/bash -c 'cd $jenkinshome; export started_monit=true; $0 $@' with timeout 60 seconds\" -stop program = \"/bin/bash -c '/bin/kill \$(/bin/cat /var/run/$jenkinsuser/jenkins_jnlp_pid)'\"\ +stop program = \"/bin/bash -c '/bin/kill \$(/bin/cat /var/run/$jenkinsuser/jenkins_jnlp_pid)'\" +depends on jenkins_piddir\ ") )" ]]; then - echo "Updating monit config..." + echo "Updating monit config..." + makemonit $@ + fi + else makemonit $@ fi - else - makemonit $@ fi -if [[ $started_monit == "true" ]]; then - wget --timestamping https://build.opnfv.org/ci/jnlpJars/slave.jar && true - chown $jenkinsuser:$jenkinsuser slave.jar + if [[ $started_monit == "true" ]]; then + wget --timestamping https://build.opnfv.org/ci/jnlpJars/slave.jar && true + chown $jenkinsuser:$jenkinsuser slave.jar - if [[ -f /var/run/$jenkinsuser/jenkins_jnlp_pid ]]; then - echo "pid file found" - if ! kill -0 "$(/bin/cat /var/run/$jenkinsuser/jenkins_jnlp_pid)"; then - echo "no java process running cleaning up pid file" - rm -f /var/run/$jenkinsuser/jenkins_jnlp_pid; - else - echo "java connection process found and running already running quitting." - exit 1 + if [[ -f /var/run/$jenkinsuser/jenkins_jnlp_pid ]]; then + echo "pid file found" + if ! kill -0 "$(/bin/cat /var/run/$jenkinsuser/jenkins_jnlp_pid)"; then + echo "no java process running cleaning up pid file" + rm -f /var/run/$jenkinsuser/jenkins_jnlp_pid; + else + echo "java connection process found and running already running quitting." + exit 1 + fi fi - fi - if [[ $run_in_foreground == true ]]; then - $connectionstring + if [[ $run_in_foreground == true ]]; then + $connectionstring + else + exec $connectionstring & + echo $! > /var/run/$jenkinsuser/jenkins_jnlp_pid + fi else - exec $connectionstring & - echo $! > /var/run/$jenkinsuser/jenkins_jnlp_pid + echo "you are ready to start monit" + echo "eg: service monit start" + echo "example debug mode if you are having problems: /usr/bin/monit -Ivv -c /etc/monit.conf " + exit 0 fi -else - echo "you are ready to start monit" - echo "eg: service monit start" - echo "example debug mode if you are having problems: /usr/bin/monit -Ivv -c /etc/monit.conf " - exit 0 -fi } usage() { @@ -165,7 +179,8 @@ usage: $0 [OPTIONS] -t test the connection string by connecting without monit -f test firewall -Example: $0 -j /home/jenkins/ -u jenkins -n lab1 -s 727fdefoofoofoofoofoofoofof800 +Example: $0 -j /home/jenkins -u jenkins -n lab1 -s 727fdefoofoofoofoofoofoofof800 +note: a trailing slash on -j /home/jenkins will break the script EOF exit 1