Merge branch 'v2.0'
[osm/devops.git] / jenkins / system / start_build
1 #!/bin/bash
2 #   Copyright 2017
3 #
4 #   Licensed under the Apache License, Version 2.0 (the "License");
5 #   you may not use this file except in compliance with the License.
6 #   You may obtain 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,
12 #   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 #   See the License for the specific language governing permissions and
14 #   limitations under the License.
15 #
16 # 01 May 2017 -- Michael Marchetti -- adapted from template
17 #
18
19 HERE=$(realpath $(dirname $0))
20 OSM_JENKINS=$(dirname $HERE)
21 . $OSM_JENKINS/common/all_funcs
22 . $OSM_JENKINS/common/install_common
23
24 INFO "Installing packages"
25 apt-get update
26
27 INFO "Configuring LXD"
28 # ZFS doesn't work inside a nested container. ZFS should be configured in the host LXD.
29 lxd init --auto
30 lxd waitready
31 systemctl stop lxd-bridge
32 systemctl --system daemon-reload
33 cat <<EOF > /etc/default/lxd-bridge
34 USE_LXD_BRIDGE="true"
35 LXD_BRIDGE="lxdbr0"
36 UPDATE_PROFILE="true"
37 LXD_CONFILE=""
38 LXD_DOMAIN="lxd"
39 LXD_IPV4_ADDR="10.44.126.1"
40 LXD_IPV4_NETMASK="255.255.255.0"
41 LXD_IPV4_NETWORK="10.44.126.1/24"
42 LXD_IPV4_DHCP_RANGE="10.44.126.2,10.44.126.254"
43 LXD_IPV4_DHCP_MAX="252"
44 LXD_IPV4_NAT="true"
45 LXD_IPV6_ADDR=""
46 LXD_IPV6_MASK=""
47 LXD_IPV6_NETWORK=""
48 LXD_IPV6_NAT="false"
49 LXD_IPV6_PROXY="false"
50 EOF
51
52 systemctl enable lxd-bridge
53 systemctl start lxd-bridge
54
55 apt-get install -y python-pip python python-pycurl charm-tools python-pytest
56
57 apt install -y python-osmclient
58
59 export OSM_USE_LOCAL_DEVOPS=true
60 devops/installers/install_osm.sh --test $*
61 RC=$?
62
63 # workaround.  for upload packages, lxdbr0 needs to be promiscuous
64 # as the upload calls back to the UI server so the lxdbr0 needs
65 # to operate as a bridge
66 ifconfig lxdbr0 promisc
67
68 if [ $RC == 0 ]; then
69    # success. find all the resulting containers
70    . devops/installers/export_ips
71
72    TO_ADD="export OSM_HOSTNAME=$SO_CONTAINER_IP"
73    grep -q OSM_HOSTNAME ~/.bashrc && sed -i "s/.*OSM_HOSTNAME.*/$TO_ADD/" ~/.bashrc || echo -e "$TO_ADD\n$(cat ~/.bashrc)" > ~/.bashrc
74    TO_ADD="export OSM_RO_HOSTNAME=$RO_CONTAINER_IP"
75    grep -q OSM_RO_HOSTNAME ~/.bashrc && sed -i "s/.*OSM_RO_HOSTNAME.*/$TO_ADD/" ~/.bashrc || echo -e "$TO_ADD\n$(cat ~/.bashrc)" > ~/.bashrc
76 fi
77
78 INFO "done, RC=$RC"
79 exit $RC