From 46c00ecab4df045541ae0bc42eb4fa6578d9c2aa Mon Sep 17 00:00:00 2001 From: ncabatoff Date: Tue, 21 Jul 2020 10:50:28 -0400 Subject: [PATCH] Set an env var we can use to see if we're running in -race mode. (#9488) --- .circleci/config.yml | 364 +------------------------- .circleci/config/commands/go_test.yml | 4 + 2 files changed, 12 insertions(+), 356 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 0a805836b..8c3fff340 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -171,6 +171,10 @@ jobs: command: | set -x + case "-race" in + *-race*) VAULT_CI_GO_TEST_RACE=1;; + esac + # Install CircleCI CLI curl -sSL \ "https://github.com/CircleCI-Public/circleci-cli/releases/download/v${CIRCLECI_CLI_VERSION}/circleci-cli_${CIRCLECI_CLI_VERSION}_linux_amd64.tar.gz" \ @@ -282,6 +286,10 @@ jobs: command: | set -x + case "" in + *-race*) VAULT_CI_GO_TEST_RACE=1;; + esac + # Install CircleCI CLI curl -sSL \ "https://github.com/CircleCI-Public/circleci-cli/releases/download/v${CIRCLECI_CLI_VERSION}/circleci-cli_${CIRCLECI_CLI_VERSION}_linux_amd64.tar.gz" \ @@ -405,359 +413,3 @@ workflows: - stable-website context: vault-docs version: 2 - -# Original config.yml file: -# commands: -# check-branch-name: -# description: | -# Check if branch name starts with ui/ or docs/ and if so, exit. -# steps: -# - run: -# command: | -# # If the branch being tested starts with ui/ or docs/ we want to exit the job without failing -# [[ \"$CIRCLE_BRANCH\" = ui/* || \"$CIRCLE_BRANCH\" = docs/* ]] && { -# # stop the job from this step -# circleci-agent step halt -# } -# # exit with success either way -# exit 0 -# name: Check branch name -# working_directory: ~/ -# go_test: -# description: run go tests -# parameters: -# extra_flags: -# default: \"\" -# type: string -# log_dir: -# default: /tmp/testlogs -# type: string -# steps: -# - run: -# command: | -# set -x -# -# # Install CircleCI CLI -# curl -sSL \\ -# \"https://github.com/CircleCI-Public/circleci-cli/releases/download/v${CIRCLECI_CLI_VERSION}/circleci-cli_${CIRCLECI_CLI_VERSION}_linux_amd64.tar.gz\" \\ -# | sudo tar --overwrite -xz \\ -# -C /usr/local/bin \\ -# \"circleci-cli_${CIRCLECI_CLI_VERSION}_linux_amd64/circleci\" -# -# # Split Go tests by prior test times -# package_names=$(go list \\ -# -tags \"${GO_TAGS}\" \\ -# ./... \\ -# | grep -v /integ \\ -# | grep -v /vendor/ \\ -# | sort \\ -# | circleci tests split --split-by=timings --timings-type=classname) -# -# # Install gotestsum -# curl -sSL \"https://github.com/gotestyourself/gotestsum/releases/download/v${GOTESTSUM_VERSION}/gotestsum_${GOTESTSUM_VERSION}_linux_amd64.tar.gz\" \\ -# | sudo tar --overwrite -xz -C /usr/local/bin gotestsum -# -# # Run tests -# make prep -# mkdir -p test-results/go-test -# CGO_ENABLED= \\ -# VAULT_ADDR= \\ -# VAULT_TOKEN= \\ -# VAULT_DEV_ROOT_TOKEN_ID= \\ -# VAULT_ACC= \\ -# VAULT_TEST_LOG_DIR=<< parameters.log_dir >> \\ -# gotestsum --format=short-verbose --junitfile test-results/go-test/results.xml -- \\ -# -tags \"${GO_TAGS}\" \\ -# -timeout=60m \\ -# -parallel=20 \\ -# << parameters.extra_flags >> \\ -# ${package_names} -# name: Run Go tests -# no_output_timeout: 60m -# restore_yarn_cache: -# steps: -# - restore_cache: -# key: yarn-lock-v6-{{ checksum \"ui/yarn.lock\" }} -# save_yarn_cache: -# steps: -# - save_cache: -# key: yarn-lock-v6-{{ checksum \"ui/yarn.lock\" }} -# paths: -# - ui/node_modules -# setup-go: -# description: | -# Ensure the right version of Go is installed and set GOPATH to $HOME/go. -# steps: -# - run: -# command: | -# [ -n \"$GO_VERSION\" ] || { echo \"You must set GO_VERSION\"; exit 1; } -# # Install Go -# curl -sSLO \"https://dl.google.com/go/go${GO_VERSION}.linux-amd64.tar.gz\" -# sudo rm -rf /usr/local/go -# sudo tar -C /usr/local -xzf \"go${GO_VERSION}.linux-amd64.tar.gz\" -# rm -f \"go${GO_VERSION}.linux-amd64.tar.gz\" -# GOPATH=\"/go\" -# mkdir $GOPATH 2>/dev/null || { sudo mkdir $GOPATH && sudo chmod 777 $GOPATH; } -# echo \"export GOPATH='$GOPATH'\" >> \"$BASH_ENV\" -# echo \"export PATH='$PATH:$GOPATH/bin:/usr/local/go/bin'\" >> \"$BASH_ENV\" -# -# echo \"$ go version\" -# go version -# name: Setup Go -# working_directory: ~/ -# executors: -# alpine: -# docker: -# - image: alpine:3.10.2 -# shell: /bin/sh -# working_directory: /go/src/github.com/hashicorp/vault -# go-machine: -# environment: -# CIRCLECI_CLI_VERSION: 0.1.5546 -# GO_TAGS: \"\" -# GO_VERSION: 1.14.6 -# GO111MODULE: \"off\" -# GOTESTSUM_VERSION: 0.3.3 -# machine: true -# shell: /usr/bin/env bash -euo pipefail -c -# working_directory: /go/src/github.com/hashicorp/vault -# node: -# docker: -# - environment: -# JOBS: 2 -# image: node:10-buster -# shell: /usr/bin/env bash -euo pipefail -c -# working_directory: /go/src/github.com/hashicorp/vault -# python: -# docker: -# - image: python:3-alpine -# shell: /usr/bin/env bash -euo pipefail -c -# working_directory: /go/src/github.com/hashicorp/vault -# jobs: -# algolia-index: -# docker: -# - image: node:12 -# steps: -# - checkout -# - run: -# command: | -# if [ \"$CIRCLE_REPOSITORY_URL\" != \"git@github.com:hashicorp/vault.git\" ]; then -# echo \"Not Vault OSS Repo, not indexing Algolia\" -# exit 0 -# fi -# cd website/ -# npm install -# node scripts/index_search_content.js -# name: Push content to Algolia Index -# build-go-dev: -# executor: go-machine -# steps: -# - setup-go -# - checkout -# - attach_workspace: -# at: . -# - run: -# command: | -# # Move dev UI assets to expected location -# rm -rf ./pkg -# mkdir ./pkg -# -# # Build dev binary -# make ci-bootstrap dev -# name: Build dev binary -# - persist_to_workspace: -# paths: -# - bin -# root: . -# install-ui-dependencies: -# executor: node -# steps: -# - checkout -# - restore_yarn_cache -# - run: -# command: | -# cd ui -# yarn install -# npm rebuild node-sass -# name: Install UI dependencies -# - save_yarn_cache -# pre-flight-checks: -# description: Ensures nothing obvious is broken for faster failures. -# docker: -# - image: circleci/buildpack-deps -# environment: -# CCI_VERSION: 0.1.5691 -# shell: /usr/bin/env bash -euo pipefail -# steps: -# - checkout -# - run: -# command: | -# export CCI_PATH=/tmp/circleci-cli/$CCI_VERSION -# mkdir -p $CCI_PATH -# NAME=circleci-cli_${CCI_VERSION}_${ARCH} -# URL=$BASE/v${CCI_VERSION}/${NAME}.tar.gz -# curl -sSL $URL \\ -# | tar --overwrite --strip-components=1 -xz -C $CCI_PATH \"${NAME}/circleci\" -# # Add circleci to the path for subsequent steps. -# echo \"export PATH=$CCI_PATH:\\$PATH\" >> $BASH_ENV -# # Done, print some debug info. -# set -x -# . $BASH_ENV -# which circleci -# circleci version -# environment: -# ARCH: linux_amd64 -# BASE: https://github.com/CircleCI-Public/circleci-cli/releases/download -# name: Install CircleCI CLI -# - run: make ci-verify -# test-go: -# executor: go-machine -# parallelism: 2 -# steps: -# - check-branch-name -# - setup-go -# - checkout -# - go_test: -# log_dir: /tmp/testlogs -# - store_artifacts: -# path: test-results -# - store_test_results: -# path: test-results -# - store_artifacts: -# path: /tmp/testlogs -# test-go-race: -# executor: go-machine -# steps: -# - setup-go -# - checkout -# - go_test: -# extra_flags: -race -# log_dir: /tmp/testlogs -# - store_artifacts: -# path: test-results -# - store_test_results: -# path: test-results -# - store_artifacts: -# path: /tmp/testlogs -# test-ui: -# executor: node -# resource_class: medium+ -# steps: -# - checkout -# - restore_yarn_cache -# - attach_workspace: -# at: . -# - run: -# command: | -# set -x -# -# # Install Chrome -# wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub \\ -# | apt-key add - -# echo \"deb http://dl.google.com/linux/chrome/deb/ stable main\" \\ -# | tee /etc/apt/sources.list.d/google-chrome.list -# apt-get update -# apt-get -y install google-chrome-stable -# rm /etc/apt/sources.list.d/google-chrome.list -# rm -rf /var/lib/apt/lists/* /var/cache/apt/* -# -# # Add ./bin to the PATH so vault binary can be run by Ember tests -# export PATH=\"${PWD}/bin:${PATH}\" -# -# # Run Ember tests -# cd ui -# mkdir -p test-results/qunit -# yarn test:oss -# name: Test UI -# - store_artifacts: -# path: ui/test-results -# - store_test_results: -# path: ui/test-results -# test-ui-browserstack: -# executor: node -# resource_class: medium+ -# steps: -# - checkout -# - restore_yarn_cache -# - attach_workspace: -# at: . -# - run: -# command: | -# # Add ./bin to the PATH so vault binary can be found. -# export PATH=\"${PWD}\"/bin:${PATH} -# make test-ui-browserstack -# name: Run Browserstack Tests -# website-docker-image: -# docker: -# - image: circleci/buildpack-deps -# shell: /usr/bin/env bash -euo pipefail -c -# steps: -# - checkout -# - setup_remote_docker -# - run: -# command: | -# IMAGE_TAG=\"$(git rev-list -n1 HEAD -- website/Dockerfile website/package-lock.json)\" -# echo \"Using $IMAGE_TAG\" -# if [ \"$CIRCLE_REPOSITORY_URL\" != \"git@github.com:hashicorp/vault.git\" ]; then -# echo \"Not Vault OSS Repo, not building website docker image\" -# elif curl https://hub.docker.com/v2/repositories/hashicorp/vault-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/vault-website:$IMAGE_TAG . -# docker tag hashicorp/vault-website:$IMAGE_TAG hashicorp/vault-website:latest -# docker login -u $WEBSITE_DOCKER_USER -p $WEBSITE_DOCKER_PASS -# docker push hashicorp/vault-website -# fi -# name: Build Docker Image if Necessary -# references: -# cache: -# go-sum: go-sum-v1-{{ checksum \"go.sum\" }} -# yarn-lock: yarn-lock-v6-{{ checksum \"ui/yarn.lock\" }} -# images: -# node: node:10-buster -# version: 2.1 -# workflows: -# ci: -# jobs: -# - pre-flight-checks -# - install-ui-dependencies: -# requires: -# - pre-flight-checks -# - build-go-dev: -# requires: -# - pre-flight-checks -# - test-ui: -# requires: -# - install-ui-dependencies -# - build-go-dev -# - test-ui-browserstack: -# filters: -# branches: -# ignore: /pull\\/[0-9]+/ -# requires: -# - install-ui-dependencies -# - build-go-dev -# - test-go: -# requires: -# - build-go-dev -# - test-go-race: -# filters: -# branches: -# ignore: -# - /^docs\\/.*/ -# - /^ui\\/.*/ -# requires: -# - build-go-dev -# - website-docker-image: -# context: vault-docs -# filters: -# branches: -# only: -# - master -# - algolia-index: -# context: vault-docs -# filters: -# branches: -# only: -# - stable-website \ No newline at end of file diff --git a/.circleci/config/commands/go_test.yml b/.circleci/config/commands/go_test.yml index cf96f3877..27e8f1a0d 100644 --- a/.circleci/config/commands/go_test.yml +++ b/.circleci/config/commands/go_test.yml @@ -13,6 +13,10 @@ steps: command: | set -x + case "<< parameters.extra_flags >>" in + *-race*) VAULT_CI_GO_TEST_RACE=1;; + esac + # Install CircleCI CLI curl -sSL \ "https://github.com/CircleCI-Public/circleci-cli/releases/download/v${CIRCLECI_CLI_VERSION}/circleci-cli_${CIRCLECI_CLI_VERSION}_linux_amd64.tar.gz" \