run-tests.sh uses virtualenv's activate script.
[arvados-dev.git] / jenkins / run-build-packages.sh
index 3891d979b81dd030aebbf17aa0dc38a0439842f8..ce9b8f72afc13f5d8df0526db7bd68c503e7612c 100755 (executable)
@@ -1,7 +1,7 @@
 #!/bin/bash
 
 EXITCODE=0
-CALL_PRM=0
+CALL_FREIGHT=0
 
 APTUSER=$1
 APTSERVER=$2
@@ -72,7 +72,8 @@ build_and_scp_deb () {
   # Because, bash sucks.
   VENDOR=${3// /_}
   PACKAGE_TYPE=$4
-  EXTRA_ARGUMENTS=$5
+  VERSION=$5
+  EXTRA_ARGUMENTS=$6
 
   if [[ "$PACKAGE_NAME" == "" ]]; then
     PACKAGE_NAME=$PACKAGE
@@ -91,6 +92,11 @@ build_and_scp_deb () {
   if [[ "$VENDOR" != "" ]]; then
     COMMAND_ARR+=('--vendor' "$VENDOR")
   fi
+
+  if [[ "$VERSION" != "" ]]; then
+    COMMAND_ARR+=('-v' "$VERSION")
+  fi
+
   for a in $EXTRA_ARGUMENTS; do
     COMMAND_ARR+=("$a")
   done
@@ -100,15 +106,26 @@ build_and_scp_deb () {
   FPM_RESULTS=$(${COMMAND_ARR[@]})
   FPM_EXIT_CODE=$?
   echo ${COMMAND_ARR[@]}
-  if [[ ! $FPM_RESULTS =~ "File already exists" ]]; then
-    if [[ "$FPM_EXIT_CODE" != "0" ]]; then
-      echo "Error building debian package for $1:\n $FPM_RESULTS"
+
+  FPM_PACKAGE_NAME=''
+  if [[ $FPM_RESULTS =~ ([A-Za-z0-9_\-.]*\.deb) ]]; then
+    FPM_PACKAGE_NAME=${BASH_REMATCH[1]}
+  fi
+
+  if [[ "$FPM_PACKAGE_NAME" == "" ]]; then
+    EXITCODE=1
+    echo "Error: Unabled figure out package name from fpm results:\n $FPM_RESULTS"
+  else
+    if [[ ! $FPM_RESULTS =~ "File already exists" ]]; then
+      if [[ "$FPM_EXIT_CODE" != "0" ]]; then
+        echo "Error building debian package for $1:\n $FPM_RESULTS"
+      else
+        scp -P2222 $FPM_PACKAGE_NAME $APTUSER@$APTSERVER:tmp/
+        CALL_FREIGHT=1
+      fi
     else
-      scp -P2222 $PACKAGE_NAME*.deb $APTUSER@$APTSERVER:tmp/
-      CALL_PRM=1
+      echo "Debian package $FPM_PACKAGE_NAME exists, not rebuilding"
     fi
-  else
-    echo "Debian package for $1 exists, not rebuilding"
   fi
 }
 
@@ -116,9 +133,6 @@ if [[ ! -d "$WORKSPACE/debs" ]]; then
   mkdir -p $WORKSPACE/debs
 fi
 
-# Make sure our destination directory on $APTSERVER exists - prm can delete it when invoked improperly
-ssh -p2222 $APTUSER@$APTSERVER mkdir tmp
-
 # Arvados-src
 # We use $WORKSPACE/src-build-dir as the clean directory from which to build the src package
 if [[ ! -d "$WORKSPACE/src-build-dir" ]]; then
@@ -128,36 +142,39 @@ if [[ ! -d "$WORKSPACE/src-build-dir" ]]; then
 fi  
 
 cd "$WORKSPACE/src-build-dir"
-git fetch -a
-git checkout $GIT_REV
+# just in case, check out master
+git checkout master
+git pull
+# go into detached-head state
+git checkout `git log --format=format:%h -n1 .`
 cd $WORKSPACE
 
 cd $WORKSPACE/debs
-build_and_scp_deb $WORKSPACE/src-build-dir/=/usr/local/arvados/src arvados-src 'Curoverse, Inc.' 'dir' "-v 0.1.$GIT_HASH -x 'usr/local/arvados/src/.git*'"
+build_and_scp_deb $WORKSPACE/src-build-dir/=/usr/local/arvados/src arvados-src 'Curoverse, Inc.' 'dir' "0.1.$GIT_HASH" "-x 'usr/local/arvados/src/.git*'"
 
-# Keep
-cd $WORKSPACE/services/keep
-./go.sh install keep
-cd $WORKSPACE/debs
-build_and_scp_deb $WORKSPACE/services/keep/bin/keep=/usr/bin/keep keep 'Curoverse, Inc.' 'dir' "-v 0.1.$GIT_HASH"
+# clean up, check out master and step away from detached-head state
+cd "$WORKSPACE/src-build-dir"
+git checkout master
 
-# Keep proxy
+# Keep
+export GOPATH=$(mktemp -d)
+mkdir -p "$GOPATH/src/git.curoverse.com"
+ln -sfn "$WORKSPACE" "$GOPATH/src/git.curoverse.com/arvados.git"
 
-# First build the keepclient library
-cd $WORKSPACE/sdk/go
-./go.sh install arvados.org/keepclient
+# keepstore
+go get "git.curoverse.com/arvados.git/services/keepstore"
+cd $WORKSPACE/debs
+build_and_scp_deb $GOPATH/bin/keepstore=/usr/bin/keepstore keepstore 'Curoverse, Inc.' 'dir' "0.1.$GIT_HASH"
 
-# Then keepproxy
-cd $WORKSPACE/services/keep
-./go.sh install arvados.org/keepproxy
+# keepproxy
+go get "git.curoverse.com/arvados.git/services/keepproxy"
 cd $WORKSPACE/debs
-build_and_scp_deb $WORKSPACE/services/keep/bin/keepproxy=/usr/bin/keepproxy keepproxy 'Curoverse, Inc.' 'dir' "-v 0.1.$GIT_HASH"
+build_and_scp_deb $GOPATH/bin/keepproxy=/usr/bin/keepproxy keepproxy 'Curoverse, Inc.' 'dir' "0.1.$GIT_HASH"
 
-# The crunchstat wrapper
-cd $WORKSPACE/services/crunch/crunchstat
-./go.sh install arvados.org/crunchstat
+# crunchstat
+go get "git.curoverse.com/arvados.git/services/crunchstat"
 cd $WORKSPACE/debs
-build_and_scp_deb $WORKSPACE/services/crunch/crunchstat/bin/crunchstat=/usr/bin/crunchstat crunchstat 'Curoverse, Inc.' 'dir' "-v 0.1.$GIT_HASH"
+build_and_scp_deb $GOPATH/bin/crunchstat=/usr/bin/crunchstat crunchstat 'Curoverse, Inc.' 'dir' "0.1.$GIT_HASH"
 
 # The Python SDK
 cd $WORKSPACE/sdk/python
@@ -171,18 +188,17 @@ cd $WORKSPACE/debs
 # prefix from only one of the dependencies of a package...  Maybe I could
 # whip up a patch and send it upstream, but that will be for another day. Ward,
 # 2014-05-15
-build_and_scp_deb $WORKSPACE/sdk/python python-arvados-python-client 'Curoverse, Inc.' 'python' "-v 0.1.${GIT_HASH}"
+build_and_scp_deb $WORKSPACE/sdk/python python-arvados-python-client 'Curoverse, Inc.' 'python' "0.1.${GIT_HASH}"
 
 # The FUSE driver
 cd $WORKSPACE/services/fuse
 sed -i'' -e "s:version='0.1':version='0.1.$GIT_HASH':" setup.py
 
-
 cd $WORKSPACE/debs
 
 # Please seem comment about --no-python-fix-name above; we stay consistent and do
 # not omit the python- prefix first.
-build_and_scp_deb $WORKSPACE/services/fuse python-arvados-fuse 'Curoverse, Inc.' 'python' "-v 0.1.${GIT_HASH}"
+build_and_scp_deb $WORKSPACE/services/fuse python-arvados-fuse 'Curoverse, Inc.' 'python' "0.1.${GIT_HASH}"
 
 # A few dependencies
 build_and_scp_deb python-gflags
@@ -193,9 +209,13 @@ build_and_scp_deb ws4py
 build_and_scp_deb virtualenv
 
 # Finally, publish the packages, if necessary
-if [[ "$CALL_PRM" != "0" ]]; then
-  ssh -p2222 $APTUSER@$APTSERVER -t "cd /var/www/$APTSERVER; /usr/local/rvm/bin/rvm default do prm --type deb -p . --component main --release wheezy --arch amd64  -d /home/$APTUSER/tmp/ --gpg 1078ECD7"
+if [[ "$CALL_FREIGHT" != "0" ]]; then
+  ssh -p2222 $APTUSER@$APTSERVER -t "cd tmp && ls -laF *deb && freight add *deb apt/wheezy && freight cache && rm -f *deb"
 else
-  echo "No new packages generated. No PRM run necessary."
+  echo "No new packages generated. No freight run necessary."
 fi
 
+# clean up temporary GOPATH
+rm -rf "$GOPATH"
+
+exit $EXITCODE