diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index f8c1277c231bdad926ce9091d14d604e7e49e28b..701c909ba37b0075230747146a61424cc873f28e 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -48,6 +48,7 @@ installbinaries:
     - chmod +x bin/server
     - "curl -f -L -H \"PRIVATE-TOKEN: $PATKEY\" -o bin/client $CLIENT_URL"
     - chmod +x bin/client
+    - "curl -f -L -H \"PRIVATE-TOKEN: $PATKEY\" -o bin/channelbot $CHANNELBOT_URL"
     - echo $PWD
     - find bin/ -type f -exec file {} \;
   artifacts:
diff --git a/basice2e/run.sh b/basice2e/run.sh
index 2f5f514693192607e4fd557cc0e6056399656f78..dd440cdcf789628d5f059510a32ad529de307794 100755
--- a/basice2e/run.sh
+++ b/basice2e/run.sh
@@ -90,7 +90,7 @@ runclients() {
 }
 
 # Start a channelbot server
-CHANNELCMD="../bin/client channelbot -v -i 31 --nick \"#General\" --numnodes 5 -s $LASTNODE  -f blobchannel --noratchet"
+CHANNELCMD="../bin/channelbot -v -i 31 --nick \"#General\" --numnodes 5 -s $LASTNODE  -f blobchannel --noratchet"
 eval $CHANNELCMD >> $CHANNELOUT 2>&1 &
 PIDVAL=$!
 echo $PIDVAL >> results/serverpids
diff --git a/build.sh b/build.sh
new file mode 100755
index 0000000000000000000000000000000000000000..1ef9d51dc6f9836294953921a78abbd0001f6ec1
--- /dev/null
+++ b/build.sh
@@ -0,0 +1,20 @@
+#!/bin/bash
+
+# This intended for manually running the integration tests on your own machine
+# and assumes that you've cloned the Go repos to your GOPATH and updated them
+# with Glide.
+
+pushd $GOPATH/src/gitlab.com/privategrity/client
+go build
+popd
+mv $GOPATH/src/gitlab.com/privategrity/client/client bin
+
+pushd $GOPATH/src/gitlab.com/privategrity/server
+go build
+popd
+mv $GOPATH/src/gitlab.com/privategrity/server/server bin
+
+pushd $GOPATH/src/gitlab.com/privategrity/channelbot
+go build
+popd
+mv $GOPATH/src/gitlab.com/privategrity/channelbot/channelbot bin