diff options
author | Michael Drake <michael.drake@codethink.co.uk> | 2014-08-05 14:52:57 +0000 |
---|---|---|
committer | Michael Drake <michael.drake@codethink.co.uk> | 2014-08-06 15:28:09 +0000 |
commit | 8867889800efcb321d0061893fe6092f8932c4d3 (patch) | |
tree | bf31499d6093dccbc8088a0d9446d60822638d80 /mason/mason.sh | |
parent | 06826f22ab72e31964b93055679acfd714879123 (diff) | |
download | definitions-8867889800efcb321d0061893fe6092f8932c4d3.tar.gz |
Add Mason scripts on top of distbuild system
The distbuild system can be configured to act as a CI controller.
Providing appropriate config makes it copy all the scripts and systemd
units out of the mason directory onto the target, such that it will
start building and testing the configured cluster morphology on boot.
Diffstat (limited to 'mason/mason.sh')
-rwxr-xr-x | mason/mason.sh | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/mason/mason.sh b/mason/mason.sh new file mode 100755 index 00000000..dfed71f7 --- /dev/null +++ b/mason/mason.sh @@ -0,0 +1,70 @@ +#!/bin/sh + +set -e +set -x + +# Load our deployment config +. /root/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.git "$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 + +git remote update origin +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 + +"scripts/release-build" --no-default-configs \ + --trove-host "$UPSTREAM_TROVE_ADDRESS" \ + --controllers "$DISTBUILD_ARCH:$DISTBUILD_CONTROLLER_ADDRESS" \ + "$BUILD_CLUSTER_MORPHOLOGY" + +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 + +"scripts/release-test" \ + --deployment-host "$DISTBUILD_ARCH":"$TEST_VM_HOST_SSH_URL" \ + --trove-host "$DISTBUILD_TROVE_ADDRESS" \ + --trove-id "$TROVE_ID" \ + "$BUILD_CLUSTER_MORPHOLOGY" + +"scripts/release-upload" --build-trove-host "$DISTBUILD_TROVE_ADDRESS" \ + --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" |