Merge pull request #2242 from hashicorp/f-build-cleanup
Refactor Vagrantfiles and release script
This commit is contained in:
commit
7c90a553be
|
@ -14,7 +14,7 @@ GOFILES_NOVENDOR = $(shell find . -type f -name '*.go' -not -path "./vendor/*")
|
|||
all: test
|
||||
|
||||
dev: format generate
|
||||
@NOMAD_DEV=1 sh -c "'$(PWD)/scripts/build.sh'"
|
||||
@scripts/build-dev.sh
|
||||
|
||||
bin: generate
|
||||
@sh -c "'$(PWD)/scripts/build.sh'"
|
||||
|
@ -45,8 +45,7 @@ format:
|
|||
generate:
|
||||
@echo "--> Running go generate"
|
||||
@go generate $(PACKAGES)
|
||||
@sed -e 's|github.com/hashicorp/nomad/vendor/github.com/ugorji/go/codec|github.com/ugorji/go/codec|' nomad/structs/structs.generated.go >> structs.gen.tmp
|
||||
@mv structs.gen.tmp nomad/structs/structs.generated.go
|
||||
@sed -i.old -e 's|github.com/hashicorp/nomad/vendor/github.com/ugorji/go/codec|github.com/ugorji/go/codec|' nomad/structs/structs.generated.go
|
||||
|
||||
vet:
|
||||
@go tool vet 2>/dev/null ; if [ $$? -eq 3 ]; then \
|
||||
|
|
54
Vagrantfile
vendored
54
Vagrantfile
vendored
|
@ -6,11 +6,21 @@ VAGRANTFILE_API_VERSION = "2"
|
|||
|
||||
DEFAULT_CPU_COUNT = 2
|
||||
$script = <<SCRIPT
|
||||
GO_VERSION="1.7.4"
|
||||
GO_VERSION="1.7.5"
|
||||
|
||||
# Install Prereq Packages
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
|
||||
sudo dpkg --add-architecture i386
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y build-essential curl git-core mercurial bzr libpcre3-dev pkg-config zip default-jre qemu libc6-dev-i386 silversearcher-ag jq htop vim unzip liblxc1 lxc-dev
|
||||
|
||||
# Install base dependencies
|
||||
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y build-essential curl git-core mercurial bzr \
|
||||
libpcre3-dev pkg-config zip default-jre qemu silversearcher-ag \
|
||||
jq htop vim unzip tree \
|
||||
liblxc1 lxc-dev lxc-templates \
|
||||
gcc-5-aarch64-linux-gnu binutils-aarch64-linux-gnu \
|
||||
libc6-dev-i386 linux-libc-dev:i386 \
|
||||
gcc-5-arm-linux-gnueabi gcc-5-multilib-arm-linux-gnueabi binutils-arm-linux-gnueabi
|
||||
|
||||
# Setup go, for development of Nomad
|
||||
SRCROOT="/opt/go"
|
||||
|
@ -20,18 +30,22 @@ SRCPATH="/opt/gopath"
|
|||
ARCH=`uname -m | sed 's|i686|386|' | sed 's|x86_64|amd64|'`
|
||||
|
||||
# Install Go
|
||||
cd /tmp
|
||||
wget -q https://storage.googleapis.com/golang/go${GO_VERSION}.linux-${ARCH}.tar.gz
|
||||
tar -xf go${GO_VERSION}.linux-${ARCH}.tar.gz
|
||||
sudo mv go $SRCROOT
|
||||
sudo chmod 775 $SRCROOT
|
||||
sudo chown vagrant:vagrant $SRCROOT
|
||||
if [[ $(go version) == "go version go${GO_VERSION} linux/${ARCH}" ]]; then
|
||||
echo "Go ${GO_VERSION} ${ARCH} already installed; Skipping"
|
||||
else
|
||||
cd /tmp
|
||||
wget -q https://storage.googleapis.com/golang/go${GO_VERSION}.linux-${ARCH}.tar.gz
|
||||
tar -xf go${GO_VERSION}.linux-${ARCH}.tar.gz
|
||||
sudo mv go $SRCROOT
|
||||
sudo chmod 775 $SRCROOT
|
||||
sudo chown ubuntu:ubuntu $SRCROOT
|
||||
fi
|
||||
|
||||
# Setup the GOPATH; even though the shared folder spec gives the working
|
||||
# directory the right user/group, we need to set it properly on the
|
||||
# parent path to allow subsequent "go get" commands to work.
|
||||
sudo mkdir -p $SRCPATH
|
||||
sudo chown -R vagrant:vagrant $SRCPATH 2>/dev/null || true
|
||||
sudo chown -R ubuntu:ubuntu $SRCPATH 2>/dev/null || true
|
||||
# ^^ silencing errors here because we expect this to fail for the shared folder
|
||||
|
||||
cat <<EOF >/tmp/gopath.sh
|
||||
|
@ -44,16 +58,20 @@ sudo chmod 0755 /etc/profile.d/gopath.sh
|
|||
source /etc/profile.d/gopath.sh
|
||||
|
||||
# Install Docker
|
||||
echo deb https://apt.dockerproject.org/repo ubuntu-`lsb_release -c | awk '{print $2}'` main | sudo tee /etc/apt/sources.list.d/docker.list
|
||||
sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y docker-engine
|
||||
if [[ -f /etc/apt/sources.list.d/docker.list ]]; then
|
||||
echo "Docker repository already installed; Skipping"
|
||||
else
|
||||
echo deb https://apt.dockerproject.org/repo ubuntu-`lsb_release -c | awk '{print $2}'` main | sudo tee /etc/apt/sources.list.d/docker.list
|
||||
sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
|
||||
sudo apt-get update
|
||||
fi
|
||||
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y docker-engine
|
||||
|
||||
# Restart docker to make sure we get the latest version of the daemon if there is an upgrade
|
||||
sudo service docker restart
|
||||
|
||||
# Make sure we can actually use docker as the vagrant user
|
||||
sudo usermod -aG docker vagrant
|
||||
# Make sure we can actually use docker as the ubuntu user
|
||||
sudo usermod -aG docker ubuntu
|
||||
|
||||
# Setup Nomad for development
|
||||
cd /opt/gopath/src/github.com/hashicorp/nomad && make bootstrap
|
||||
|
@ -75,7 +93,7 @@ def configureVM(vmCfg, vmParams={
|
|||
numCPUs: DEFAULT_CPU_COUNT,
|
||||
}
|
||||
)
|
||||
vmCfg.vm.box = "cbednarski/ubuntu-1404"
|
||||
vmCfg.vm.box = "ubuntu/xenial64" # 16.04 LTS
|
||||
|
||||
vmCfg.vm.provision "shell", inline: $script, privileged: false
|
||||
vmCfg.vm.synced_folder '.', '/opt/gopath/src/github.com/hashicorp/nomad'
|
||||
|
@ -87,7 +105,7 @@ def configureVM(vmCfg, vmParams={
|
|||
memory = 2048
|
||||
|
||||
vmCfg.vm.provider "parallels" do |p, o|
|
||||
o.vm.box = "parallels/ubuntu-14.04"
|
||||
o.vm.box = "parallels/ubuntu-16.04"
|
||||
p.memory = memory
|
||||
p.cpus = cpus
|
||||
end
|
||||
|
|
4
demo/vagrant/Vagrantfile
vendored
4
demo/vagrant/Vagrantfile
vendored
|
@ -4,7 +4,7 @@
|
|||
$script = <<SCRIPT
|
||||
# Update apt and get dependencies
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y unzip curl wget vim
|
||||
sudo DEBIAN_FRONTEND=noninteractive apt-get install -y unzip curl wget vim
|
||||
|
||||
# Download Nomad
|
||||
echo Fetching Nomad...
|
||||
|
@ -25,7 +25,7 @@ sudo sed -i -e "s/.*nomad.*/$(ip route get 1 | awk '{print $NF;exit}') nomad/" /
|
|||
SCRIPT
|
||||
|
||||
Vagrant.configure(2) do |config|
|
||||
config.vm.box = "puphpet/ubuntu1404-x64"
|
||||
config.vm.box = "ubuntu/xenial64" # 16.04 LTS
|
||||
config.vm.hostname = "nomad"
|
||||
config.vm.provision "shell", inline: $script, privileged: false
|
||||
config.vm.provision "docker" # Just install it
|
||||
|
|
16
scripts/build-dev.sh
Executable file
16
scripts/build-dev.sh
Executable file
|
@ -0,0 +1,16 @@
|
|||
#!/usr/bin/env bash
|
||||
set -e
|
||||
|
||||
GIT_COMMIT="$(git rev-parse HEAD)"
|
||||
GIT_DIRTY="$(test -n "`git status --porcelain`" && echo "+CHANGES" || true)"
|
||||
LDFLAG="main.GitCommit=${GIT_COMMIT}${GIT_DIRTY}"
|
||||
|
||||
TAGS="nomad_test"
|
||||
if [[ $(uname) == "Linux" ]]; then
|
||||
if pkg-config --exists lxc; then
|
||||
TAGS="$TAGS lxc"
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "--> Installing with tags: $TAGS"
|
||||
go install -ldflags "-X $LDFLAG" -tags "${TAGS}"
|
|
@ -14,14 +14,7 @@ cd "$DIR"
|
|||
# Get the git commit
|
||||
GIT_COMMIT="$(git rev-parse HEAD)"
|
||||
GIT_DIRTY="$(test -n "`git status --porcelain`" && echo "+CHANGES" || true)"
|
||||
|
||||
# Determine the arch/os combos we're building for
|
||||
# XC_ARCH=${XC_ARCH:-"386 amd64"}
|
||||
# XC_OS=${XC_OS:-linux}
|
||||
|
||||
XC_ARCH=${XC_ARCH:-"386 amd64"}
|
||||
XC_OS=${XC_OS:-"linux"}
|
||||
XC_EXCLUDE=${XC_EXCLUDE:-"!darwin/arm !darwin/386"}
|
||||
LDFLAG="main.GitCommit=${GIT_COMMIT}${GIT_DIRTY}"
|
||||
|
||||
# Delete the old dir
|
||||
echo "==> Removing old directory..."
|
||||
|
@ -29,39 +22,33 @@ rm -f bin/*
|
|||
rm -rf pkg/*
|
||||
mkdir -p bin/
|
||||
|
||||
# If its dev mode, only build for ourself
|
||||
if [[ "${NOMAD_DEV}" ]]; then
|
||||
XC_OS=$(go env GOOS)
|
||||
XC_ARCH=$(go env GOARCH)
|
||||
fi
|
||||
if [[ $(uname) == "Linux" ]]; then
|
||||
echo "==> Building linux 386..."
|
||||
CGO_ENABLED=1 GOARCH="386" GOOS="linux" go build -ldflags "-X $LDFLAG" -o "pkg/linux_386/nomad"
|
||||
|
||||
# Build!
|
||||
echo "==> Building..."
|
||||
gox \
|
||||
-os="${XC_OS}" \
|
||||
-arch="${XC_ARCH}" \
|
||||
-osarch="${XC_EXCLUDE}" \
|
||||
-cgo \
|
||||
-ldflags "-X main.GitCommit='${GIT_COMMIT}${GIT_DIRTY}'" \
|
||||
-output "pkg/{{.OS}}_{{.Arch}}/nomad" \
|
||||
.
|
||||
echo "==> Building linux amd64..."
|
||||
CGO_ENBALED=1 GOARCH="amd64" GOOS="linux" go build -ldflags "-X $LDFLAG" -o "pkg/linux_amd64/nomad"
|
||||
|
||||
echo ""
|
||||
if pkg-config --exists lxc; then
|
||||
echo "==> Building linux_amd64-lxc..."
|
||||
go build \
|
||||
-tags lxc \
|
||||
-ldflags "-X main.GitCommit='${GIT_COMMIT}${GIT_DIRTY}+lxc'" \
|
||||
-o "pkg/linux_amd64-lxc/nomad"
|
||||
echo "==> Building linux amd64 with lxc..."
|
||||
CGO_ENBALED=1 GOARCH="amd64" GOOS="linux" go build -ldflags "-X $LDFLAG" -o "pkg/linux_amd64-lxc/nomad" -tags "lxc"
|
||||
|
||||
echo "==> Building linux arm..."
|
||||
CC="arm-linux-gnueabi-gcc-5" GOOS=linux GOARCH="arm" CGO_ENABLED=1 go build -ldflags "-X $LDFLAG" -o "pkg/linux_arm/nomad"
|
||||
|
||||
echo "==> Building linux arm64..."
|
||||
CC="aarch64-linux-gnu-gcc-5" GOOS=linux GOARCH="arm64" CGO_ENABLED=1 go build -ldflags "-X $LDFLAG" -o "pkg/linux_arm64/nomad"
|
||||
|
||||
echo "==> Building windows 386..."
|
||||
CGO_ENABLED=1 GOARCH="386" GOOS="windows" go build -ldflags "-X $LDFLAG" -o "pkg/windows_386/nomad"
|
||||
|
||||
echo "==> Building windows amd64..."
|
||||
CGO_ENABLED=1 GOARCH="amd64" GOOS="windows" go build -ldflags "-X $LDFLAG" -o "pkg/windows_amd64/nomad"
|
||||
elif [[ $(uname) == "Darwin" ]]; then
|
||||
echo "==> Building darwin amd64..."
|
||||
CGO_ENABLED=1 GOARCH="amd64" GOOS="darwin" go build -ldflags "-X $LDFLAG" -o "pkg/darwin_amd64/nomad"
|
||||
else
|
||||
if [[ "${NOMAD_DEV}" ]]; then
|
||||
# No lxc in dev mode is no problem
|
||||
echo "LXC not installed; skipping"
|
||||
else
|
||||
# Require LXC for release mode
|
||||
echo "LXC not installed; install lxc-dev to build release binaries"
|
||||
exit 1
|
||||
fi
|
||||
echo "Unable to build on $(uname). Use Linux or Darwin."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Move all the compiled things to the $GOPATH/bin
|
||||
|
@ -82,20 +69,18 @@ for F in $(find ${DEV_PLATFORM} -mindepth 1 -maxdepth 1 -type f); do
|
|||
cp ${F} ${MAIN_GOPATH}/bin/
|
||||
done
|
||||
|
||||
if [[ "x${NOMAD_DEV}" == "x" ]]; then
|
||||
# Zip and copy to the dist dir
|
||||
echo "==> Packaging..."
|
||||
for PLATFORM in $(find ./pkg -mindepth 1 -maxdepth 1 -type d); do
|
||||
OSARCH=$(basename ${PLATFORM})
|
||||
echo "--> ${OSARCH}"
|
||||
# Zip and copy to the dist dir
|
||||
echo "==> Packaging..."
|
||||
for PLATFORM in $(find ./pkg -mindepth 1 -maxdepth 1 -type d); do
|
||||
OSARCH=$(basename ${PLATFORM})
|
||||
echo "--> ${OSARCH}"
|
||||
|
||||
pushd $PLATFORM >/dev/null 2>&1
|
||||
zip ../${OSARCH}.zip ./*
|
||||
popd >/dev/null 2>&1
|
||||
done
|
||||
fi
|
||||
pushd $PLATFORM >/dev/null 2>&1
|
||||
zip ../${OSARCH}.zip ./*
|
||||
popd >/dev/null 2>&1
|
||||
done
|
||||
|
||||
# Done!
|
||||
echo
|
||||
echo "==> Results:"
|
||||
ls -hl bin/
|
||||
tree pkg/
|
||||
|
|
|
@ -1,13 +1,18 @@
|
|||
#!/bin/bash
|
||||
|
||||
set -ex
|
||||
set -e
|
||||
|
||||
CONSUL_VERSION="0.7.2"
|
||||
CONSUL_VERSION="0.7.3"
|
||||
CURDIR=`pwd`
|
||||
|
||||
if [[ $(which consul >/dev/null && consul version | head -n 1 | cut -d ' ' -f 2) == "v$CONSUL_VERSION" ]]; then
|
||||
echo "Consul v$CONSUL_VERSION already installed; Skipping"
|
||||
exit
|
||||
fi
|
||||
|
||||
echo Fetching Consul...
|
||||
cd /tmp/
|
||||
wget https://releases.hashicorp.com/consul/${CONSUL_VERSION}/consul_${CONSUL_VERSION}_linux_amd64.zip -O consul.zip
|
||||
wget -q https://releases.hashicorp.com/consul/${CONSUL_VERSION}/consul_${CONSUL_VERSION}_linux_amd64.zip -O consul.zip
|
||||
echo Installing Consul...
|
||||
unzip consul.zip
|
||||
sudo chmod +x consul
|
||||
|
|
|
@ -1,9 +1,8 @@
|
|||
#!/bin/bash
|
||||
|
||||
set -ex
|
||||
set -e
|
||||
|
||||
RKT_VERSION="v1.17.0"
|
||||
RKT_SHA512="30fd15716e148afa34ed28e6d5d778226e5e9761e9df3eb98f397cb2a7f3e3fc78e3dad2b717eee4157afc58183778cb1872aa82f3d05cc2bc9fb41193e81a7f"
|
||||
RKT_VERSION="v1.18.0"
|
||||
CMD="cp"
|
||||
|
||||
if [ ! -v DEST_DIR ]; then
|
||||
|
@ -11,18 +10,16 @@ if [ ! -v DEST_DIR ]; then
|
|||
CMD="sudo cp"
|
||||
fi
|
||||
|
||||
if [ ! -d "rkt-${RKT_VERSION}" ]; then
|
||||
printf "rkt-%s/ doesn't exist\n" "${RKT_VERSION}"
|
||||
if [ ! -f "rkt-${RKT_VERSION}.tar.gz" ]; then
|
||||
printf "Fetching rkt-%s.tar.gz\n" "${RKT_VERSION}"
|
||||
echo "$RKT_SHA512 rkt-${RKT_VERSION}.tar.gz" > rkt-$RKT_VERSION.tar.gz.sha512sum
|
||||
wget https://github.com/coreos/rkt/releases/download/$RKT_VERSION/rkt-$RKT_VERSION.tar.gz
|
||||
sha512sum --check rkt-$RKT_VERSION.tar.gz.sha512sum
|
||||
tar xzvf rkt-$RKT_VERSION.tar.gz
|
||||
fi
|
||||
if [[ $(which rkt >/dev/null && rkt version | head -n 1) == "rkt Version: 1.18.0" ]]; then
|
||||
echo "rkt installed; Skipping"
|
||||
else
|
||||
printf "Fetching rkt-%s.tar.gz\n" "${RKT_VERSION}"
|
||||
cd /tmp
|
||||
wget -q https://github.com/coreos/rkt/releases/download/$RKT_VERSION/rkt-$RKT_VERSION.tar.gz -O rkt.tar.gz
|
||||
tar xzf rkt.tar.gz
|
||||
|
||||
$CMD rkt-$RKT_VERSION/rkt $DEST_DIR
|
||||
$CMD rkt-$RKT_VERSION/*.aci $DEST_DIR
|
||||
fi
|
||||
|
||||
$CMD rkt-$RKT_VERSION/rkt $DEST_DIR
|
||||
$CMD rkt-$RKT_VERSION/*.aci $DEST_DIR
|
||||
|
||||
rkt version
|
||||
|
|
|
@ -1,8 +1,11 @@
|
|||
#!/bin/bash
|
||||
|
||||
set -ex
|
||||
set -e
|
||||
|
||||
# Configure rkt networking
|
||||
sudo mkdir -p /etc/rkt/net.d
|
||||
echo '{"name": "default", "type": "ptp", "ipMasq": false, "ipam": { "type": "host-local", "subnet": "172.16.28.0/24", "routes": [ { "dst": "0.0.0.0/0" } ] } }' | sudo tee -a /etc/rkt/net.d/99-network.conf
|
||||
if [[ -f /etc/rkt/net.d/99-network.conf ]]; then
|
||||
echo "rkt network already configured; Skipping"
|
||||
exit
|
||||
fi
|
||||
echo '{"name": "default", "type": "ptp", "ipMasq": false, "ipam": { "type": "host-local", "subnet": "172.16.28.0/24", "routes": [ { "dst": "0.0.0.0/0" } ] } }' | jq . | sudo tee -a /etc/rkt/net.d/99-network.conf
|
||||
|
||||
|
|
|
@ -1,13 +1,18 @@
|
|||
#!/bin/bash
|
||||
|
||||
set -ex
|
||||
set -e
|
||||
|
||||
VAULT_VERSION="0.6.2"
|
||||
VAULT_VERSION="0.6.4"
|
||||
CURDIR=`pwd`
|
||||
|
||||
if [[ $(which vault >/dev/null && vault version | cut -d ' ' -f 2) == "v$VAULT_VERSION" ]]; then
|
||||
echo "Vault v$VAULT_VERSION already installed; Skipping"
|
||||
exit
|
||||
fi
|
||||
|
||||
echo Fetching Vault ${VAULT_VERSION}...
|
||||
cd /tmp/
|
||||
wget https://releases.hashicorp.com/vault/${VAULT_VERSION}/vault_${VAULT_VERSION}_linux_amd64.zip -O vault.zip
|
||||
wget -q https://releases.hashicorp.com/vault/${VAULT_VERSION}/vault_${VAULT_VERSION}_linux_amd64.zip -O vault.zip
|
||||
echo Installing Vault...
|
||||
unzip vault.zip
|
||||
sudo chmod +x vault
|
||||
|
|
|
@ -1,7 +1,12 @@
|
|||
#!/usr/bin/env bash
|
||||
set -e
|
||||
|
||||
GOTEST_TAGS="nomad_test lxc"
|
||||
GOTEST_TAGS="nomad_test"
|
||||
if [[ $(uname) == "Linux" ]]; then
|
||||
if pkg-config --exists lxc; then
|
||||
GOTEST_TAGS="$GOTEST_TAGS lxc"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Create a temp dir and clean it up on exit
|
||||
TEMPDIR=`mktemp -d -t nomad-test.XXX`
|
||||
|
@ -9,7 +14,8 @@ trap "rm -rf $TEMPDIR" EXIT HUP INT QUIT TERM
|
|||
|
||||
# Build the Nomad binary for the API tests
|
||||
echo "--> Building nomad"
|
||||
go build -tags "$GOTEST_TAGS" -o $TEMPDIR/nomad || exit 1
|
||||
echo go build -i -tags \"$GOTEST_TAGS\" -o $TEMPDIR/nomad
|
||||
go build -i -tags "$GOTEST_TAGS" -o $TEMPDIR/nomad || exit 1
|
||||
|
||||
# Run the tests
|
||||
echo "--> Running tests"
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
#!/usr/bin/env bash
|
||||
set -e
|
||||
|
||||
export PING_SLEEP=30
|
||||
export PING_SLEEP=60
|
||||
bash -c "while true; do echo \$(date) - building ...; sleep $PING_SLEEP; done" &
|
||||
PING_LOOP_PID=$!
|
||||
|
||||
|
|
Loading…
Reference in a new issue