ScAlAn

Howto check site working in the Jenkins pipeline

Task: Check site working (response code = 200) in the Jenkins pipeline step

Implementation sh script:

url='https://scalan.com'
attempts=5
timeout=10
online=false

echo "Checking status of $url."

i=1
while [ "$i" -le "$attempts" ]; do
  code=`curl -sL --connect-timeout 20 --max-time 30 -w "%{http_code}\\n" "$url" -o /dev/null`

  echo "Found code $code for $url."

  if [ "$code" = "200" ]; then
    echo "Website $url is online."
    online=true
    break
  else
    echo "Website $url seems to be offline. Waiting $timeout seconds."
    sleep $timeout
  fi
  i=$(( i + 1 ))
done

if $online; then
  echo "Monitor finished, website is online."
  exit 0
else
  echo "Monitor failed, website seems to be down."
  exit 1
fi

Jenkins piplene:

pipeline {
    agent any
//    environment {    }
    stages {
        stage('checkout') {
            steps {
                sh  '''
                    echo 'Checkout...'
                    # ...
                    '''
            }
        }
        stage('build') {
            steps {
                sh  '''
                    echo 'Build...'
                    # ...
                    '''
            }
        }
        stage('update') {
            steps {
                sh  '''
                    echo 'Update...'
                    # ...
                    '''
            }
        }
        stage('wait') {
            steps {
                sh  '''
                    echo 'Wait for update beanstalk application...'
                    sleep 2m
                    echo "Done..."
                    '''
            }
        }
        stage('check') {
            steps {
                sh  '''
                    echo 'Check site working...'
                    url='https://scalan.com'
                    attempts=5
                    timeout=10
                    online=false

                    echo "Checking status of $url."

                    i=1
                    while [ "$i" -le "$attempts" ]; do
                      code=`curl -sL --connect-timeout 20 --max-time 30 -w "%{http_code}\\n" "$url" -o /dev/null`

                      echo "Found code $code for $url."

                      if [ "$code" = "200" ]; then
                        echo "Website $url is online."
                        online=true
                        break
                      else
                        echo "Website $url seems to be offline. Waiting $timeout seconds."
                        sleep $timeout
                      fi
                      i=$(( i + 1 ))
                    done

                    echo "Done..."
                    if $online; then
                      echo "Monitor finished, website is online."
                      exit 0
                    else
                      echo "Monitor failed, website seems to be down."
                      exit 1
                    fi
                    '''
            }
        }
    }
}

Done.

Leave a Reply

Your email address will not be published. Required fields are marked *