diff options
-rwxr-xr-x | utils/jenkins-jnlp-connect.sh | 214 |
1 files changed, 102 insertions, 112 deletions
diff --git a/utils/jenkins-jnlp-connect.sh b/utils/jenkins-jnlp-connect.sh index 10ac50b0a..8c41620d6 100755 --- a/utils/jenkins-jnlp-connect.sh +++ b/utils/jenkins-jnlp-connect.sh @@ -11,13 +11,13 @@ #Monit setup script for opnfv jnlp slave connections test_firewall() { -echo "testing that the firewall is open for us at build.opnfv.org" -test=$(echo "blah"| nc -w 4 build.opnfv.org 57387 > /dev/null 2>&1; echo $?) -if [[ $test == 0 ]]; then - echo "Firewall is open for us at build.opnfv.org" - exit 0 -else -cat << EOF + echo "testing that the firewall is open for us at build.opnfv.org" + test=$(echo "blah"| nc -w 4 build.opnfv.org 57387 > /dev/null 2>&1; echo $?) + if [[ $test == 0 ]]; then + echo "Firewall is open for us at build.opnfv.org" + exit 0 + else + cat << EOF LF firewall not open, please send a report to helpdesk with your gpg key attached, or better yet upload it to the key servers. (I should be able to find it with gpg --search-keys your@company.email.com opnfv-helpdesk@rt.linuxfoundation.org Jenkins Home: $jenkinshome @@ -25,126 +25,118 @@ Jenkins User: $jenkinsuser Slave Name: $slave_name IP Address: $(curl -s http://icanhazip.com) EOF -exit 1 -fi + exit 1 + fi } main () { -dir=$(cd $(dirname $0); pwd) - -#tests -if [[ -z $jenkinsuser || -z $jenkinshome ]]; then - echo "jenkinsuser or home not defined, please edit this file to define it" - exit 1 -fi + dir=$(cd $(dirname $0); pwd) -if [[ -z $slave_name || -z $slave_secret ]]; then - echo "slave name or secret not defined, please edit this file to define it" - exit 1 -fi - -if [[ $(whoami) != "root" && $(whoami) != "$jenkinsuser" ]]; then - echo "This script must be run as user root or jenkins user" - exit 1 -fi + #tests + if [[ -z $jenkinsuser || -z $jenkinshome ]]; then + echo "jenkinsuser or home not defined, please edit this file to define it" + exit 1 + 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 + if [[ -z $slave_name || -z $slave_secret ]]; then + echo "slave name or secret not defined, please edit this file to define it" + 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/ -fi + if [[ $(whoami) != "root" && $(whoami) != "$jenkinsuser" ]]; then + echo "This script must be run as user root or jenkins user" + exit 1 + 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/ + fi -if [[ $skip_monit == true ]]; then - : -else - #check for monit - if [ $(which monit) ]; then - echo "monit installed" - else - if [ -n "$(command -v yum)" ]; then - echo "please install monit; eg: yum -y install monit" - exit 1 - elif [ -n "$(command -v apt-get)" ]; then - echo "please install monit eg: apt-get install -y monit" - exit 1 - else - echo "system not supported plese contact help desk" - exit 1 + if [[ $skip_monit != true ]]; then + #check for monit + if [ $(which monit) ]; then + echo "monit installed" + else + if [ -n "$(command -v yum)" ]; then + echo "please install monit; eg: yum -y install monit" + exit 1 + elif [ -n "$(command -v apt-get)" ]; then + echo "please install monit; eg: apt-get install -y monit" + exit 1 + else + echo "system not supported plese contact help desk" + exit 1 + fi + fi fi - fi -fi -makemonit () { -echo "Writing the following as monit config:" -cat << EOF | tee $monitconfdir/jenkins + makemonit () { + echo "Writing the following as monit config:" + cat << EOF | tee $monitconfdir/jenkins check process jenkins with pidfile /var/run/$jenkinsuser/jenkins_jnlp_pid start program = "/usr/bin/sudo -u $jenkinsuser /bin/bash -c 'cd $dir; export started_monit=true; $0 $@'" stop program = "/bin/bash -c '/bin/kill \$(/bin/cat /var/run/$jenkinsuser/jenkins_jnlp_pid)'" EOF -} + } -if [[ -f $monitconfdir/jenkins ]]; then - #test for diff - if [[ "$(diff $monitconfdir/jenkins <(echo "\ + 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 $dir; export started_monit=true; $0 $@'\" stop program = \"/bin/bash -c '/bin/kill \$(/bin/cat /var/run/$jenkinsuser/jenkins_jnlp_pid)'\"\ ") )" ]]; then - echo "Updating monit config..." - makemonit $@ - fi -else - makemonit $@ -fi - + echo "Updating monit config..." + 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 + 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 [[ -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; + 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 - + echo "java connection process found and running already running quitting." + exit 1 fi -fi - -if [[ $run_in_foreground == true ]]; then - $connectionstring -else - exec $connectionstring & - echo $! > /var/run/$jenkinsuser/jenkins_jnlp_pid -fi + fi + if [[ $run_in_foreground == true ]]; then + $connectionstring + else + exec $connectionstring & + echo $! > /var/run/$jenkinsuser/jenkins_jnlp_pid + 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 + 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() { -cat << EOF + cat << EOF jenkins-jnlp-connect.sh configures monit to keep slave connection up Checks for new versions of slave.jar @@ -162,31 +154,29 @@ usage: $0 [OPTIONS] -f test firewall Example: $0 -j /home/jenkins/ -u jenkins -n lab1 -s 727fdefoofoofoofoofoofoofof800 - EOF -exit 1 - + exit 1 } -if [[ -z "$@" ]]; then usage +if [[ -z "$@" ]]; then + usage fi - while getopts "j:u:n:s:htf" OPTION do - case $OPTION in - j ) jenkinshome="$OPTARG" ;; - u ) jenkinsuser="$OPTARG" ;; - n ) slave_name="$OPTARG" ;; - s ) slave_secret="$OPTARG";; - h ) usage; exit;; - t ) started_monit=true - skip_monit=true - run_in_foreground=true ;; - f ) test_firewall ;; - \? ) echo "Unknown option: -$OPTARG" >&2; exit 1;; - esac + case $OPTION in + j ) jenkinshome="$OPTARG" ;; + u ) jenkinsuser="$OPTARG" ;; + n ) slave_name="$OPTARG" ;; + s ) slave_secret="$OPTARG";; + h ) usage ;; + t ) started_monit=true + skip_monit=true + run_in_foreground=true ;; + f ) test_firewall ;; + \? ) echo "Unknown option: -$OPTARG" >&2; exit 1;; + esac done connectionstring="java -jar slave.jar -jnlpUrl https://build.opnfv.org/ci/computer/"$slave_name"/slave-agent.jnlp -secret "$slave_secret" -noCertificateCheck " |