Adding NG-LCM charm
[osm/devops.git] / tools / local-build.sh
index 9c40272..7254bad 100755 (executable)
@@ -25,6 +25,7 @@ NO_CACHE=""
 OPENSTACKRC="/var/snap/microstack/common/etc/microstack.rc"
 REGISTRY="localhost:32000"
 ROOTDIR="$( cd "${DIR}/../../" &> /dev/null && pwd)"
+DEVEL_TAG="devel"
 OSM_TESTS_IMAGE_TAG="devel"
 
 function check_arguments(){
@@ -32,6 +33,7 @@ function check_arguments(){
         case $1 in
             --debug) set -x ;;
             --apt-proxy) APT_PROXY="$2" && shift ;;
+            --devel-tag) DEVEL_TAG="$2" && shift ;;
             --help | -h) show_help && exit 0 ;;
             --httpddir) HTTPDIR="$2" && shift;;
             --install-local-registry) 'install_local_registry' ;;
@@ -88,6 +90,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
 }
 
@@ -140,16 +170,16 @@ 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
-    qhttp -p ${HTTPPORT} &
+    nohup qhttp -p ${HTTPPORT} &
 }
 
 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
@@ -198,8 +228,12 @@ function stage_2() {
                 exit 1
             fi
         done
-
-        find . -name '*.deb' -exec mv -v {} ${HTTPDDIR}/ \;
+        for file in `find . -name '*.deb'` ; do
+            name=`basename ${file} | cut -d_ -f1`;
+            rm -v ~/snap/qhttp/common/${name}*
+            cp -v $file ~/snap/qhttp/common/${name}_$(date "+%H%M%S").deb
+            rm -v $file
+        done
     done
 }
 
@@ -232,7 +266,7 @@ function stage_3() {
     HOSTIP=$(ip -4 addr show docker0 | grep -Po 'inet \K[\d.]+')
     for file in ~/snap/qhttp/common/*.deb ; do
         file=`basename ${file}`
-        name=`echo ${file} | cut -d_ -f1 | sed "s/-/_/g"`;
+        name=`echo ${file} | cut -d_ -f1 | sed "s/-/_/g" | sed "s/.deb//"`;
         name=${name^^}_URL
         BUILD_ARGS="${BUILD_ARGS}--build-arg ${name}=http://$HOSTIP:${HTTPPORT}/$file "
         echo Added ${name} as http://$HOSTIP:${HTTPPORT}/$file
@@ -247,7 +281,7 @@ function stage_3() {
         print_section "Building ${MODULE}"
         cd ${MODULE}
         MODULE=${MODULE,,}
-        docker build ${NO_CACHE} -t opensourcemano/${MODULE}:devel ${BUILD_ARGS} .
+        docker build ${NO_CACHE} -t opensourcemano/${MODULE}:${DEVEL_TAG} ${BUILD_ARGS} .
         if [ $? -ne 0 ] ; then
         print_section "Failed to build ${MODULE}"
             exit 1
@@ -273,8 +307,8 @@ function local_registry_push() {
     fi
     for MODULE in ${MODULES} ; do
         MODULE=${MODULE,,}
-        docker tag opensourcemano/${MODULE}:devel ${REGISTRY}/opensourcemano/${MODULE}:devel
-        docker push ${REGISTRY}/opensourcemano/${MODULE}:devel
+        docker tag opensourcemano/${MODULE}:${DEVEL_TAG} ${REGISTRY}/opensourcemano/${MODULE}:${DEVEL_TAG}
+        docker push ${REGISTRY}/opensourcemano/${MODULE}:${DEVEL_TAG}
     done
 }
 
@@ -284,7 +318,7 @@ function install_osm() {
     if juju controllers 2>/dev/null| grep osm-vca ; then
         VCA="--vca osm-vca"
     fi
-    ./charmed_install.sh --registry localhost:32000  --tag devel ${VCA}
+    ./charmed_install.sh --registry localhost:32000  --tag ${DEVEL_TAG} ${VCA}
 }
 
 function start_robot() {
@@ -384,7 +418,7 @@ function update_osm_module() {
     for MODULE in ${MODULES} ; do
         MODULE=${MODULE,,}
         echo "Updating ${MODULE}"
-        juju attach-resource ${MODULE} image=localhost:32000/opensourcemano/${MODULE}:devel
+        juju attach-resource ${MODULE} ${MODULE}-image=localhost:32000/opensourcemano/${MODULE}:${DEVEL_TAG}
     done
 }