diff --git a/jenkins/RO/start_build b/jenkins/RO/start_build index 4c9adfcee93f3c72ae5fd36c48783b8ba7d22743..c711cd7bd4e3ad0b168eac209c0ae4aef91b1255 100755 --- a/jenkins/RO/start_build +++ b/jenkins/RO/start_build @@ -25,36 +25,9 @@ OSM_JENKINS=$(dirname $HERE) # SET YOU MDG repository name here export OSM_MDG=RO OSM_load_config +OSM_git_checkout "$@" -# Updates all the branches in the local repo (clones if it does not exist) -if [ -d $OSM_MDG ]; then - INFO "reusing existing workspace" - cd $OSM_MDG - git pull --all - #git checkout master #to make sure that we are in the right branch before pulling the code - #git pull -else - INFO "cloning MDG $OSM_MDG from $OSM_GIT_URL/$OSM_MDG" - git clone $OSM_GIT_URL/$OSM_MDG - cd $OSM_MDG - for remote in `git branch -r`; do git branch --track ${remote#origin/} $remote; done -fi - -if [ $# -gt 0 ]; then - if [ "$1" = "checkout" ]; then - INFO "Code to compile: '$2'" - git checkout $2 - else - INFO "Code to compile: gerrit refspec '$1', commit-id: '$2'" - git fetch origin $1 || FATAL "git fetch origin '$1' didn't work" - git checkout -f $2 || FATAL "git checkout -f '$2' didn't work" - fi -else - INFO "Code to compile: master" - git checkout master -fi - INFO "starting build" INFO " cleaning .pyc" diff --git a/jenkins/SETTINGS b/jenkins/SETTINGS index 50bef0140d31c20afc10ac17f81a70ca21db8b7d..c0a2c1ff75a27ea640273235f435a74eaf639975 100644 --- a/jenkins/SETTINGS +++ b/jenkins/SETTINGS @@ -19,3 +19,12 @@ # # base url for all repositories OSM_GIT_URL=https://osm.etsi.org/gerrit/osm +# +# OSM_USE_LOCAL_DEVOPS +# +# this option disables the clone inside the +# the container and instead copies this directory tree +# into the container. Very useful for testing +# default is false +# +# OSM_USE_LOCAL_DEVOPS=true diff --git a/jenkins/SO/start_build b/jenkins/SO/start_build index 8094a39de0c760d609c79cd54ff5d7e9758c9b83..a672e149fc35d1443ee28d4e13986eca82833295 100755 --- a/jenkins/SO/start_build +++ b/jenkins/SO/start_build @@ -25,32 +25,9 @@ OSM_JENKINS=$(dirname $HERE) # SET YOU MDG repository name here export OSM_MDG=SO OSM_load_config +OSM_git_checkout "$@" - -# Here is an example for how to handle an incremental build -if [ -d $OSM_MDG ]; then - INFO "reusing existing workspace" - cd $OSM_MDG - git pull -else - INFO "cloning MDG $OSM_MDG from $OSM_GIT_URL/$OSM_MDG" - git clone $OSM_GIT_URL/$OSM_MDG - cd $OSM_MDG -fi - -if [ $# -gt 0 ]; then - if [ "$1" = "checkout" ]; then - INFO "Code to compile: '$2'" - git checkout $2 - else - INFO "Code to compile: gerrit refspec '$1', commit-id: '$2'" - git fetch origin $1 || FATAL "git fetch origin '$1' didn't work" - git checkout -f $2 || FATAL "git checkout -f '$2' didn't work" - fi -else - INFO "Code to compile: master" - git checkout master -fi +trap 'WARNING "INTERRUPT"; exit 1' INT INFO "starting build" make clean || FATAL "make clean failed" diff --git a/jenkins/UI/start_build b/jenkins/UI/start_build index af495e961cb5762c3d0a9359bfda378de37b0342..50b2e06d744c7f642da60f8ea37e62ba96e22260 100755 --- a/jenkins/UI/start_build +++ b/jenkins/UI/start_build @@ -25,41 +25,15 @@ OSM_JENKINS=$(dirname $HERE) # SET YOU MDG repository name here export OSM_MDG=UI OSM_load_config +OSM_git_checkout "$@" -# Here is an example for how to handle an incremental build -if [ -d $OSM_MDG ]; then - INFO "reusing existing workspace" - cd $OSM_MDG - git pull -else - INFO "cloning MDG $OSM_MDG from $OSM_GIT_URL/$OSM_MDG" - git clone $OSM_GIT_URL/$OSM_MDG - cd $OSM_MDG -fi - -if [ $# -gt 0 ]; then - if [ "$1" = "checkout" ]; then - INFO "Code to compile: '$2'" - git checkout $2 - else - INFO "Code to compile: gerrit refspec '$1', commit-id: '$2'" - git fetch origin $1 || FATAL "git fetch origin '$1' didn't work" - git checkout -f $2 || FATAL "git checkout -f '$2' didn't work" - fi -else - INFO "Code to compile: master" - git checkout master -fi - INFO "starting build" make clean || FATAL "Make clean failed" make -j16 || FATAL "Make failed" sudo make install || FATAL "Make install Failed" -RC=0 - -INFO "done, RC=$RC" -exit $RC +INFO "build done" +exit 0 diff --git a/jenkins/common/all_funcs b/jenkins/common/all_funcs index 10b7650bf31aca1efdf128a1dd9dafbd1c6b6c67..a84710873a1940b38010bdd80920859ab982e616 100644 --- a/jenkins/common/all_funcs +++ b/jenkins/common/all_funcs @@ -22,9 +22,7 @@ if [ -z "$OSM_JENKINS" ]; then export OSM_JENKINS=$(realpath $(dirname ${BASH_SOURCE[0]} )) fi -. ${OSM_JENKINS}/common/logging -INFO "logging sourced" -. ${OSM_JENKINS}/common/config -INFO "config sourced" -. ${OSM_JENKINS}/common/container -INFO "container sourced" +for file in logging config container git_functions; do + . ${OSM_JENKINS}/common/$file + INFO "$file sourced" +done diff --git a/jenkins/common/git_functions b/jenkins/common/git_functions new file mode 100644 index 0000000000000000000000000000000000000000..7856623b7c0e3516478df03b6fe813a1bd56efee --- /dev/null +++ b/jenkins/common/git_functions @@ -0,0 +1,40 @@ +#!/bin/bash + + +GIT() { + + CMD git "$@" +} + + +OSM_git_checkout() { + + # Updates all the branches in the local repo (clones if it does not exist) + if [ -d $OSM_MDG ]; then + INFO "reusing existing workspace" + cd $OSM_MDG + GIT pull --all + #git checkout master #to make sure that we are in the right branch before pulling the code + #git pull + else + INFO "cloning MDG $OSM_MDG from $OSM_GIT_URL/$OSM_MDG" + GIT clone $OSM_GIT_URL/$OSM_MDG + cd $OSM_MDG + for remote in `git branch -r`; do GIT branch --track ${remote#origin/} $remote; done + fi + + if [ $# -gt 0 ]; then + if [ "$1" = "checkout" ]; then + INFO "Code to compile: '$2'" + GIT checkout $2 + else + INFO "Code to compile: gerrit refspec '$1', commit-id: '$2'" + GIT fetch origin $1 || FATAL "git fetch origin '$1' didn't work" + GIT checkout -f $2 || FATAL "git checkout -f '$2' didn't work" + fi + else + INFO "Code to compile: master" + GIT checkout master + fi + +} diff --git a/jenkins/common/logging b/jenkins/common/logging index 3eb4a0d2074699dabdb63fd733366e18c543f633..a95b5633ba697c6f0128fabef9f550ab5f1c1b32 100644 --- a/jenkins/common/logging +++ b/jenkins/common/logging @@ -35,13 +35,13 @@ print_stack() { FATAL() { - echo "### $(date) ${FUNCNAME[1]}: FATAL error: $*" >&2 + echo -e "\n### $(date) ${FUNCNAME[1]}: FATAL error: $*" >&2 print_stack exit 1 } WARNING() { - echo "### $(date) ${FUNCNAME[1]}: WARNING error: $*" >&2 + echo -e "\n### $(date) ${FUNCNAME[1]}: WARNING error: $*" >&2 } INFO() { @@ -51,3 +51,11 @@ INFO() { DEBUG() { echo "# $(date) ${FUNCNAME[1]}: $*" >&2 } + +CMD() { + echo "# executing '$*' ..." + "$@" + rc=$? + echo "# .... '$*' done RC was $rc" + return $rc +} diff --git a/jenkins/template/start_build b/jenkins/template/start_build index 2bd9074b40b934444c5860794329cfb57a3685eb..43ef161088fff5e7d78d09ada234a4baffa4cd1b 100755 --- a/jenkins/template/start_build +++ b/jenkins/template/start_build @@ -25,28 +25,7 @@ OSM_JENKINS=$(dirname $HERE) # SET YOU MDG repository name here export OSM_MDG=XXXX OSM_load_config - - -# Here is an example for how to handle an incremental build -if [ -d $OSM_MDG ]; then - INFO "reusing existing workspace" - cd $OSM_MDG - git pull -else - INFO "cloning MDG $OSM_MDG from $OSM_GIT_URL/$OSM_MDG" - git clone $OSM_GIT_URL/$OSM_MDG - cd $OSM_MDG -fi - -# Gerrit arranges to call this script with two parameters -- the refspec and commit ID that needs to be built -if [ $# -gt 0 ]; then - INFO "Code to compile: gerrit refspec '$1', commit-id: '$2'" - git fetch origin $1 || FATAL "git fetch origin '$1' didn't work" - git checkout -f $2 || FATAL "git checkout -f '$2' didn't work" -else - INFO "Code to compile: master" - git checkout master -fi +OSM_git_checkout "$@" INFO "starting build" ### for start_build