300306f77da926e99c33617aec3e70919fe6fdfa
[releng.git] / build.sh
1 #!/bin/bash
2 # SPDX-license-identifier: Apache-2.0
3 ##############################################################################
4 # Copyright (c) 2016 Ericsson AB and others.
5 # Copyright (c) 2016 Enea AB.
6 # All rights reserved. This program and the accompanying materials
7 # are made available under the terms of the Apache License, Version 2.0
8 # which accompanies this distribution, and is available at
9 # http://www.apache.org/licenses/LICENSE-2.0
10 ##############################################################################
11 set -o errexit
12 set -o nounset
13 set -o pipefail
14
15 echo "Host info: $(hostname) $(hostname -I)"
16
17 cd $WORKSPACE
18
19 # Armband requires initializing git submodules (e.g. for Fuel's clean_cache.sh)
20 make submodules-init
21
22 # remove the expired items from cache
23 test -f $WORKSPACE/ci/clean_cache.sh && $WORKSPACE/ci/clean_cache.sh $CACHE_DIRECTORY
24
25 LATEST_ISO_PROPERTIES=$WORKSPACE/latest.iso.properties
26 if [[ "$JOB_NAME" =~ "daily" ]]; then
27     # check to see if we already have an artifact on artifacts.opnfv.org
28     # for this commit during daily builds
29     echo "Checking to see if we already built and stored Armband Fuel ISO for this commit"
30
31     curl -s -o $LATEST_ISO_PROPERTIES http://$GS_URL/latest.properties 2>/dev/null
32 fi
33
34 # get metadata of latest ISO
35 if grep -q OPNFV_GIT_SHA1 $LATEST_ISO_PROPERTIES 2>/dev/null; then
36     LATEST_ISO_SHA1=$(grep OPNFV_GIT_SHA1 $LATEST_ISO_PROPERTIES | cut -d'=' -f2)
37     LATEST_ISO_URL=$(grep OPNFV_ARTIFACT_URL $LATEST_ISO_PROPERTIES | cut -d'=' -f2)
38 else
39     LATEST_ISO_SHA1=none
40 fi
41
42 # get current SHA1
43 CURRENT_SHA1=$(git rev-parse HEAD)
44
45 # set FORCE_BUILD to false for non-daily builds
46 FORCE_BUILD=${FORCE_BUILD:-false}
47
48 if [[ "$CURRENT_SHA1" == "$LATEST_ISO_SHA1" && "$FORCE_BUILD" == "false" ]]; then
49     echo "***************************************************"
50     echo "   An ISO has already been built for this commit"
51     echo "   $LATEST_ISO_URL"
52     echo "***************************************************"
53 else
54     echo "This commit has not been built yet or forced build! Proceeding with the build."
55     /bin/rm -f $LATEST_ISO_PROPERTIES
56     echo
57 fi
58
59 # log info to console
60 echo "Starting the build of Armband $INSTALLER_TYPE. This could take some time..."
61 echo "-----------------------------------------------------------"
62 echo
63
64 # create the cache directory if it doesn't exist
65 mkdir -p $CACHE_DIRECTORY
66
67 # set OPNFV_ARTIFACT_VERSION
68 if [[ "$JOB_NAME" =~ "merge" ]]; then
69     echo "Building Fuel ISO for a merged change"
70     export OPNFV_ARTIFACT_VERSION="gerrit-$GERRIT_CHANGE_NUMBER"
71     echo "Not supported"
72     exit 1
73 else
74     export OPNFV_ARTIFACT_VERSION=$(date -u +"%Y-%m-%d_%H-%M-%S")
75 fi
76
77 NOCACHE_PATTERN="verify: no-cache"
78 if [[ "$JOB_NAME" =~ "verify" && "$GERRIT_CHANGE_COMMIT_MESSAGE" =~ "$NOCACHE_PATTERN" ]]; then
79     echo "The cache will not be used for this build!"
80     NOCACHE_ARG="-f P"
81 fi
82 NOCACHE_ARG=${NOCACHE_ARG:-}
83
84 # start the build
85 cd $WORKSPACE/ci
86 ./build.sh -v $OPNFV_ARTIFACT_VERSION $NOCACHE_ARG -c file://$CACHE_DIRECTORY $BUILD_DIRECTORY
87
88 # list the build artifacts
89 ls -al $BUILD_DIRECTORY
90
91 # save information regarding artifact into file
92 (
93     echo "OPNFV_ARTIFACT_VERSION=$OPNFV_ARTIFACT_VERSION"
94     echo "OPNFV_GIT_URL=$(git config --get remote.origin.url)"
95     echo "OPNFV_GIT_SHA1=$(git rev-parse HEAD)"
96     echo "OPNFV_ARTIFACT_URL=$GS_URL/opnfv-$OPNFV_ARTIFACT_VERSION.iso"
97     echo "OPNFV_BUILD_URL=$BUILD_URL"
98 ) > $WORKSPACE/opnfv.properties
99
100 echo
101 echo "--------------------------------------------------------"
102 echo "Done!"