blob: 3b85166fed7572d54df445e0ae520b7ebaa412d4 [file] [log] [blame]
tierno7d782ef2019-10-04 12:56:31 +00001#!/bin/bash
2
3##
4# Licensed under the Apache License, Version 2.0 (the "License"); you may
5# not use this file except in compliance with the License. You may obtain
6# a copy of the License at
7#
8# http://www.apache.org/licenses/LICENSE-2.0
9#
10# Unless required by applicable law or agreed to in writing, software
11# distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12# WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13# License for the specific language governing permissions and limitations
14# under the License.
15#
16# For those usages not covered by the Apache License, Version 2.0 please
17# contact with: nfvlabs@tid.es
18##
19
tierno72774862020-05-04 11:44:15 +000020[[ "$*" == *--help* ]] && echo \
21"This script tests docker build based on debian packages. It generates a docker image bases on Dockerfile-devops, " \
22"prints package information and if desired updates OSM RO docker with the generated image.
23Generated packages are stored at './temp' folder.
24Options:
25 --help show this help
26 --no-cache Use if found problems looking for packages
27 --update Use to update OSM, RO docker with this image" && exit 0
28
tierno366c2602020-07-10 10:52:56 +000029[[ "$*" == *--no-cache* ]] && no_cache="--no-cache" || no_cache=""
tierno72774862020-05-04 11:44:15 +000030[[ "$*" == *--update* ]] && update_osm="k8s" || update_osm=""
tierno7d782ef2019-10-04 12:56:31 +000031
32HERE=$(dirname $(readlink -f ${BASH_SOURCE[0]}))
33export RO_BASE=$(dirname $HERE)
34
35# clean
36docker rm -f ro_pkg 2>/dev/null && echo docker ro_pkg removed
37rm -rf $HERE/temp/*
tierno57dadcf2019-11-23 15:11:15 +000038find $RO_BASE -name "*.pyc" -exec rm {} ";"
tierno7d782ef2019-10-04 12:56:31 +000039mkdir -p $HERE/temp
40
tierno72774862020-05-04 11:44:15 +000041echo -e "\n\n[STAGE 1] Building dockerfile used for the package generation"
tierno7d782ef2019-10-04 12:56:31 +000042docker build $RO_BASE -f $RO_BASE/Dockerfile -t opensourcemano/ro_pkg
43sleep 2
44
tierno72774862020-05-04 11:44:15 +000045echo "[STAGE 1.1] Generating packages inside docker ro_pkg"
tierno7d782ef2019-10-04 12:56:31 +000046docker run -d --name ro_pkg opensourcemano/ro_pkg bash -c 'sleep 3600'
47docker cp $RO_BASE ro_pkg:/RO
48docker exec ro_pkg bash -c 'cd /RO; ./devops-stages/stage-build.sh'
49deb_files=`docker exec ro_pkg bash -c 'ls /RO/deb_dist/'`
50[ -z "$deb_files" ] && echo "No packages generated" >&2 && exit 1
51echo $deb_files
52
53echo -e "\n\n[STAGE 1.2] Print package information and copy to '$HERE/temp/'"
54# print package information and copy to "$HERE/temp/"
55for deb_file in $deb_files ; do
tierno72774862020-05-04 11:44:15 +000056 echo; echo; echo
57 echo $deb_file info:
58 echo "==========================="
59 docker cp ro_pkg:/RO/deb_dist/$deb_file $HERE/temp/
60 dpkg -I $HERE/temp/$(basename $deb_file)
tierno7d782ef2019-10-04 12:56:31 +000061done
62
63# docker rm -f ro_pkg
64echo -e "\n\n[STAGE 2] Building docker image opensourcemano/ro:py3_devops based on debian packages"
tierno72774862020-05-04 11:44:15 +000065docker build $HERE -f $HERE/Dockerfile-devops -t opensourcemano/ro:py3_devops $no_cache ||
tierno7d782ef2019-10-04 12:56:31 +000066 ! echo "error generating devops dockerfile" >&2 || exit 1
tierno72774862020-05-04 11:44:15 +000067
68[[ -z "$update_osm" ]] && exit 0
tierno7d782ef2019-10-04 12:56:31 +000069sleep 2
tierno7d782ef2019-10-04 12:56:31 +000070
71echo -e "\n\n[STAGE 3] Update service osm_ro with generated docker image"
tierno72774862020-05-04 11:44:15 +000072# try docker swarm. If fails try kebernetes
73if docker service update osm_ro --force --image opensourcemano/ro:py3_devops 2>/dev/null
74then
75 sleep 2
76 docker container prune -f
77elif kubectl -n osm patch deployment ro --patch \
78 '{"spec": {"template": {"spec": {"containers": [{"name": "ro", "image": "opensourcemano/ro:py3_devops"}]}}}}'
79then
80 kubectl -n osm scale deployment ro --replicas=0
81 kubectl -n osm scale deployment ro --replicas=1
82else
83 echo "Cannot update OSM" && exit 1
84fi
tierno7d782ef2019-10-04 12:56:31 +000085docker service logs osm_ro