X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=tools%2Flocal-build.sh;h=ce686c8d707ab09bc6ccb160c393c07d54096cca;hb=a02b4e039b398572c4f73519ce99f8e85f454515;hp=f471e03cdd9ee431150d9af5c08f8609dee7ea9a;hpb=f0014df1d65e8a1de6cd784f690c31ca34f63047;p=osm%2Fdevops.git diff --git a/tools/local-build.sh b/tools/local-build.sh index f471e03c..ce686c8d 100755 --- a/tools/local-build.sh +++ b/tools/local-build.sh @@ -16,9 +16,10 @@ # 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 @@ -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} \