blob: 4115ffcc436479deb7e8c635a7207412f0b146bb (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
|
#!/bin/bash
# SPDX-license-identifier: Apache-2.0
##############################################################################
# Copyright (c) 2016 Ericsson AB and others.
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Apache License, Version 2.0
# which accompanies this distribution, and is available at
# http://www.apache.org/licenses/LICENSE-2.0
##############################################################################
set -o errexit
set -o nounset
set -o pipefail
trap cleanup_and_upload EXIT
function upload_logs() {
BIFROST_CONSOLE_LOG="${BUILD_URL}/consoleText"
BIFROST_GS_URL=${BIFROST_LOG_URL/http:/gs:}
# Make sure the old landing page is gone in case
# we break later on. We don't want to publish
# stale information.
# TODO: Maybe cleanup the entire $BIFROST_GS_URL directory
# before we upload the new data.
gsutil -q rm ${BIFROST_GS_URL}/index.html || true
echo "Uploading collected bifrost build logs to ${BIFROST_LOG_URL}"
if [[ -d ${WORKSPACE}/logs ]]; then
pushd ${WORKSPACE}/logs &> /dev/null
for x in *.log; do
echo "Compressing and uploading $x"
gsutil -q cp -Z ${x} ${BIFROST_GS_URL}/${x}
done
popd &> /dev/null
fi
echo "Generating the ${BIFROST_LOG_URL}/index.html landing page"
cat > ${WORKSPACE}/index.html <<EOF
<html>
<h1>Build results for <a href=https://$GERRIT_NAME/#/c/$GERRIT_CHANGE_NUMBER/$GERRIT_PATCHSET_NUMBER>$GERRIT_NAME/$GERRIT_CHANGE_NUMBER/$GERRIT_PATCHSET_NUMBER</a></h1>
<h2>Job: <a href=${BUILD_URL}>$JOB_NAME</a></h2>
<ul>
<li><a href=${BIFROST_LOG_URL}/build_log.txt>build_log.txt</a></li>
EOF
if [[ -d ${WORKSPACE}/logs ]]; then
pushd ${WORKSPACE}/logs &> /dev/null
for x in *.log; do
echo "<li><a href=${BIFROST_LOG_URL}/${x}>${x}</a></li>" >> ${WORKSPACE}/index.html
done
popd &> /dev/null
fi
cat >> ${WORKSPACE}/index.html << EOF
</ul>
</html>
EOF
# Finally, download and upload the entire build log so we can retain
# as much build information as possible
echo "Uploading the final console output"
curl -s -L ${BIFROST_CONSOLE_LOG} > ${WORKSPACE}/build_log.txt
gsutil -q cp -Z ${WORKSPACE}/build_log.txt ${BIFROST_GS_URL}/build_log.txt
rm ${WORKSPACE}/build_log.txt
# Upload landing page
gsutil -q cp ${WORKSPACE}/index.html ${BIFROST_GS_URL}/index.html
rm ${WORKSPACE}/index.html
}
function fix_ownership() {
if [ -z "${JOB_URL+x}" ]; then
echo "Not running as part of Jenkins. Handle the logs manually."
else
# Make sure cache exists
[[ ! -d ${HOME}/.cache ]] && mkdir ${HOME}/.cache
sudo chown -R jenkins:jenkins $WORKSPACE
sudo chown -R jenkins:jenkins ${HOME}/.cache
fi
}
function cleanup_and_upload() {
original_exit=$?
fix_ownership
upload_logs
exit $original_exit
}
# check distro to see if we support it
if [[ ! "$DISTRO" =~ (trusty|centos7|suse) ]]; then
echo "Distro $DISTRO is not supported!"
exit 1
fi
# remove previously cloned repos
sudo /bin/rm -rf /opt/bifrost /opt/puppet-infracloud /opt/stack /opt/releng
# Fix up permissions
fix_ownership
# clone all the repos first and checkout the patch afterwards
sudo git clone https://git.openstack.org/openstack/bifrost /opt/bifrost
sudo git clone https://git.openstack.org/openstack-infra/puppet-infracloud /opt/puppet-infracloud
sudo git clone https://gerrit.opnfv.org/gerrit/releng /opt/releng
# checkout the patch
cd $CLONE_LOCATION
sudo git fetch $PROJECT_REPO $GERRIT_REFSPEC && sudo git checkout FETCH_HEAD
# combine opnfv and upstream scripts/playbooks
sudo /bin/cp -rf /opt/releng/prototypes/bifrost/* /opt/bifrost/
# place bridge creation file on the right path
sudo mkdir -p /opt/puppet-infracloud/files/elements/infra-cloud-bridge/static/opt
sudo cp /opt/puppet-infracloud/templates/bifrost/create_bridge.py.erb /opt/puppet-infracloud/files/elements/infra-cloud-bridge/static/opt/create_bridge.py
# replace bridge name
sudo sed -i s/"<%= @bridge_name -%>"/br_opnfv/g /opt/puppet-infracloud/files/elements/infra-cloud-bridge/static/opt/create_bridge.py
# cleanup remnants of previous deployment
cd /opt/bifrost
sudo -E ./scripts/destroy-env.sh
# provision 3 VMs; jumphost, controller, and compute
cd /opt/bifrost
sudo -E ./scripts/test-bifrost-deployment.sh
# list the provisioned VMs
cd /opt/bifrost
source env-vars
ironic node-list
virsh list
|