435c0d9fc8
This PR switches the Nomad repository from using govendor to Go modules for managing dependencies. Aspects of the Nomad workflow remain pretty much the same. The usual Makefile targets should continue to work as they always did. The API submodule simply defers to the parent Nomad version on the repository, keeping the semantics of API versioning that currently exists.
1462 lines
46 KiB
YAML
Generated
1462 lines
46 KiB
YAML
Generated
### ***
|
|
### WARNING: DO NOT manually EDIT or MERGE this file, it is generated by 'make ci-config'.
|
|
### INSTEAD: Edit or merge the source in config/ then run 'make ci-config'.
|
|
### ***
|
|
version: 2
|
|
jobs:
|
|
test-nomad:
|
|
machine:
|
|
image: ubuntu-1604:201903-01
|
|
working_directory: ~/go/src/github.com/hashicorp/nomad
|
|
environment:
|
|
- GIT_PAGER: cat
|
|
- GOLANG_VERSION: 1.14.3
|
|
- GOMAXPROCS: 1
|
|
- GOPATH: /home/circleci/go
|
|
- GOTESTSUM_JSONFILE: /tmp/test-reports/testjsonfile.json
|
|
- GOTESTSUM_JUNITFILE: /tmp/test-reports/results.xml
|
|
- NOMAD_SLOW_TEST: 1
|
|
- PAGER: cat
|
|
- GOTEST_MOD: ''
|
|
- GOTEST_PKGS: ./nomad/...
|
|
- GOTEST_PKGS_EXCLUDE: ''
|
|
- GOTESTARCH: amd64
|
|
steps:
|
|
- checkout
|
|
- run:
|
|
command: |
|
|
set -x
|
|
|
|
echo installing golang ${GOLANG_VERSION}
|
|
|
|
case "${OSTYPE}" in
|
|
linux*) os="linux" ;;
|
|
darwin*) os="darwin" ;;
|
|
msys*) os="windows" ;;
|
|
*) echo "unknown os: ${OSTYPE}"; exit 1 ;;
|
|
esac
|
|
|
|
if [[ "${os}" != "windows" ]]
|
|
then
|
|
sudo rm -rf /usr/local/go
|
|
sudo mkdir -p /usr/local
|
|
curl -SL --fail -o /tmp/golang.tar.gz https://dl.google.com/go/go${GOLANG_VERSION}.${os}-amd64.tar.gz
|
|
sudo tar -C /usr/local -xzf /tmp/golang.tar.gz
|
|
rm -rf /tmp/golang.tar.gz
|
|
else
|
|
rm -rf /usr/local/go
|
|
mkdir -p /usr/local
|
|
curl -SL --fail -o /tmp/go.zip https://dl.google.com/go/go${GOLANG_VERSION}.windows-amd64.zip
|
|
unzip -q -o /tmp/go.zip -d /usr/local
|
|
rm -rf /tmp/go.zip
|
|
fi
|
|
name: Install golang
|
|
- run:
|
|
command: |
|
|
sudo rm -rf /usr/bin/protoc
|
|
sudo ./scripts/vagrant-linux-priv-protoc.sh
|
|
name: install protoc
|
|
- run:
|
|
command: |
|
|
curl -SL --fail -o /tmp/consul.zip https://releases.hashicorp.com/consul/1.6.4/consul_1.6.4_linux_amd64.zip
|
|
sudo unzip -d /usr/local/bin /tmp/consul.zip
|
|
rm -rf /tmp/consul*
|
|
name: Install Consul 1.6.4
|
|
- run:
|
|
command: |
|
|
set -x
|
|
|
|
case "${OSTYPE}" in
|
|
linux*) os="linux" ;;
|
|
darwin*) os="darwin" ;;
|
|
msys*) os="windows" ;;
|
|
*) echo "unknown os: ${OSTYPE}"; exit 1 ;;
|
|
esac
|
|
|
|
curl -SL --fail -o /tmp/vault.zip https://releases.hashicorp.com/vault/"1.2.4"/vault_"1.2.4"_"${os}"_amd64.zip
|
|
|
|
if [[ "${os}" != "windows" ]]; then
|
|
sudo unzip -d /usr/local/bin /tmp/vault.zip
|
|
rm -rf /tmp/vault*
|
|
else
|
|
rm -rf c:\Windows\vault.exe
|
|
unzip /tmp/vault.zip -d "/c/Windows"
|
|
rm -rf /tmp/vault*
|
|
fi
|
|
name: Install Vault
|
|
- run:
|
|
command: |
|
|
if [ ! -z $GOTESTARCH ] && [ $GOTESTARCH == "386" ]; then
|
|
sudo apt-get update
|
|
sudo apt-get install -y gcc-multilib
|
|
else
|
|
echo "Skipping 32bit lib installation while building for not 386"
|
|
fi
|
|
name: Install 32bit gcc libs
|
|
- run:
|
|
command: PATH="$GOPATH/bin:/usr/local/go/bin:$PATH" make bootstrap
|
|
- run:
|
|
command: |
|
|
if [ -z $GOTEST_PKGS_EXCLUDE ];
|
|
then
|
|
unset GOTEST_PKGS_EXCLUDE
|
|
else
|
|
unset GOTEST_PKGS
|
|
fi
|
|
|
|
if [ ! -z $GOTESTARCH ]; then
|
|
export GOARCH="$GOTESTARCH";
|
|
fi
|
|
|
|
mkdir -p /tmp/test-reports
|
|
sudo -E PATH="$GOPATH/bin:/usr/local/go/bin:$PATH" make generate-structs
|
|
|
|
if [ ! -z $GOTEST_MOD ]; then
|
|
sudo -E PATH="$GOPATH/bin:/usr/local/go/bin:$PATH" make test-nomad-module
|
|
else
|
|
sudo -E PATH="$GOPATH/bin:/usr/local/go/bin:$PATH" make test-nomad
|
|
fi
|
|
name: Running Nomad Tests
|
|
no_output_timeout: 20m
|
|
- store_test_results:
|
|
path: /tmp/test-reports
|
|
- store_artifacts:
|
|
path: /tmp/test-reports
|
|
test-api:
|
|
machine:
|
|
image: ubuntu-1604:201903-01
|
|
working_directory: ~/go/src/github.com/hashicorp/nomad
|
|
environment:
|
|
- GIT_PAGER: cat
|
|
- GOLANG_VERSION: 1.14.3
|
|
- GOMAXPROCS: 1
|
|
- GOPATH: /home/circleci/go
|
|
- GOTESTSUM_JSONFILE: /tmp/test-reports/testjsonfile.json
|
|
- GOTESTSUM_JUNITFILE: /tmp/test-reports/results.xml
|
|
- NOMAD_SLOW_TEST: 1
|
|
- PAGER: cat
|
|
- GOTEST_MOD: api
|
|
- GOTEST_PKGS: ''
|
|
- GOTEST_PKGS_EXCLUDE: ''
|
|
- GOTESTARCH: amd64
|
|
steps:
|
|
- checkout
|
|
- run:
|
|
command: |
|
|
set -x
|
|
|
|
echo installing golang ${GOLANG_VERSION}
|
|
|
|
case "${OSTYPE}" in
|
|
linux*) os="linux" ;;
|
|
darwin*) os="darwin" ;;
|
|
msys*) os="windows" ;;
|
|
*) echo "unknown os: ${OSTYPE}"; exit 1 ;;
|
|
esac
|
|
|
|
if [[ "${os}" != "windows" ]]
|
|
then
|
|
sudo rm -rf /usr/local/go
|
|
sudo mkdir -p /usr/local
|
|
curl -SL --fail -o /tmp/golang.tar.gz https://dl.google.com/go/go${GOLANG_VERSION}.${os}-amd64.tar.gz
|
|
sudo tar -C /usr/local -xzf /tmp/golang.tar.gz
|
|
rm -rf /tmp/golang.tar.gz
|
|
else
|
|
rm -rf /usr/local/go
|
|
mkdir -p /usr/local
|
|
curl -SL --fail -o /tmp/go.zip https://dl.google.com/go/go${GOLANG_VERSION}.windows-amd64.zip
|
|
unzip -q -o /tmp/go.zip -d /usr/local
|
|
rm -rf /tmp/go.zip
|
|
fi
|
|
name: Install golang
|
|
- run:
|
|
command: |
|
|
sudo rm -rf /usr/bin/protoc
|
|
sudo ./scripts/vagrant-linux-priv-protoc.sh
|
|
name: install protoc
|
|
- run:
|
|
command: |
|
|
curl -SL --fail -o /tmp/consul.zip https://releases.hashicorp.com/consul/1.6.4/consul_1.6.4_linux_amd64.zip
|
|
sudo unzip -d /usr/local/bin /tmp/consul.zip
|
|
rm -rf /tmp/consul*
|
|
name: Install Consul 1.6.4
|
|
- run:
|
|
command: |
|
|
set -x
|
|
|
|
case "${OSTYPE}" in
|
|
linux*) os="linux" ;;
|
|
darwin*) os="darwin" ;;
|
|
msys*) os="windows" ;;
|
|
*) echo "unknown os: ${OSTYPE}"; exit 1 ;;
|
|
esac
|
|
|
|
curl -SL --fail -o /tmp/vault.zip https://releases.hashicorp.com/vault/"1.2.4"/vault_"1.2.4"_"${os}"_amd64.zip
|
|
|
|
if [[ "${os}" != "windows" ]]; then
|
|
sudo unzip -d /usr/local/bin /tmp/vault.zip
|
|
rm -rf /tmp/vault*
|
|
else
|
|
rm -rf c:\Windows\vault.exe
|
|
unzip /tmp/vault.zip -d "/c/Windows"
|
|
rm -rf /tmp/vault*
|
|
fi
|
|
name: Install Vault
|
|
- run:
|
|
command: |
|
|
if [ ! -z $GOTESTARCH ] && [ $GOTESTARCH == "386" ]; then
|
|
sudo apt-get update
|
|
sudo apt-get install -y gcc-multilib
|
|
else
|
|
echo "Skipping 32bit lib installation while building for not 386"
|
|
fi
|
|
name: Install 32bit gcc libs
|
|
- run:
|
|
command: PATH="$GOPATH/bin:/usr/local/go/bin:$PATH" make bootstrap
|
|
- run:
|
|
command: |
|
|
if [ -z $GOTEST_PKGS_EXCLUDE ];
|
|
then
|
|
unset GOTEST_PKGS_EXCLUDE
|
|
else
|
|
unset GOTEST_PKGS
|
|
fi
|
|
|
|
if [ ! -z $GOTESTARCH ]; then
|
|
export GOARCH="$GOTESTARCH";
|
|
fi
|
|
|
|
mkdir -p /tmp/test-reports
|
|
sudo -E PATH="$GOPATH/bin:/usr/local/go/bin:$PATH" make generate-structs
|
|
|
|
if [ ! -z $GOTEST_MOD ]; then
|
|
sudo -E PATH="$GOPATH/bin:/usr/local/go/bin:$PATH" make test-nomad-module
|
|
else
|
|
sudo -E PATH="$GOPATH/bin:/usr/local/go/bin:$PATH" make test-nomad
|
|
fi
|
|
name: Running Nomad Tests
|
|
no_output_timeout: 20m
|
|
- store_test_results:
|
|
path: /tmp/test-reports
|
|
- store_artifacts:
|
|
path: /tmp/test-reports
|
|
test-exec:
|
|
machine:
|
|
image: ubuntu-1604:201903-01
|
|
working_directory: ~/go/src/github.com/hashicorp/nomad
|
|
environment:
|
|
- GIT_PAGER: cat
|
|
- GOLANG_VERSION: 1.14.3
|
|
- GOMAXPROCS: 1
|
|
- GOPATH: /home/circleci/go
|
|
- GOTESTSUM_JSONFILE: /tmp/test-reports/testjsonfile.json
|
|
- GOTESTSUM_JUNITFILE: /tmp/test-reports/results.xml
|
|
- NOMAD_SLOW_TEST: 1
|
|
- PAGER: cat
|
|
- GOTEST_MOD: ''
|
|
- GOTEST_PKGS: ./drivers/exec
|
|
- GOTEST_PKGS_EXCLUDE: ''
|
|
- GOTESTARCH: amd64
|
|
steps:
|
|
- checkout
|
|
- run:
|
|
command: |
|
|
set -x
|
|
|
|
echo installing golang ${GOLANG_VERSION}
|
|
|
|
case "${OSTYPE}" in
|
|
linux*) os="linux" ;;
|
|
darwin*) os="darwin" ;;
|
|
msys*) os="windows" ;;
|
|
*) echo "unknown os: ${OSTYPE}"; exit 1 ;;
|
|
esac
|
|
|
|
if [[ "${os}" != "windows" ]]
|
|
then
|
|
sudo rm -rf /usr/local/go
|
|
sudo mkdir -p /usr/local
|
|
curl -SL --fail -o /tmp/golang.tar.gz https://dl.google.com/go/go${GOLANG_VERSION}.${os}-amd64.tar.gz
|
|
sudo tar -C /usr/local -xzf /tmp/golang.tar.gz
|
|
rm -rf /tmp/golang.tar.gz
|
|
else
|
|
rm -rf /usr/local/go
|
|
mkdir -p /usr/local
|
|
curl -SL --fail -o /tmp/go.zip https://dl.google.com/go/go${GOLANG_VERSION}.windows-amd64.zip
|
|
unzip -q -o /tmp/go.zip -d /usr/local
|
|
rm -rf /tmp/go.zip
|
|
fi
|
|
name: Install golang
|
|
- run:
|
|
command: |
|
|
sudo rm -rf /usr/bin/protoc
|
|
sudo ./scripts/vagrant-linux-priv-protoc.sh
|
|
name: install protoc
|
|
- run:
|
|
command: |
|
|
curl -SL --fail -o /tmp/consul.zip https://releases.hashicorp.com/consul/1.6.4/consul_1.6.4_linux_amd64.zip
|
|
sudo unzip -d /usr/local/bin /tmp/consul.zip
|
|
rm -rf /tmp/consul*
|
|
name: Install Consul 1.6.4
|
|
- run:
|
|
command: |
|
|
set -x
|
|
|
|
case "${OSTYPE}" in
|
|
linux*) os="linux" ;;
|
|
darwin*) os="darwin" ;;
|
|
msys*) os="windows" ;;
|
|
*) echo "unknown os: ${OSTYPE}"; exit 1 ;;
|
|
esac
|
|
|
|
curl -SL --fail -o /tmp/vault.zip https://releases.hashicorp.com/vault/"1.2.4"/vault_"1.2.4"_"${os}"_amd64.zip
|
|
|
|
if [[ "${os}" != "windows" ]]; then
|
|
sudo unzip -d /usr/local/bin /tmp/vault.zip
|
|
rm -rf /tmp/vault*
|
|
else
|
|
rm -rf c:\Windows\vault.exe
|
|
unzip /tmp/vault.zip -d "/c/Windows"
|
|
rm -rf /tmp/vault*
|
|
fi
|
|
name: Install Vault
|
|
- run:
|
|
command: |
|
|
if [ ! -z $GOTESTARCH ] && [ $GOTESTARCH == "386" ]; then
|
|
sudo apt-get update
|
|
sudo apt-get install -y gcc-multilib
|
|
else
|
|
echo "Skipping 32bit lib installation while building for not 386"
|
|
fi
|
|
name: Install 32bit gcc libs
|
|
- run:
|
|
command: PATH="$GOPATH/bin:/usr/local/go/bin:$PATH" make bootstrap
|
|
- run:
|
|
command: |
|
|
if [ -z $GOTEST_PKGS_EXCLUDE ];
|
|
then
|
|
unset GOTEST_PKGS_EXCLUDE
|
|
else
|
|
unset GOTEST_PKGS
|
|
fi
|
|
|
|
if [ ! -z $GOTESTARCH ]; then
|
|
export GOARCH="$GOTESTARCH";
|
|
fi
|
|
|
|
mkdir -p /tmp/test-reports
|
|
sudo -E PATH="$GOPATH/bin:/usr/local/go/bin:$PATH" make generate-structs
|
|
|
|
if [ ! -z $GOTEST_MOD ]; then
|
|
sudo -E PATH="$GOPATH/bin:/usr/local/go/bin:$PATH" make test-nomad-module
|
|
else
|
|
sudo -E PATH="$GOPATH/bin:/usr/local/go/bin:$PATH" make test-nomad
|
|
fi
|
|
name: Running Nomad Tests
|
|
no_output_timeout: 20m
|
|
- store_test_results:
|
|
path: /tmp/test-reports
|
|
- store_artifacts:
|
|
path: /tmp/test-reports
|
|
test-client:
|
|
machine:
|
|
image: ubuntu-1604:201903-01
|
|
working_directory: ~/go/src/github.com/hashicorp/nomad
|
|
environment:
|
|
- GIT_PAGER: cat
|
|
- GOLANG_VERSION: 1.14.3
|
|
- GOMAXPROCS: 1
|
|
- GOPATH: /home/circleci/go
|
|
- GOTESTSUM_JSONFILE: /tmp/test-reports/testjsonfile.json
|
|
- GOTESTSUM_JUNITFILE: /tmp/test-reports/results.xml
|
|
- NOMAD_SLOW_TEST: 1
|
|
- PAGER: cat
|
|
- GOTEST_MOD: ''
|
|
- GOTEST_PKGS: ./client/...
|
|
- GOTEST_PKGS_EXCLUDE: ''
|
|
- GOTESTARCH: amd64
|
|
steps:
|
|
- checkout
|
|
- run:
|
|
command: |
|
|
set -x
|
|
|
|
echo installing golang ${GOLANG_VERSION}
|
|
|
|
case "${OSTYPE}" in
|
|
linux*) os="linux" ;;
|
|
darwin*) os="darwin" ;;
|
|
msys*) os="windows" ;;
|
|
*) echo "unknown os: ${OSTYPE}"; exit 1 ;;
|
|
esac
|
|
|
|
if [[ "${os}" != "windows" ]]
|
|
then
|
|
sudo rm -rf /usr/local/go
|
|
sudo mkdir -p /usr/local
|
|
curl -SL --fail -o /tmp/golang.tar.gz https://dl.google.com/go/go${GOLANG_VERSION}.${os}-amd64.tar.gz
|
|
sudo tar -C /usr/local -xzf /tmp/golang.tar.gz
|
|
rm -rf /tmp/golang.tar.gz
|
|
else
|
|
rm -rf /usr/local/go
|
|
mkdir -p /usr/local
|
|
curl -SL --fail -o /tmp/go.zip https://dl.google.com/go/go${GOLANG_VERSION}.windows-amd64.zip
|
|
unzip -q -o /tmp/go.zip -d /usr/local
|
|
rm -rf /tmp/go.zip
|
|
fi
|
|
name: Install golang
|
|
- run:
|
|
command: |
|
|
sudo rm -rf /usr/bin/protoc
|
|
sudo ./scripts/vagrant-linux-priv-protoc.sh
|
|
name: install protoc
|
|
- run:
|
|
command: |
|
|
curl -SL --fail -o /tmp/consul.zip https://releases.hashicorp.com/consul/1.6.4/consul_1.6.4_linux_amd64.zip
|
|
sudo unzip -d /usr/local/bin /tmp/consul.zip
|
|
rm -rf /tmp/consul*
|
|
name: Install Consul 1.6.4
|
|
- run:
|
|
command: |
|
|
set -x
|
|
|
|
case "${OSTYPE}" in
|
|
linux*) os="linux" ;;
|
|
darwin*) os="darwin" ;;
|
|
msys*) os="windows" ;;
|
|
*) echo "unknown os: ${OSTYPE}"; exit 1 ;;
|
|
esac
|
|
|
|
curl -SL --fail -o /tmp/vault.zip https://releases.hashicorp.com/vault/"1.2.4"/vault_"1.2.4"_"${os}"_amd64.zip
|
|
|
|
if [[ "${os}" != "windows" ]]; then
|
|
sudo unzip -d /usr/local/bin /tmp/vault.zip
|
|
rm -rf /tmp/vault*
|
|
else
|
|
rm -rf c:\Windows\vault.exe
|
|
unzip /tmp/vault.zip -d "/c/Windows"
|
|
rm -rf /tmp/vault*
|
|
fi
|
|
name: Install Vault
|
|
- run:
|
|
command: |
|
|
if [ ! -z $GOTESTARCH ] && [ $GOTESTARCH == "386" ]; then
|
|
sudo apt-get update
|
|
sudo apt-get install -y gcc-multilib
|
|
else
|
|
echo "Skipping 32bit lib installation while building for not 386"
|
|
fi
|
|
name: Install 32bit gcc libs
|
|
- run:
|
|
command: PATH="$GOPATH/bin:/usr/local/go/bin:$PATH" make bootstrap
|
|
- run:
|
|
command: |
|
|
if [ -z $GOTEST_PKGS_EXCLUDE ];
|
|
then
|
|
unset GOTEST_PKGS_EXCLUDE
|
|
else
|
|
unset GOTEST_PKGS
|
|
fi
|
|
|
|
if [ ! -z $GOTESTARCH ]; then
|
|
export GOARCH="$GOTESTARCH";
|
|
fi
|
|
|
|
mkdir -p /tmp/test-reports
|
|
sudo -E PATH="$GOPATH/bin:/usr/local/go/bin:$PATH" make generate-structs
|
|
|
|
if [ ! -z $GOTEST_MOD ]; then
|
|
sudo -E PATH="$GOPATH/bin:/usr/local/go/bin:$PATH" make test-nomad-module
|
|
else
|
|
sudo -E PATH="$GOPATH/bin:/usr/local/go/bin:$PATH" make test-nomad
|
|
fi
|
|
name: Running Nomad Tests
|
|
no_output_timeout: 20m
|
|
- store_test_results:
|
|
path: /tmp/test-reports
|
|
- store_artifacts:
|
|
path: /tmp/test-reports
|
|
test-windows:
|
|
machine:
|
|
image: windows-server-2019-vs2019:stable
|
|
working_directory: c:\gopath\src\github.com\hashicorp\nomad
|
|
steps:
|
|
- run:
|
|
command: git config --global core.autocrlf false
|
|
- checkout
|
|
- run:
|
|
command: |
|
|
mkdir -p $GOBIN
|
|
mkdir -p $GOTESTSUM_PATH
|
|
name: Setup
|
|
- run:
|
|
command: |
|
|
set -x
|
|
|
|
echo installing golang ${GOLANG_VERSION}
|
|
|
|
case "${OSTYPE}" in
|
|
linux*) os="linux" ;;
|
|
darwin*) os="darwin" ;;
|
|
msys*) os="windows" ;;
|
|
*) echo "unknown os: ${OSTYPE}"; exit 1 ;;
|
|
esac
|
|
|
|
if [[ "${os}" != "windows" ]]
|
|
then
|
|
sudo rm -rf c:/go
|
|
sudo mkdir -p c:
|
|
curl -SL --fail -o /tmp/golang.tar.gz https://dl.google.com/go/go${GOLANG_VERSION}.${os}-amd64.tar.gz
|
|
sudo tar -C c: -xzf /tmp/golang.tar.gz
|
|
rm -rf /tmp/golang.tar.gz
|
|
else
|
|
rm -rf c:/go
|
|
mkdir -p c:
|
|
curl -SL --fail -o /tmp/go.zip https://dl.google.com/go/go${GOLANG_VERSION}.windows-amd64.zip
|
|
unzip -q -o /tmp/go.zip -d c:
|
|
rm -rf /tmp/go.zip
|
|
fi
|
|
name: Install golang
|
|
- run:
|
|
command: go version
|
|
- run:
|
|
command: |
|
|
set -x
|
|
|
|
case "${OSTYPE}" in
|
|
linux*) os="linux" ;;
|
|
darwin*) os="darwin" ;;
|
|
msys*) os="windows" ;;
|
|
*) echo "unknown os: ${OSTYPE}"; exit 1 ;;
|
|
esac
|
|
|
|
curl -SL --fail -o /tmp/vault.zip https://releases.hashicorp.com/vault/"$VAULT_VERSION"/vault_"$VAULT_VERSION"_"${os}"_amd64.zip
|
|
|
|
if [[ "${os}" != "windows" ]]; then
|
|
sudo unzip -d /usr/local/bin /tmp/vault.zip
|
|
rm -rf /tmp/vault*
|
|
else
|
|
rm -rf c:\Windows\vault.exe
|
|
unzip /tmp/vault.zip -d "/c/Windows"
|
|
rm -rf /tmp/vault*
|
|
fi
|
|
name: Install Vault
|
|
- run:
|
|
command: vault version
|
|
- run:
|
|
command: choco install make
|
|
- run:
|
|
command: |
|
|
export PATH=$PATH:/c/go/bin:/c/gopath/bin
|
|
make deps
|
|
name: Install golang dependencies
|
|
- run:
|
|
command: docker pull hashicorpnomad/busybox-windows:server2016-0.1
|
|
name: Pre-download docker test image
|
|
- run:
|
|
command: |
|
|
export PATH=$PATH:/c/go/bin:/c/gopath/bin
|
|
go build -o $GOBIN\nomad.exe
|
|
name: Build nomad
|
|
- run:
|
|
command: |
|
|
# Only test docker driver tests for now
|
|
export PATH=$PATH:/c/go/bin:/c/gopath/bin
|
|
gotestsum --format=short-verbose \
|
|
--junitfile $GOTESTSUM_PATH/results.xml \
|
|
github.com/hashicorp/nomad/drivers/docker \
|
|
github.com/hashicorp/nomad/client/lib/fifo \
|
|
github.com/hashicorp/nomad/client/logmon
|
|
name: Run tests with gotestsum
|
|
- store_test_results:
|
|
path: c:\tmp\test-reports
|
|
- store_artifacts:
|
|
path: c:\tmp\test-reports
|
|
environment:
|
|
- GOBIN: c:\gopath\bin
|
|
- GOLANG_VERSION: 1.14.3
|
|
- GOPATH: c:\gopath
|
|
- GOTESTSUM_PATH: c:\tmp\test-reports
|
|
- GOTESTSUM_VERSION: 0.4.2
|
|
- VAULT_VERSION: 1.4.1
|
|
resource_class: windows.medium
|
|
shell: bash --login -eo pipefail
|
|
test-shared-exec:
|
|
machine:
|
|
image: ubuntu-1604:201903-01
|
|
working_directory: ~/go/src/github.com/hashicorp/nomad
|
|
environment:
|
|
- GIT_PAGER: cat
|
|
- GOLANG_VERSION: 1.14.3
|
|
- GOMAXPROCS: 1
|
|
- GOPATH: /home/circleci/go
|
|
- GOTESTSUM_JSONFILE: /tmp/test-reports/testjsonfile.json
|
|
- GOTESTSUM_JUNITFILE: /tmp/test-reports/results.xml
|
|
- NOMAD_SLOW_TEST: 1
|
|
- PAGER: cat
|
|
- GOTEST_MOD: ''
|
|
- GOTEST_PKGS: ./drivers/shared/executor
|
|
- GOTEST_PKGS_EXCLUDE: ''
|
|
- GOTESTARCH: amd64
|
|
steps:
|
|
- checkout
|
|
- run:
|
|
command: |
|
|
set -x
|
|
|
|
echo installing golang ${GOLANG_VERSION}
|
|
|
|
case "${OSTYPE}" in
|
|
linux*) os="linux" ;;
|
|
darwin*) os="darwin" ;;
|
|
msys*) os="windows" ;;
|
|
*) echo "unknown os: ${OSTYPE}"; exit 1 ;;
|
|
esac
|
|
|
|
if [[ "${os}" != "windows" ]]
|
|
then
|
|
sudo rm -rf /usr/local/go
|
|
sudo mkdir -p /usr/local
|
|
curl -SL --fail -o /tmp/golang.tar.gz https://dl.google.com/go/go${GOLANG_VERSION}.${os}-amd64.tar.gz
|
|
sudo tar -C /usr/local -xzf /tmp/golang.tar.gz
|
|
rm -rf /tmp/golang.tar.gz
|
|
else
|
|
rm -rf /usr/local/go
|
|
mkdir -p /usr/local
|
|
curl -SL --fail -o /tmp/go.zip https://dl.google.com/go/go${GOLANG_VERSION}.windows-amd64.zip
|
|
unzip -q -o /tmp/go.zip -d /usr/local
|
|
rm -rf /tmp/go.zip
|
|
fi
|
|
name: Install golang
|
|
- run:
|
|
command: |
|
|
sudo rm -rf /usr/bin/protoc
|
|
sudo ./scripts/vagrant-linux-priv-protoc.sh
|
|
name: install protoc
|
|
- run:
|
|
command: |
|
|
curl -SL --fail -o /tmp/consul.zip https://releases.hashicorp.com/consul/1.6.4/consul_1.6.4_linux_amd64.zip
|
|
sudo unzip -d /usr/local/bin /tmp/consul.zip
|
|
rm -rf /tmp/consul*
|
|
name: Install Consul 1.6.4
|
|
- run:
|
|
command: |
|
|
set -x
|
|
|
|
case "${OSTYPE}" in
|
|
linux*) os="linux" ;;
|
|
darwin*) os="darwin" ;;
|
|
msys*) os="windows" ;;
|
|
*) echo "unknown os: ${OSTYPE}"; exit 1 ;;
|
|
esac
|
|
|
|
curl -SL --fail -o /tmp/vault.zip https://releases.hashicorp.com/vault/"1.2.4"/vault_"1.2.4"_"${os}"_amd64.zip
|
|
|
|
if [[ "${os}" != "windows" ]]; then
|
|
sudo unzip -d /usr/local/bin /tmp/vault.zip
|
|
rm -rf /tmp/vault*
|
|
else
|
|
rm -rf c:\Windows\vault.exe
|
|
unzip /tmp/vault.zip -d "/c/Windows"
|
|
rm -rf /tmp/vault*
|
|
fi
|
|
name: Install Vault
|
|
- run:
|
|
command: |
|
|
if [ ! -z $GOTESTARCH ] && [ $GOTESTARCH == "386" ]; then
|
|
sudo apt-get update
|
|
sudo apt-get install -y gcc-multilib
|
|
else
|
|
echo "Skipping 32bit lib installation while building for not 386"
|
|
fi
|
|
name: Install 32bit gcc libs
|
|
- run:
|
|
command: PATH="$GOPATH/bin:/usr/local/go/bin:$PATH" make bootstrap
|
|
- run:
|
|
command: |
|
|
if [ -z $GOTEST_PKGS_EXCLUDE ];
|
|
then
|
|
unset GOTEST_PKGS_EXCLUDE
|
|
else
|
|
unset GOTEST_PKGS
|
|
fi
|
|
|
|
if [ ! -z $GOTESTARCH ]; then
|
|
export GOARCH="$GOTESTARCH";
|
|
fi
|
|
|
|
mkdir -p /tmp/test-reports
|
|
sudo -E PATH="$GOPATH/bin:/usr/local/go/bin:$PATH" make generate-structs
|
|
|
|
if [ ! -z $GOTEST_MOD ]; then
|
|
sudo -E PATH="$GOPATH/bin:/usr/local/go/bin:$PATH" make test-nomad-module
|
|
else
|
|
sudo -E PATH="$GOPATH/bin:/usr/local/go/bin:$PATH" make test-nomad
|
|
fi
|
|
name: Running Nomad Tests
|
|
no_output_timeout: 20m
|
|
- store_test_results:
|
|
path: /tmp/test-reports
|
|
- store_artifacts:
|
|
path: /tmp/test-reports
|
|
test-ui:
|
|
docker:
|
|
- environment:
|
|
JOBS: 2
|
|
image: circleci/node:10-browsers
|
|
steps:
|
|
- checkout
|
|
- restore_cache:
|
|
keys:
|
|
- v1-deps-{{ checksum "ui/yarn.lock" }}
|
|
- v1-deps-
|
|
- run:
|
|
command: cd ui && yarn install
|
|
name: yarn install
|
|
- save_cache:
|
|
key: v1-deps-{{ checksum "ui/yarn.lock" }}
|
|
paths:
|
|
- ./ui/node_modules
|
|
- run:
|
|
command: cd ui && yarn run lint:js
|
|
name: lint:js
|
|
- run:
|
|
command: cd ui && yarn run lint:hbs
|
|
name: lint:hbs
|
|
- run:
|
|
command: mkdir -p /tmp/test-reports && cd ui && yarn test
|
|
name: Ember tests
|
|
- store_test_results:
|
|
path: /tmp/test-reports
|
|
- store_artifacts:
|
|
path: /tmp/test-reports
|
|
lint-go:
|
|
docker:
|
|
- image: golang:1.14.3
|
|
working_directory: /go/src/github.com/hashicorp/nomad
|
|
steps:
|
|
- checkout
|
|
- run:
|
|
command: apt-get update; apt-get install -y shellcheck sudo unzip
|
|
- run:
|
|
command: |
|
|
sudo rm -rf /usr/bin/protoc
|
|
sudo ./scripts/vagrant-linux-priv-protoc.sh
|
|
name: install protoc
|
|
- run:
|
|
command: "CCI_VERSION=\"0.1.5879\"\nCCI_SHA256=\"f178ea62c781aec06267017404f87983c87f171fd0e66ef3737916246ae66dd6\"\n\nURL=\"https://github.com/CircleCI-Public/circleci-cli/releases/download/v${CCI_VERSION}/circleci-cli_${CCI_VERSION}_linux_amd64.tar.gz\"\n\nmkdir -p /tmp/circleci-cli/\ncurl --fail --show-error --location \\\n -o /tmp/circleci-cli/cli.tar.gz \"${URL}\"\n\necho \"$CCI_SHA256 /tmp/circleci-cli/cli.tar.gz\" | sha256sum -c\n\ntar -xz --strip-components=1 \\\n -C /tmp/circleci-cli \\\n -f /tmp/circleci-cli/cli.tar.gz \\\n \"circleci-cli_${CCI_VERSION}_linux_amd64/circleci\" \n\nsudo cp /tmp/circleci-cli/circleci /usr/bin/circleci-local-cli\n\ncircleci-local-cli version\n"
|
|
name: Install CircleCI CLI 0.1.5879
|
|
- run:
|
|
command: make deps lint-deps
|
|
- run:
|
|
command: make check
|
|
- run:
|
|
command: make checkscripts
|
|
- run:
|
|
command: make -C .circleci CIRCLECI="circleci-local-cli --skip-update-check" ci-verify
|
|
name: check .circleci/config.yml is up-to-date
|
|
environment:
|
|
- GIT_PAGER: cat
|
|
- GOMAXPROCS: 1
|
|
- GOPATH: /go
|
|
- GOTESTSUM_JSONFILE: /tmp/test-reports/testjsonfile.json
|
|
- GOTESTSUM_JUNITFILE: /tmp/test-reports/results.xml
|
|
- NOMAD_SLOW_TEST: 1
|
|
- PAGER: cat
|
|
website-docker-image:
|
|
docker:
|
|
- image: circleci/buildpack-deps
|
|
shell: /usr/bin/env bash -euo pipefail -c
|
|
steps:
|
|
- checkout
|
|
- setup_remote_docker
|
|
- run:
|
|
command: |
|
|
# There is an edge case that would cause an issue here - if dependencies are updated to an exact copy
|
|
# of a previous version, for example if packge-lock.json is reverted, we need to manually push the new
|
|
# image to the "latest" tag
|
|
# Ignore job if running an enterprise build
|
|
IMAGE_TAG=$(cat website/Dockerfile website/package-lock.json | sha256sum | awk '{print $1;}')
|
|
echo "Using $IMAGE_TAG"
|
|
if [ "$CIRCLE_REPOSITORY_URL" != "git@github.com:hashicorp/nomad.git" ]; then
|
|
echo "Not Nomad OSS Repo, not building website docker image"
|
|
elif curl https://hub.docker.com/v2/repositories/hashicorp/nomad-website/tags/$IMAGE_TAG -fsL > /dev/null; then
|
|
echo "Dependencies have not changed, not building a new website docker image."
|
|
else
|
|
cd website/
|
|
docker build -t hashicorp/nomad-website:$IMAGE_TAG .
|
|
docker tag hashicorp/nomad-website:$IMAGE_TAG hashicorp/nomad-website:latest
|
|
docker login -u $WEBSITE_DOCKER_USER -p $WEBSITE_DOCKER_PASS
|
|
docker push hashicorp/nomad-website
|
|
fi
|
|
name: Build Docker Image if Necessary
|
|
test-other:
|
|
machine:
|
|
image: ubuntu-1604:201903-01
|
|
working_directory: ~/go/src/github.com/hashicorp/nomad
|
|
environment:
|
|
- GIT_PAGER: cat
|
|
- GOLANG_VERSION: 1.14.3
|
|
- GOMAXPROCS: 1
|
|
- GOPATH: /home/circleci/go
|
|
- GOTESTSUM_JSONFILE: /tmp/test-reports/testjsonfile.json
|
|
- GOTESTSUM_JUNITFILE: /tmp/test-reports/results.xml
|
|
- NOMAD_SLOW_TEST: 1
|
|
- PAGER: cat
|
|
- GOTEST_MOD: ''
|
|
- GOTEST_PKGS: ''
|
|
- GOTEST_PKGS_EXCLUDE: ./api|./client|./drivers/docker|./drivers/exec|./drivers/shared/executor|./nomad|./devices
|
|
- GOTESTARCH: amd64
|
|
steps:
|
|
- checkout
|
|
- run:
|
|
command: |
|
|
set -x
|
|
|
|
echo installing golang ${GOLANG_VERSION}
|
|
|
|
case "${OSTYPE}" in
|
|
linux*) os="linux" ;;
|
|
darwin*) os="darwin" ;;
|
|
msys*) os="windows" ;;
|
|
*) echo "unknown os: ${OSTYPE}"; exit 1 ;;
|
|
esac
|
|
|
|
if [[ "${os}" != "windows" ]]
|
|
then
|
|
sudo rm -rf /usr/local/go
|
|
sudo mkdir -p /usr/local
|
|
curl -SL --fail -o /tmp/golang.tar.gz https://dl.google.com/go/go${GOLANG_VERSION}.${os}-amd64.tar.gz
|
|
sudo tar -C /usr/local -xzf /tmp/golang.tar.gz
|
|
rm -rf /tmp/golang.tar.gz
|
|
else
|
|
rm -rf /usr/local/go
|
|
mkdir -p /usr/local
|
|
curl -SL --fail -o /tmp/go.zip https://dl.google.com/go/go${GOLANG_VERSION}.windows-amd64.zip
|
|
unzip -q -o /tmp/go.zip -d /usr/local
|
|
rm -rf /tmp/go.zip
|
|
fi
|
|
name: Install golang
|
|
- run:
|
|
command: |
|
|
sudo rm -rf /usr/bin/protoc
|
|
sudo ./scripts/vagrant-linux-priv-protoc.sh
|
|
name: install protoc
|
|
- run:
|
|
command: |
|
|
curl -SL --fail -o /tmp/consul.zip https://releases.hashicorp.com/consul/1.6.4/consul_1.6.4_linux_amd64.zip
|
|
sudo unzip -d /usr/local/bin /tmp/consul.zip
|
|
rm -rf /tmp/consul*
|
|
name: Install Consul 1.6.4
|
|
- run:
|
|
command: |
|
|
set -x
|
|
|
|
case "${OSTYPE}" in
|
|
linux*) os="linux" ;;
|
|
darwin*) os="darwin" ;;
|
|
msys*) os="windows" ;;
|
|
*) echo "unknown os: ${OSTYPE}"; exit 1 ;;
|
|
esac
|
|
|
|
curl -SL --fail -o /tmp/vault.zip https://releases.hashicorp.com/vault/"1.2.4"/vault_"1.2.4"_"${os}"_amd64.zip
|
|
|
|
if [[ "${os}" != "windows" ]]; then
|
|
sudo unzip -d /usr/local/bin /tmp/vault.zip
|
|
rm -rf /tmp/vault*
|
|
else
|
|
rm -rf c:\Windows\vault.exe
|
|
unzip /tmp/vault.zip -d "/c/Windows"
|
|
rm -rf /tmp/vault*
|
|
fi
|
|
name: Install Vault
|
|
- run:
|
|
command: |
|
|
if [ ! -z $GOTESTARCH ] && [ $GOTESTARCH == "386" ]; then
|
|
sudo apt-get update
|
|
sudo apt-get install -y gcc-multilib
|
|
else
|
|
echo "Skipping 32bit lib installation while building for not 386"
|
|
fi
|
|
name: Install 32bit gcc libs
|
|
- run:
|
|
command: PATH="$GOPATH/bin:/usr/local/go/bin:$PATH" make bootstrap
|
|
- run:
|
|
command: |
|
|
if [ -z $GOTEST_PKGS_EXCLUDE ];
|
|
then
|
|
unset GOTEST_PKGS_EXCLUDE
|
|
else
|
|
unset GOTEST_PKGS
|
|
fi
|
|
|
|
if [ ! -z $GOTESTARCH ]; then
|
|
export GOARCH="$GOTESTARCH";
|
|
fi
|
|
|
|
mkdir -p /tmp/test-reports
|
|
sudo -E PATH="$GOPATH/bin:/usr/local/go/bin:$PATH" make generate-structs
|
|
|
|
if [ ! -z $GOTEST_MOD ]; then
|
|
sudo -E PATH="$GOPATH/bin:/usr/local/go/bin:$PATH" make test-nomad-module
|
|
else
|
|
sudo -E PATH="$GOPATH/bin:/usr/local/go/bin:$PATH" make test-nomad
|
|
fi
|
|
name: Running Nomad Tests
|
|
no_output_timeout: 20m
|
|
- store_test_results:
|
|
path: /tmp/test-reports
|
|
- store_artifacts:
|
|
path: /tmp/test-reports
|
|
test-devices:
|
|
docker:
|
|
- image: golang:1.14.3
|
|
working_directory: /go/src/github.com/hashicorp/nomad
|
|
environment:
|
|
- GIT_PAGER: cat
|
|
- GOMAXPROCS: 1
|
|
- GOPATH: /go
|
|
- GOTESTSUM_JSONFILE: /tmp/test-reports/testjsonfile.json
|
|
- GOTESTSUM_JUNITFILE: /tmp/test-reports/results.xml
|
|
- NOMAD_SLOW_TEST: 1
|
|
- PAGER: cat
|
|
- GOTEST_PKGS: ./devices/...
|
|
- GOTEST_PKGS_EXCLUDE: ''
|
|
- GOTESTARCH: amd64
|
|
steps:
|
|
- checkout
|
|
- run:
|
|
command: apt-get update; apt-get install -y shellcheck sudo unzip
|
|
- run:
|
|
command: make deps
|
|
- run:
|
|
command: |
|
|
sudo rm -rf /usr/bin/protoc
|
|
sudo ./scripts/vagrant-linux-priv-protoc.sh
|
|
name: install protoc
|
|
- run:
|
|
command: |
|
|
curl -SL --fail -o /tmp/consul.zip https://releases.hashicorp.com/consul/1.6.4/consul_1.6.4_linux_amd64.zip
|
|
sudo unzip -d /usr/local/bin /tmp/consul.zip
|
|
rm -rf /tmp/consul*
|
|
name: Install Consul 1.6.4
|
|
- run:
|
|
command: |
|
|
set -x
|
|
|
|
case "${OSTYPE}" in
|
|
linux*) os="linux" ;;
|
|
darwin*) os="darwin" ;;
|
|
msys*) os="windows" ;;
|
|
*) echo "unknown os: ${OSTYPE}"; exit 1 ;;
|
|
esac
|
|
|
|
curl -SL --fail -o /tmp/vault.zip https://releases.hashicorp.com/vault/"1.2.4"/vault_"1.2.4"_"${os}"_amd64.zip
|
|
|
|
if [[ "${os}" != "windows" ]]; then
|
|
sudo unzip -d /usr/local/bin /tmp/vault.zip
|
|
rm -rf /tmp/vault*
|
|
else
|
|
rm -rf c:\Windows\vault.exe
|
|
unzip /tmp/vault.zip -d "/c/Windows"
|
|
rm -rf /tmp/vault*
|
|
fi
|
|
name: Install Vault
|
|
- run:
|
|
command: |
|
|
if [ -z $GOTEST_PKGS_EXCLUDE ];
|
|
then
|
|
unset GOTEST_PKGS_EXCLUDE
|
|
else
|
|
unset GOTEST_PKGS
|
|
fi
|
|
|
|
if [ ! -z $GOTESTARCH ]; then
|
|
export GOARCH="$GOTESTARCH";
|
|
fi
|
|
|
|
mkdir -p /tmp/test-reports
|
|
sudo -E PATH="$GOPATH/bin:/usr/local/go/bin:$PATH" make generate-structs
|
|
|
|
if [ ! -z $GOTEST_MOD ]; then
|
|
sudo -E PATH="$GOPATH/bin:/usr/local/go/bin:$PATH" make test-nomad-module
|
|
else
|
|
sudo -E PATH="$GOPATH/bin:/usr/local/go/bin:$PATH" make test-nomad
|
|
fi
|
|
name: Running Nomad Tests
|
|
no_output_timeout: 20m
|
|
- store_test_results:
|
|
path: /tmp/test-reports
|
|
- store_artifacts:
|
|
path: /tmp/test-reports
|
|
build-darwin-binaries:
|
|
macos:
|
|
xcode: 11.3.1
|
|
working_directory: ~/go/src/github.com/hashicorp/nomad
|
|
steps:
|
|
- checkout
|
|
- run:
|
|
command: echo 'export PATH="${GOPATH}/bin:${HOME}/goinstall/go/bin:$PATH"' >> ${BASH_ENV}
|
|
name: configure PATH
|
|
- run:
|
|
command: |
|
|
set -x
|
|
|
|
echo installing golang ${GOLANG_VERSION}
|
|
|
|
case "${OSTYPE}" in
|
|
linux*) os="linux" ;;
|
|
darwin*) os="darwin" ;;
|
|
msys*) os="windows" ;;
|
|
*) echo "unknown os: ${OSTYPE}"; exit 1 ;;
|
|
esac
|
|
|
|
if [[ "${os}" != "windows" ]]
|
|
then
|
|
sudo rm -rf ~/goinstall/go
|
|
sudo mkdir -p ~/goinstall
|
|
curl -SL --fail -o /tmp/golang.tar.gz https://dl.google.com/go/go${GOLANG_VERSION}.${os}-amd64.tar.gz
|
|
sudo tar -C ~/goinstall -xzf /tmp/golang.tar.gz
|
|
rm -rf /tmp/golang.tar.gz
|
|
else
|
|
rm -rf ~/goinstall/go
|
|
mkdir -p ~/goinstall
|
|
curl -SL --fail -o /tmp/go.zip https://dl.google.com/go/go${GOLANG_VERSION}.windows-amd64.zip
|
|
unzip -q -o /tmp/go.zip -d ~/goinstall
|
|
rm -rf /tmp/go.zip
|
|
fi
|
|
name: Install golang
|
|
- run:
|
|
command: source ${BASH_ENV} && make deps
|
|
- run:
|
|
command: brew install protobuf
|
|
- run:
|
|
command: PATH="$GOPATH/bin:${HOME}/goinstall/go/bin:$PATH" make generate-structs
|
|
- run:
|
|
command: source ${BASH_ENV} && make pkg/darwin_amd64.zip
|
|
- store_artifacts:
|
|
destination: /builds/nomad_darwin_amd64.zip
|
|
path: pkg/darwin_amd64.zip
|
|
environment:
|
|
- GIT_PAGER: cat
|
|
- GOLANG_VERSION: 1.14.3
|
|
- GOMAXPROCS: 1
|
|
- GOPATH: /Users/distiller/go
|
|
- GOTESTSUM_JSONFILE: /tmp/test-reports/testjsonfile.json
|
|
- GOTESTSUM_JUNITFILE: /tmp/test-reports/results.xml
|
|
- NOMAD_SLOW_TEST: 1
|
|
- PAGER: cat
|
|
test-docker:
|
|
machine:
|
|
image: circleci/classic:201808-01
|
|
working_directory: ~/go/src/github.com/hashicorp/nomad
|
|
environment:
|
|
- GIT_PAGER: cat
|
|
- GOLANG_VERSION: 1.14.3
|
|
- GOMAXPROCS: 1
|
|
- GOPATH: /home/circleci/go
|
|
- GOTESTSUM_JSONFILE: /tmp/test-reports/testjsonfile.json
|
|
- GOTESTSUM_JUNITFILE: /tmp/test-reports/results.xml
|
|
- NOMAD_SLOW_TEST: 1
|
|
- PAGER: cat
|
|
- GOTEST_MOD: ''
|
|
- GOTEST_PKGS: ./drivers/docker
|
|
- GOTEST_PKGS_EXCLUDE: ''
|
|
- GOTESTARCH: amd64
|
|
steps:
|
|
- checkout
|
|
- run:
|
|
command: |
|
|
set -x
|
|
|
|
echo installing golang ${GOLANG_VERSION}
|
|
|
|
case "${OSTYPE}" in
|
|
linux*) os="linux" ;;
|
|
darwin*) os="darwin" ;;
|
|
msys*) os="windows" ;;
|
|
*) echo "unknown os: ${OSTYPE}"; exit 1 ;;
|
|
esac
|
|
|
|
if [[ "${os}" != "windows" ]]
|
|
then
|
|
sudo rm -rf /usr/local/go
|
|
sudo mkdir -p /usr/local
|
|
curl -SL --fail -o /tmp/golang.tar.gz https://dl.google.com/go/go${GOLANG_VERSION}.${os}-amd64.tar.gz
|
|
sudo tar -C /usr/local -xzf /tmp/golang.tar.gz
|
|
rm -rf /tmp/golang.tar.gz
|
|
else
|
|
rm -rf /usr/local/go
|
|
mkdir -p /usr/local
|
|
curl -SL --fail -o /tmp/go.zip https://dl.google.com/go/go${GOLANG_VERSION}.windows-amd64.zip
|
|
unzip -q -o /tmp/go.zip -d /usr/local
|
|
rm -rf /tmp/go.zip
|
|
fi
|
|
name: Install golang
|
|
- run:
|
|
command: |
|
|
sudo rm -rf /usr/bin/protoc
|
|
sudo ./scripts/vagrant-linux-priv-protoc.sh
|
|
name: install protoc
|
|
- run:
|
|
command: |
|
|
curl -SL --fail -o /tmp/consul.zip https://releases.hashicorp.com/consul/1.6.4/consul_1.6.4_linux_amd64.zip
|
|
sudo unzip -d /usr/local/bin /tmp/consul.zip
|
|
rm -rf /tmp/consul*
|
|
name: Install Consul 1.6.4
|
|
- run:
|
|
command: |
|
|
set -x
|
|
|
|
case "${OSTYPE}" in
|
|
linux*) os="linux" ;;
|
|
darwin*) os="darwin" ;;
|
|
msys*) os="windows" ;;
|
|
*) echo "unknown os: ${OSTYPE}"; exit 1 ;;
|
|
esac
|
|
|
|
curl -SL --fail -o /tmp/vault.zip https://releases.hashicorp.com/vault/"1.2.4"/vault_"1.2.4"_"${os}"_amd64.zip
|
|
|
|
if [[ "${os}" != "windows" ]]; then
|
|
sudo unzip -d /usr/local/bin /tmp/vault.zip
|
|
rm -rf /tmp/vault*
|
|
else
|
|
rm -rf c:\Windows\vault.exe
|
|
unzip /tmp/vault.zip -d "/c/Windows"
|
|
rm -rf /tmp/vault*
|
|
fi
|
|
name: Install Vault
|
|
- run:
|
|
command: |
|
|
if [ ! -z $GOTESTARCH ] && [ $GOTESTARCH == "386" ]; then
|
|
sudo apt-get update
|
|
sudo apt-get install -y gcc-multilib
|
|
else
|
|
echo "Skipping 32bit lib installation while building for not 386"
|
|
fi
|
|
name: Install 32bit gcc libs
|
|
- run:
|
|
command: PATH="$GOPATH/bin:/usr/local/go/bin:$PATH" make bootstrap
|
|
- run:
|
|
command: |
|
|
if [ -z $GOTEST_PKGS_EXCLUDE ];
|
|
then
|
|
unset GOTEST_PKGS_EXCLUDE
|
|
else
|
|
unset GOTEST_PKGS
|
|
fi
|
|
|
|
if [ ! -z $GOTESTARCH ]; then
|
|
export GOARCH="$GOTESTARCH";
|
|
fi
|
|
|
|
mkdir -p /tmp/test-reports
|
|
sudo -E PATH="$GOPATH/bin:/usr/local/go/bin:$PATH" make generate-structs
|
|
|
|
if [ ! -z $GOTEST_MOD ]; then
|
|
sudo -E PATH="$GOPATH/bin:/usr/local/go/bin:$PATH" make test-nomad-module
|
|
else
|
|
sudo -E PATH="$GOPATH/bin:/usr/local/go/bin:$PATH" make test-nomad
|
|
fi
|
|
name: Running Nomad Tests
|
|
no_output_timeout: 20m
|
|
- store_test_results:
|
|
path: /tmp/test-reports
|
|
- store_artifacts:
|
|
path: /tmp/test-reports
|
|
build-binaries:
|
|
docker:
|
|
- image: golang:1.14.3
|
|
working_directory: /go/src/github.com/hashicorp/nomad
|
|
environment:
|
|
- GIT_PAGER: cat
|
|
- GOMAXPROCS: 1
|
|
- GOPATH: /go
|
|
- GOTESTSUM_JSONFILE: /tmp/test-reports/testjsonfile.json
|
|
- GOTESTSUM_JUNITFILE: /tmp/test-reports/results.xml
|
|
- NOMAD_SLOW_TEST: 1
|
|
- PAGER: cat
|
|
- GO_TAGS: codegen_generated
|
|
steps:
|
|
- checkout
|
|
- run:
|
|
command: apt-get update; apt-get install -y sudo unzip zip
|
|
- run:
|
|
command: make deps
|
|
- run:
|
|
command: |
|
|
sudo rm -rf /usr/bin/protoc
|
|
sudo ./scripts/vagrant-linux-priv-protoc.sh
|
|
name: install protoc
|
|
- run:
|
|
command: sudo -E PATH="$GOPATH/bin:/usr/local/go/bin:$PATH" make generate-structs
|
|
- run:
|
|
command: make pkg/windows_amd64.zip pkg/linux_amd64.zip
|
|
- store_artifacts:
|
|
destination: /builds/nomad_windows_amd64.zip
|
|
path: pkg/windows_amd64.zip
|
|
- store_artifacts:
|
|
destination: /builds/nomad_linux_amd64.zip
|
|
path: pkg/linux_amd64.zip
|
|
test-e2e:
|
|
docker:
|
|
- image: golang:1.14.3
|
|
working_directory: /go/src/github.com/hashicorp/nomad
|
|
steps:
|
|
- checkout
|
|
- run:
|
|
command: apt-get update; apt-get install -y sudo unzip
|
|
- run:
|
|
command: |
|
|
groupadd --gid 3434 circleci
|
|
useradd --uid 3434 --gid circleci --shell /bin/bash --create-home circleci
|
|
echo 'circleci ALL=NOPASSWD: ALL' >> /etc/sudoers.d/50-circleci
|
|
echo 'Defaults env_keep += "DEBIAN_FRONTEND"' >> /etc/sudoers.d/env_keep
|
|
chown -R circleci:circleci /go
|
|
name: prepare non-root user
|
|
- run:
|
|
command: sudo -E -H -u circleci PATH=${PATH} make deps
|
|
- run:
|
|
command: sudo -E -H -u circleci PATH=${PATH} make e2e-test
|
|
environment:
|
|
- GIT_PAGER: cat
|
|
- GOMAXPROCS: 1
|
|
- GOPATH: /go
|
|
- GOTESTSUM_JSONFILE: /tmp/test-reports/testjsonfile.json
|
|
- GOTESTSUM_JUNITFILE: /tmp/test-reports/results.xml
|
|
- NOMAD_SLOW_TEST: 1
|
|
- PAGER: cat
|
|
test-32bit:
|
|
machine:
|
|
image: ubuntu-1604:201903-01
|
|
working_directory: ~/go/src/github.com/hashicorp/nomad
|
|
environment:
|
|
- GIT_PAGER: cat
|
|
- GOLANG_VERSION: 1.14.3
|
|
- GOMAXPROCS: 1
|
|
- GOPATH: /home/circleci/go
|
|
- GOTESTSUM_JSONFILE: /tmp/test-reports/testjsonfile.json
|
|
- GOTESTSUM_JUNITFILE: /tmp/test-reports/results.xml
|
|
- NOMAD_SLOW_TEST: 1
|
|
- PAGER: cat
|
|
- GOTEST_MOD: ''
|
|
- GOTEST_PKGS: ./client/fingerprint
|
|
- GOTEST_PKGS_EXCLUDE: ''
|
|
- GOTESTARCH: '386'
|
|
steps:
|
|
- checkout
|
|
- run:
|
|
command: |
|
|
set -x
|
|
|
|
echo installing golang ${GOLANG_VERSION}
|
|
|
|
case "${OSTYPE}" in
|
|
linux*) os="linux" ;;
|
|
darwin*) os="darwin" ;;
|
|
msys*) os="windows" ;;
|
|
*) echo "unknown os: ${OSTYPE}"; exit 1 ;;
|
|
esac
|
|
|
|
if [[ "${os}" != "windows" ]]
|
|
then
|
|
sudo rm -rf /usr/local/go
|
|
sudo mkdir -p /usr/local
|
|
curl -SL --fail -o /tmp/golang.tar.gz https://dl.google.com/go/go${GOLANG_VERSION}.${os}-amd64.tar.gz
|
|
sudo tar -C /usr/local -xzf /tmp/golang.tar.gz
|
|
rm -rf /tmp/golang.tar.gz
|
|
else
|
|
rm -rf /usr/local/go
|
|
mkdir -p /usr/local
|
|
curl -SL --fail -o /tmp/go.zip https://dl.google.com/go/go${GOLANG_VERSION}.windows-amd64.zip
|
|
unzip -q -o /tmp/go.zip -d /usr/local
|
|
rm -rf /tmp/go.zip
|
|
fi
|
|
name: Install golang
|
|
- run:
|
|
command: |
|
|
sudo rm -rf /usr/bin/protoc
|
|
sudo ./scripts/vagrant-linux-priv-protoc.sh
|
|
name: install protoc
|
|
- run:
|
|
command: |
|
|
curl -SL --fail -o /tmp/consul.zip https://releases.hashicorp.com/consul/1.6.4/consul_1.6.4_linux_amd64.zip
|
|
sudo unzip -d /usr/local/bin /tmp/consul.zip
|
|
rm -rf /tmp/consul*
|
|
name: Install Consul 1.6.4
|
|
- run:
|
|
command: |
|
|
set -x
|
|
|
|
case "${OSTYPE}" in
|
|
linux*) os="linux" ;;
|
|
darwin*) os="darwin" ;;
|
|
msys*) os="windows" ;;
|
|
*) echo "unknown os: ${OSTYPE}"; exit 1 ;;
|
|
esac
|
|
|
|
curl -SL --fail -o /tmp/vault.zip https://releases.hashicorp.com/vault/"1.2.4"/vault_"1.2.4"_"${os}"_amd64.zip
|
|
|
|
if [[ "${os}" != "windows" ]]; then
|
|
sudo unzip -d /usr/local/bin /tmp/vault.zip
|
|
rm -rf /tmp/vault*
|
|
else
|
|
rm -rf c:\Windows\vault.exe
|
|
unzip /tmp/vault.zip -d "/c/Windows"
|
|
rm -rf /tmp/vault*
|
|
fi
|
|
name: Install Vault
|
|
- run:
|
|
command: |
|
|
if [ ! -z $GOTESTARCH ] && [ $GOTESTARCH == "386" ]; then
|
|
sudo apt-get update
|
|
sudo apt-get install -y gcc-multilib
|
|
else
|
|
echo "Skipping 32bit lib installation while building for not 386"
|
|
fi
|
|
name: Install 32bit gcc libs
|
|
- run:
|
|
command: PATH="$GOPATH/bin:/usr/local/go/bin:$PATH" make bootstrap
|
|
- run:
|
|
command: |
|
|
if [ -z $GOTEST_PKGS_EXCLUDE ];
|
|
then
|
|
unset GOTEST_PKGS_EXCLUDE
|
|
else
|
|
unset GOTEST_PKGS
|
|
fi
|
|
|
|
if [ ! -z $GOTESTARCH ]; then
|
|
export GOARCH="$GOTESTARCH";
|
|
fi
|
|
|
|
mkdir -p /tmp/test-reports
|
|
sudo -E PATH="$GOPATH/bin:/usr/local/go/bin:$PATH" make generate-structs
|
|
|
|
if [ ! -z $GOTEST_MOD ]; then
|
|
sudo -E PATH="$GOPATH/bin:/usr/local/go/bin:$PATH" make test-nomad-module
|
|
else
|
|
sudo -E PATH="$GOPATH/bin:/usr/local/go/bin:$PATH" make test-nomad
|
|
fi
|
|
name: Running Nomad Tests
|
|
no_output_timeout: 20m
|
|
- store_test_results:
|
|
path: /tmp/test-reports
|
|
- store_artifacts:
|
|
path: /tmp/test-reports
|
|
workflows:
|
|
build-test:
|
|
jobs:
|
|
- build-binaries:
|
|
filters:
|
|
branches:
|
|
ignore:
|
|
- stable-website
|
|
- /^.-ui\b.*/
|
|
- lint-go:
|
|
filters:
|
|
branches:
|
|
ignore:
|
|
- /^.-ui\b.*/
|
|
- /^docs-.*/
|
|
- stable-website
|
|
- build-darwin-binaries:
|
|
filters:
|
|
branches:
|
|
ignore:
|
|
- /^.-ui\b.*/
|
|
- /^docs-.*/
|
|
- stable-website
|
|
- test-windows:
|
|
filters:
|
|
branches:
|
|
ignore:
|
|
- /^.-ui\b.*/
|
|
- /^docs-.*/
|
|
- stable-website
|
|
- test-client:
|
|
filters:
|
|
branches:
|
|
ignore:
|
|
- /^.-ui\b.*/
|
|
- /^docs-.*/
|
|
- stable-website
|
|
- test-nomad:
|
|
filters:
|
|
branches:
|
|
ignore:
|
|
- /^.-ui\b.*/
|
|
- /^docs-.*/
|
|
- stable-website
|
|
- test-api:
|
|
filters:
|
|
branches:
|
|
ignore:
|
|
- /^.-ui\b.*/
|
|
- /^docs-.*/
|
|
- stable-website
|
|
- test-devices:
|
|
filters:
|
|
branches:
|
|
ignore:
|
|
- /^.-ui\b.*/
|
|
- /^docs-.*/
|
|
- stable-website
|
|
- test-other:
|
|
filters:
|
|
branches:
|
|
ignore:
|
|
- /^.-ui\b.*/
|
|
- /^docs-.*/
|
|
- stable-website
|
|
- test-docker:
|
|
filters:
|
|
branches:
|
|
ignore:
|
|
- /^.-ui\b.*/
|
|
- /^docs-.*/
|
|
- stable-website
|
|
- test-exec:
|
|
filters:
|
|
branches:
|
|
ignore:
|
|
- /^.-ui\b.*/
|
|
- /^docs-.*/
|
|
- stable-website
|
|
- test-shared-exec:
|
|
filters:
|
|
branches:
|
|
ignore:
|
|
- /^.-ui\b.*/
|
|
- /^docs-.*/
|
|
- stable-website
|
|
- test-32bit:
|
|
filters:
|
|
branches:
|
|
ignore:
|
|
- /^.-ui\b.*/
|
|
- /^docs-.*/
|
|
- stable-website
|
|
- test-e2e:
|
|
filters:
|
|
branches:
|
|
ignore:
|
|
- /^.-ui\b.*/
|
|
- /^docs-.*/
|
|
- stable-website
|
|
- test-ui:
|
|
filters:
|
|
branches:
|
|
ignore:
|
|
- stable-website
|
|
- /^docs-.*/
|
|
website:
|
|
jobs:
|
|
- website-docker-image:
|
|
filters:
|
|
branches:
|
|
only:
|
|
- master
|
|
context: static-sites
|
|
version: 2
|