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