summaryrefslogtreecommitdiff
path: root/mason/mason.sh
blob: dba99dfa25b6d634c5475374d5bd3ababd61afca (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
#!/bin/sh

# Load OpenStack credentials
if [ -f "/etc/os.conf" ]; then
    . /etc/os.conf
fi

set -e
set -x

# Load our deployment config
. /etc/mason.conf

if [ ! -e ws ]; then
    morph init ws
fi
cd ws

definitions_repo="$DEFINITIONS_REF"/"$UPSTREAM_TROVE_ADDRESS"/baserock/baserock/definitions
if [ ! -e "$definitions_repo" ]; then
    morph checkout git://"$UPSTREAM_TROVE_ADDRESS"/baserock/baserock/definitions "$DEFINITIONS_REF"
    cd "$definitions_repo"
    git config user.name "$TROVE_ID"-mason
    git config user.email "$TROVE_ID"-mason@$(hostname)
else
    cd "$definitions_repo"
    SHA1_PREV="$(git rev-parse HEAD)"
fi

if ! git remote update origin; then
    echo ERROR: Unable to contact trove
    exit 42
fi
git clean -fxd
git reset --hard origin/"$DEFINITIONS_REF"

SHA1="$(git rev-parse HEAD)"

if [ -f "$HOME/success" ] && [ "$SHA1" = "$SHA1_PREV" ]; then
    echo INFO: No changes to "$DEFINITIONS_REF", nothing to do
    exit 33
fi

rm -f "$HOME/success"

echo INFO: Mason building: $DEFINITIONS_REF at $SHA1

if ! "scripts/release-build" --no-default-configs \
        --trove-host "$UPSTREAM_TROVE_ADDRESS" \
        --artifact-cache-server "http://$ARTIFACT_CACHE_SERVER:8080/" \
        --controllers "$DISTBUILD_ARCH:$DISTBUILD_CONTROLLER_ADDRESS" \
        "$BUILD_CLUSTER_MORPHOLOGY"; then
    echo ERROR: Failed to build release images
    echo Build logs for chunks:
    find builds -type f -exec echo {} \; -exec cat {} \;
    exit 1
fi

releases_made="$(cd release && ls | wc -l)"
if [ "$releases_made" = 0 ]; then
    echo ERROR: No release images created
    exit 1
else
    echo INFO: Created "$releases_made" release images
fi

if [ "$TEST_INFRASTRUCTURE_TYPE" = "openstack" ]; then
    "scripts/release-test-os" \
        --deployment-host "$DISTBUILD_ARCH":"$MASON_TEST_HOST" \
        --trove-host "$UPSTREAM_TROVE_ADDRESS" \
        --trove-id "$TROVE_ID" \
        --net-id "$OPENSTACK_NETWORK_ID" \
        "$BUILD_CLUSTER_MORPHOLOGY"
elif [ "$TEST_INFRASTRUCTURE_TYPE" = "kvmhost" ]; then
    "scripts/release-test" \
        --deployment-host "$DISTBUILD_ARCH":"$MASON_TEST_HOST" \
        --trove-host "$UPSTREAM_TROVE_ADDRESS" \
        --trove-id "$TROVE_ID" \
        "$BUILD_CLUSTER_MORPHOLOGY"
fi

"scripts/release-upload" --build-trove-host "$ARTIFACT_CACHE_SERVER" \
	--arch "$DISTBUILD_ARCH" \
	--log-level=debug --log="$HOME"/release-upload.log \
	--public-trove-host "$UPSTREAM_TROVE_ADDRESS" \
	--public-trove-username root \
	--public-trove-artifact-dir /home/cache/artifacts \
	--no-upload-release-artifacts \
	"$BUILD_CLUSTER_MORPHOLOGY"

echo INFO: Artifact upload complete for $DEFINITIONS_REF at $SHA1

touch "$HOME/success"