### *** ### 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.6 - 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.6 - 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.6 - 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.6 - 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.6 - 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.6 - 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: - v2-deps-{{ checksum "ui/yarn.lock" }} - v2-deps- - run: command: cd ui && yarn install name: yarn install - save_cache: key: v2-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.6 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: mkdir -p ui/dist && make generate-all static-assets - 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.6 - 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.6 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.6 - 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 algolia_index: docker: - image: node:12 steps: - checkout - run: command: | if [ "$CIRCLE_REPOSITORY_URL" != "git@github.com:hashicorp/nomad.git" ]; then echo "Not Nomad OSS Repo, not indexing Algolia" exit 0 fi cd website/ npm install node scripts/index_search_content.js name: Push content to Algolia Index test-docker: machine: image: circleci/classic:201808-01 working_directory: ~/go/src/github.com/hashicorp/nomad environment: - GIT_PAGER: cat - GOLANG_VERSION: 1.14.6 - 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.6 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.6 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.6 - 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 - algolia_index: filters: branches: only: - stable-website context: static-sites version: 2