github.com/polydawn/docket@v0.5.4-0.20140630233848-90b70fb433da/goad (about) 1 #!/bin/bash -e 2 3 # Where is this script located? 4 DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" 5 cd "$DIR" 6 export GOPATH="$PWD"/.gopath/ 7 export BASEDIR="$PWD" 8 9 prefix="polydawn.net/hroot" 10 packages=() 11 packages+=("$prefix/crocker") 12 packages+=("$prefix/dex") 13 packages+=("$prefix/util") 14 packages+=("$prefix/conf") 15 16 17 function build { 18 git submodule update --init 19 go build -race -o hroot $prefix/main 20 } 21 22 function test { 23 echo "${packages[@]}" | xargs go test -race 24 # `go help packages` claims that "polydawn.net/hroot/..." is a valid way to ask to test all packages. 25 # evidentally this is a lie. 26 } 27 28 # CI script assumes running as root on Ubuntu-based x64 29 # Intended for use as a build canary to alert us to breaking docker/index changes 30 function ci { 31 set -x 32 echo "Warning: this will clear docker state!" 33 34 # Check git config 35 set +e 36 touch ~/.gitconfig 37 git config --global --list | grep user.name 38 if [[ $? == 1 ]] ; then 39 echo "Setting a default git user name" 40 git config --global user.name "Example User" 41 fi 42 git config --global --list | grep user.email 43 if [[ $? == 1 ]] ; then 44 echo "Setting a default git user email" 45 git config --global user.email "user@example.com" 46 fi 47 set -e 48 49 # Required packages 50 apt-get install -y aufs-tools cgroup-lite 51 52 # Travis uses GVM, apparently? Try that? 53 [[-s "$HOME/.gvm/scripts/gvm"]] && source "$HOME/.gvm/scripts/gvm" 54 55 # Build hroot 56 echo "" 57 echo $PATH 58 which go 59 build 60 git log --pretty=format:'%h %s %cr %an' -n 1 61 62 # Generate a temporary directory 63 tempDir=/tmp/hroot-ci-$RANDOM$RANDOM$RANDOM$RANDOM 64 rm -rf $tempDir; mkdir -p $tempDir 65 echo "Testing latest docker in $tempDir" 66 echo "" 67 68 docker=$tempDir/docker-latest 69 PATH=$PATH:$tempDir 70 dockerStorage=$tempDir/storage 71 boxen=$tempDir/boxen 72 hroot=$PWD/hroot 73 74 # Download boxen and docker 75 git clone https://github.com/polydawn/boxen.git $boxen 76 wget https://get.docker.io/builds/Linux/x86_64/docker-latest -O $docker 77 chmod +x $docker 78 79 # Print info about golang, hroot, and docker 80 $hroot version 81 go version 82 echo -n "Docker hash: " 83 sha1sum $docker | cut -f 1 -d " " 84 $docker version 2>&1 | grep -v dial 85 86 # Walk through the Getting Started guide 87 ( 88 DEBUG=1 89 90 # Start docker daemon 91 $docker -d -D -r=false --icc=false --graph=$dockerStorage & 92 93 # Import index 94 cd $boxen/ubuntu-index 95 time $hroot build 96 ( cd ../graph ; git log --graph --decorate ) 97 98 # Upgrade apt-get packages 99 cd ../ubuntu 100 time $hroot build 101 $hroot run 102 ( cd ../graph ; git log --graph --decorate ) 103 104 # Kill off docker 105 pkill docker 106 ) 107 108 #Cleanup 109 rm -rf $tempDir || echo "AUFS is unhappy; disregard!" 110 } 111 112 case "$1" in 113 build) build ;; 114 test) test ;; 115 ci) ci ;; 116 117 *) 118 echo "Usage: $0 {build|test}" 1>&2; 119 exit 1 120 ;; 121 esac 122 123