Update Prometheus recording rules for NG-SA
[osm/devops.git] / tools / local-build.sh
index f471e03..9f872d2 100755 (executable)
 # limitations under the License.
 #######################################################################################
 
+APT_PROXY=""
 DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
 HTTPDDIR="$( cd "${HOME}/snap/qhttp/common" &> /dev/null && pwd )"
-HTTPPORT=11480
+HTTPPORT=8000
 KUBECFG="~/.osm/microk8s-config.yaml"
 NO_CACHE=""
 OPENSTACKRC="/var/snap/microstack/common/etc/microstack.rc"
@@ -30,6 +31,7 @@ function check_arguments(){
     while [ $# -gt 0 ] ; do
         case $1 in
             --debug) set -x ;;
+            --apt-proxy) APT_PROXY="$2" && shift ;;
             --help | -h) show_help && exit 0 ;;
             --httpddir) HTTPDIR="$2" && shift;;
             --install-local-registry) 'install_local_registry' ;;
@@ -67,8 +69,9 @@ same process as Jenkins.
 
 OPTIONS:
   --help                        display this help message
+  --apt-proxy                   provide an apt proxy to docker build steps
   --debug                       enable set -x for this script
-  --install-local-registry     install and enable Microk8s local registry on port 32000
+  --install-local-registry      install and enable Microk8s local registry on port 32000
   --install-microstack          install Microstack and configure to run robot tests
   --install-qhttpd              install QHTTPD as an HTTP server on port ${HTTPPORT}
   --kubecfg                     path to kubecfg.yaml (uses Charmed OSM by default)
@@ -85,6 +88,34 @@ OPTIONS:
   install-osm                   perform full installation of Charmed OSM from registry
   start-robot                   start the Robot test container and leave you at prompt
   update-install                update Charmed OSM with new module container
+
+A typical use could be the following:
+
+Let's assume that we have different repos cloned in the folder workspace:
+
+  cd workspace
+  git clone https://osm.etsi.org/gerrit/osm/devops
+  git clone https://osm.etsi.org/gerrit/osm/NBI
+  git clone https://osm.etsi.org/gerrit/osm/LCM
+  git clone "https://osm.etsi.org/gerrit/osm/RO
+  git clone "https://osm.etsi.org/gerrit/osm/common
+  git clone "https://osm.etsi.org/gerrit/osm/IM
+  git clone "https://osm.etsi.org/gerrit/osm/N2VC
+
+First we install a light HTTP server to serve the artifacts:
+
+  devops/tools/local-build.sh --install-qhttpd
+
+Then we generate the artifacts (debian packages) for the different repos: common, IM, N2VC, RO, LCM, NBI
+
+  devops/tools/local-build.sh --module common,IM,N2VC,RO,LCM,NBI stage-2
+
+Then new docker images are generated locally with the tag "devel" (e.g.: opensourcemano/lcm:devel):
+
+  devops/tools/local-build.sh --module RO,LCM,NBI stage-3
+
+Finally, the deployment of OSM will have to be updated to use the new docker images.
+
 EOF
 }
 
@@ -137,7 +168,7 @@ function install_microstack() {
 
 function install_qhttpd() {
     sudo snap install qhttp
-    EXISTING_PID=$(ps auxw | grep "http.server 11480" | grep -v grep | awk '{print $2}')
+    EXISTING_PID=$(ps auxw | grep "http.server $HTTPPORT" | grep -v grep | awk '{print $2}')
     if [ ! -z $EXISTING_PID ] ; then
         kill $EXISTING_PID
     fi
@@ -146,7 +177,7 @@ function install_qhttpd() {
 
 function stage_2() {
     print_section "Performing Stage 2"
-    MODULES="common devops IM LCM MON N2VC NBI NG-UI osmclient PLA POL RO tests"
+    MODULES="common devops IM LCM MON N2VC NBI NG-UI NG-SA osmclient PLA POL RO tests"
     if [ ! -z ${1} ] ; then
         POSSIBLE_MODULES=$(echo ${1} | sed "s/,/ /g")
         for MODULE in ${POSSIBLE_MODULES}; do
@@ -171,7 +202,12 @@ function stage_2() {
         print_section "Building ${MODULE}"
         cd ${MODULE}
         find . -name '*.deb' -exec rm -v {} \;
-        docker build ${NO_CACHE} -t ${MODULE,,}-stage2 .
+
+        BUILD_ARGS=""
+        if [ ! -z $APT_PROXY ] ; then
+            BUILD_ARGS="${BUILD_ARGS}--build-arg APT_PROXY=${APT_PROXY} "
+        fi
+        docker build ${NO_CACHE} ${BUILD_ARGS} -t ${MODULE,,}-stage2 .
 
         STAGES="stage-build.sh"
         if [ ! -z $TESTS ] ; then
@@ -217,6 +253,10 @@ function stage_3() {
     print_section "Performing Stage 3"
     MODULES=$(_find_module_dockerfile $1)
     BUILD_ARGS=""
+    if [ ! -z $APT_PROXY ] ; then
+        BUILD_ARGS="${BUILD_ARGS}--build-arg APT_PROXY=${APT_PROXY} "
+    fi
+
     HOSTIP=$(ip -4 addr show docker0 | grep -Po 'inet \K[\d.]+')
     for file in ~/snap/qhttp/common/*.deb ; do
         file=`basename ${file}`
@@ -359,7 +399,8 @@ EOF
         -v "$(pwd)/robot.etc.hosts":/etc/hosts \
         -v ~/.osm/microk8s-config.yaml:/root/.kube/config \
         -v "$(pwd)/clouds.yaml":/etc/openstack/clouds.yaml \
-        -v "$(pwd)/reports:"/robot-systest/reports \
+        -v "${HOME}/snap/qhttp/common"/robot-systest/reports \
+        -v "${HOME}/snap/qhttp/common:"/robot-systest/conformance-tests/reports \
         -v "${ROOTDIR}/tests/robot-systest/lib":${LOCAL_MOUNT_1} \
         -v "${ROOTDIR}/tests/robot-systest/resources":${LOCAL_MOUNT_2} \
         -v "${ROOTDIR}/tests/robot-systest/testsuite":${LOCAL_MOUNT_3} \