We need a Jenkins job that watches master / release branch of shelf github repo and generates new artifacts on commits to S3 as follows
Step 1 - When commit happens to git repo, Jenkins checks out the updated branch, runs tests against the environment ( go test , go vet), if tests fail, notification is sent to admin team, if build succeeds , a new job is triggered to generate artifacts
here is the Jenkins job for testing step 1
if [ -d go ]; then rm -rf go/; fi
tar xvfz /mnt/go_version/go1.5.3.linux-amd64.tar.gz
sudo cp -rf go/ /usr/local
export GOPATH=$WORKSPACE/go
export PATH=$PATH:$GOPATH/bin
export GO15VENDOREXPERIMENT=1
#MONGODB_BACKUP_URL=https://s3.amazonaws.com/nyt-mongo-backup/mongodb-backups/dump.tar.gz
MONGODB_BACKUP_URL=https://s3.amazonaws.com/coral-demo-dataset/dump.tar.gz
MONGODB_DB_PATH=/opt/mongodb/db
MONGODB_CONFIG_PATH=/opt/mongodb/configs
MONGODB_BACKUP_PATH=/opt/mongodb/backup/dump
MONGODB_PORT=27017
MONGODB_INSTANCE_NAME=mongo-server
MOMGODB_VERSION=3.2
MONGODB_USER=coral-user
MONGODB_PASS=kiwort52
MONGODB_DB=coral
MONGODB_AUTH=coral
MONGODB_AUTH_STRING="db.createUser( { user: '$MONGODB_USER', pwd: '$MONGODB_PASS', roles: [ 'readWrite' ] })"
if [ -f /tmp/dump.tar.gz ]; then rm /tmp/dump.tar.gz; fi
wget $MONGODB_BACKUP_URL -P/tmp
if [ -d $MONGODB_BACKUP_PATH ]; then echo "$MONGODB_BACKUP_PATH exists"; else sudo mkdir -p $MONGODB_BACKUP_PATH; fi
if [ -d $MONGODB_DB_PATH ]; then echo "$MONGODB_BACKUP_PATH exists"; else sudo mkdir -p $MONGODB_DB_PATH; fi
if [ -d $MONGODB_CONFIG_PATH ]; then echo "$MONGODB_CONFIG_PATH exists"; else sudo mkdir -p $MONGODB_CONFIG_PATH; fi
tar xvfz /tmp/dump.tar.gz --strip 1 -C $MONGODB_BACKUP_PATH
sudo docker run --net=$NETWORK_NAME --name $MONGODB_INSTANCE_NAME -v $MONGODB_DB_PATH:/data/db -p 27017:$MONGODB_PORT -d mongo:$MOMGODB_VERSION
sudo mongorestore -d $MONGODB_DB $MONGODB_BACKUP_PATH
sudo mongo $MONGODB_DB --eval "$MONGODB_AUTH_STRING"
set +e
go get github.com/coralproject/shelf
set -e
export XENIA_MONGO_HOST=127.0.0.1:27017
export XENIA_MONGO_USER=$MONGODB_USER
export XENIA_MONGO_AUTHDB=$MONGODB_AUTH
export XENIA_MONGO_DB=$MONGODB_DB
export XENIA_LOGGING_LEVEL=1
export XENIA_HOST=:4000
export XENIA_MONGO_PASS=$MONGODB_PASS
cd "$GOPATH/src/github.com/coralproject/shelf/internal"
go test ./...
go vet ./...
cd "$GOPATH/src/github.com/coralproject/shelf/cmd"
go test ./...
go vet ./...
Step 2 - Once we pass the tests and the environment for Mongo is setup for us, we proceed to generating artifacts in binary format like so -
if [ -d go ]; then rm -rf go/; fi
tar xvfz /mnt/go_version/go1.5.3.linux-amd64.tar.gz
sudo cp -rf go/ /usr/local
export GOPATH=$WORKSPACE/go
export PATH=$PATH:$GOPATH/bin
export GO15VENDOREXPERIMENT=1
set +e
go get github.com/coralproject/shelf
set -e
cd $GOPATH/src/github.com/coralproject/shelf/cmd/xenia
go build
cd $GOPATH/src/github.com/coralproject/shelf/cmd/xeniad
BuildDate=`date +"%Y-%m-%d"`
GIT_VER=`git describe --always --dirty --tags`
go build -ldflags "-X main.GitVersion=${GIT_VER} -X main.GitRevision=${GIT_COMMIT} -X main.BuildDate=${BuildDate}"
if [ -d /mnt/shelf ];then echo "Exists"; else mkdir -p /mnt/shelf/last /mnt/shelf/$BUILD_NUMBER; fi
cp $GOPATH/src/github.com/coralproject/shelf/cmd/xenia/xenia /mnt/shelf/last
cp $GOPATH/src/github.com/coralproject/shelf/cmd/xeniad/xeniad /mnt/shelf/last
cp $GOPATH/src/github.com/coralproject/shelf/cmd/xenia/xenia /mnt/shelf/$BUILD_NUMBER
cp $GOPATH/src/github.com/coralproject/shelf/cmd/xeniad/xeniad /mnt/shelf/$BUILD_NUMBER
We need a Jenkins job that watches master / release branch of shelf github repo and generates new artifacts on commits to S3 as follows