ci: remove test-integrations CircleCI workflow (#16928)
* remove all CircleCI files * remove references to CircleCI * remove more references to CircleCI * pin golangci-lint to v1.51.1 instead of v1.51
This commit is contained in:
parent
9a77ec0b6d
commit
d7c488762e
|
@ -1,13 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
# Copyright (c) HashiCorp, Inc.
|
|
||||||
# SPDX-License-Identifier: MPL-2.0
|
|
||||||
|
|
||||||
|
|
||||||
export GIT_COMMIT=$(git rev-parse --short HEAD)
|
|
||||||
export GIT_COMMIT_YEAR=$(git show -s --format=%cd --date=format:%Y HEAD)
|
|
||||||
export GIT_DIRTY=$(test -n "`git status --porcelain`" && echo "+CHANGES" || true)
|
|
||||||
export GIT_IMPORT=github.com/hashicorp/consul/version
|
|
||||||
# we're using this for build date because it's stable across platform builds
|
|
||||||
# the env -i and -noprofile are used to ensure we don't try to recursively call this profile when starting bash
|
|
||||||
export GIT_DATE=$(env -i /bin/bash --noprofile -norc /home/circleci/project/build-support/scripts/build-date.sh)
|
|
||||||
export GOLDFLAGS="-X ${GIT_IMPORT}.GitCommit=${GIT_COMMIT}${GIT_DIRTY} -X ${GIT_IMPORT}.BuildDate=${GIT_DATE}"
|
|
|
@ -1,600 +0,0 @@
|
||||||
# Copyright (c) HashiCorp, Inc.
|
|
||||||
# SPDX-License-Identifier: MPL-2.0
|
|
||||||
|
|
||||||
---
|
|
||||||
version: 2.1
|
|
||||||
|
|
||||||
parameters:
|
|
||||||
commit:
|
|
||||||
type: string
|
|
||||||
default: ""
|
|
||||||
description: "Commit to run load tests against"
|
|
||||||
|
|
||||||
references:
|
|
||||||
paths:
|
|
||||||
test-results: &TEST_RESULTS_DIR /tmp/test-results
|
|
||||||
environment: &ENVIRONMENT
|
|
||||||
TEST_RESULTS_DIR: *TEST_RESULTS_DIR
|
|
||||||
EMAIL: noreply@hashicorp.com
|
|
||||||
GIT_AUTHOR_NAME: circleci-consul
|
|
||||||
GIT_COMMITTER_NAME: circleci-consul
|
|
||||||
S3_ARTIFACT_BUCKET: consul-dev-artifacts-v2
|
|
||||||
BASH_ENV: .circleci/bash_env.sh
|
|
||||||
GO_VERSION: 1.20.1
|
|
||||||
envoy-versions: &supported_envoy_versions
|
|
||||||
- &default_envoy_version "1.22.11"
|
|
||||||
- "1.23.8"
|
|
||||||
- "1.24.6"
|
|
||||||
- "1.25.4"
|
|
||||||
nomad-versions: &supported_nomad_versions
|
|
||||||
- &default_nomad_version "1.3.3"
|
|
||||||
- "1.2.10"
|
|
||||||
- "1.1.16"
|
|
||||||
vault-versions: &supported_vault_versions
|
|
||||||
- &default_vault_version "1.12.2"
|
|
||||||
- "1.11.6"
|
|
||||||
- "1.10.9"
|
|
||||||
- "1.9.10"
|
|
||||||
consul-versions: &consul_versions
|
|
||||||
- "1.14"
|
|
||||||
- "1.15"
|
|
||||||
images:
|
|
||||||
# When updating the Go version, remember to also update the versions in the
|
|
||||||
# workflows section for go-test-lib jobs.
|
|
||||||
go: &GOLANG_IMAGE docker.mirror.hashicorp.services/cimg/go:1.20.1
|
|
||||||
ember: &EMBER_IMAGE docker.mirror.hashicorp.services/circleci/node:16-browsers
|
|
||||||
ubuntu: &UBUNTU_CI_IMAGE ubuntu-2004:202201-02
|
|
||||||
cache:
|
|
||||||
yarn: &YARN_CACHE_KEY consul-ui-v9-{{ checksum "ui/yarn.lock" }}
|
|
||||||
|
|
||||||
steps:
|
|
||||||
install-gotestsum: &install-gotestsum
|
|
||||||
name: install gotestsum
|
|
||||||
environment:
|
|
||||||
GOTESTSUM_RELEASE: 1.9.0
|
|
||||||
command: |
|
|
||||||
ARCH=`uname -m`
|
|
||||||
if [[ "$ARCH" == "aarch64" ]]; then
|
|
||||||
ARCH="arm64"
|
|
||||||
else
|
|
||||||
ARCH="amd64"
|
|
||||||
fi
|
|
||||||
url=https://github.com/gotestyourself/gotestsum/releases/download
|
|
||||||
curl -sSL "${url}/v${GOTESTSUM_RELEASE}/gotestsum_${GOTESTSUM_RELEASE}_linux_${ARCH}.tar.gz" | \
|
|
||||||
sudo tar -xz --overwrite -C /usr/local/bin gotestsum
|
|
||||||
|
|
||||||
get-aws-cli: &get-aws-cli
|
|
||||||
run:
|
|
||||||
name: download and install AWS CLI
|
|
||||||
command: |
|
|
||||||
curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" -o "awscliv2.zip"
|
|
||||||
echo -e "${AWS_CLI_GPG_KEY}" | gpg --import
|
|
||||||
curl -o awscliv2.sig https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip.sig
|
|
||||||
gpg --verify awscliv2.sig awscliv2.zip
|
|
||||||
unzip awscliv2.zip
|
|
||||||
sudo ./aws/install
|
|
||||||
|
|
||||||
# This step MUST be at the end of any set of steps due to the 'when' condition
|
|
||||||
notify-slack-failure: ¬ify-slack-failure
|
|
||||||
name: notify-slack-failure
|
|
||||||
when: on_fail
|
|
||||||
command: |
|
|
||||||
if [[ $CIRCLE_BRANCH == "main" ]]; then
|
|
||||||
CIRCLE_ENDPOINT="https://app.circleci.com/pipelines/github/${CIRCLE_PROJECT_USERNAME}/${CIRCLE_PROJECT_REPONAME}?branch=${CIRCLE_BRANCH}"
|
|
||||||
GITHUB_ENDPOINT="https://github.com/${CIRCLE_PROJECT_USERNAME}/${CIRCLE_PROJECT_REPONAME}/commit/${CIRCLE_SHA1}"
|
|
||||||
COMMIT_MESSAGE=$(git log -1 --pretty=%B | head -n1)
|
|
||||||
SHORT_REF=$(git rev-parse --short "${CIRCLE_SHA1}")
|
|
||||||
curl -X POST -H 'Content-type: application/json' \
|
|
||||||
--data \
|
|
||||||
"{ \
|
|
||||||
\"attachments\": [ \
|
|
||||||
{ \
|
|
||||||
\"fallback\": \"CircleCI job failed!\", \
|
|
||||||
\"text\": \"❌ Failed: \`${CIRCLE_USERNAME}\`'s <${CIRCLE_BUILD_URL}|${CIRCLE_STAGE}> job failed for commit <${GITHUB_ENDPOINT}|${SHORT_REF}> on \`${CIRCLE_BRANCH}\`!\n\n- <${COMMIT_MESSAGE}\", \
|
|
||||||
\"footer\": \"${CIRCLE_PROJECT_USERNAME}/${CIRCLE_PROJECT_REPONAME}\", \
|
|
||||||
\"ts\": \"$(date +%s)\", \
|
|
||||||
\"color\": \"danger\" \
|
|
||||||
} \
|
|
||||||
] \
|
|
||||||
}" "${FEED_CONSUL_GH_URL}"
|
|
||||||
else
|
|
||||||
echo "Not posting slack failure notifications for non-main branch"
|
|
||||||
fi
|
|
||||||
|
|
||||||
commands:
|
|
||||||
assume-role:
|
|
||||||
description: "Assume role to an ARN"
|
|
||||||
parameters:
|
|
||||||
access-key:
|
|
||||||
type: env_var_name
|
|
||||||
default: AWS_ACCESS_KEY_ID
|
|
||||||
secret-key:
|
|
||||||
type: env_var_name
|
|
||||||
default: AWS_SECRET_ACCESS_KEY
|
|
||||||
role-arn:
|
|
||||||
type: env_var_name
|
|
||||||
default: ROLE_ARN
|
|
||||||
steps:
|
|
||||||
# Only run the assume-role command for the main repo. The AWS credentials aren't available for forks.
|
|
||||||
- run: |
|
|
||||||
if [[ "${CIRCLE_BRANCH%%/*}/" != "pull/" ]]; then
|
|
||||||
export AWS_ACCESS_KEY_ID="${<< parameters.access-key >>}"
|
|
||||||
export AWS_SECRET_ACCESS_KEY="${<< parameters.secret-key >>}"
|
|
||||||
export ROLE_ARN="${<< parameters.role-arn >>}"
|
|
||||||
# assume role has duration of 15 min (the minimum allowed)
|
|
||||||
CREDENTIALS="$(aws sts assume-role --duration-seconds 900 --role-arn ${ROLE_ARN} --role-session-name build-${CIRCLE_SHA1} | jq '.Credentials')"
|
|
||||||
echo "export AWS_ACCESS_KEY_ID=$(echo $CREDENTIALS | jq -r '.AccessKeyId')" >> $BASH_ENV
|
|
||||||
echo "export AWS_SECRET_ACCESS_KEY=$(echo $CREDENTIALS | jq -r '.SecretAccessKey')" >> $BASH_ENV
|
|
||||||
echo "export AWS_SESSION_TOKEN=$(echo $CREDENTIALS | jq -r '.SessionToken')" >> $BASH_ENV
|
|
||||||
fi
|
|
||||||
|
|
||||||
run-go-test-full:
|
|
||||||
parameters:
|
|
||||||
go_test_flags:
|
|
||||||
type: string
|
|
||||||
default: ""
|
|
||||||
steps:
|
|
||||||
- attach_workspace:
|
|
||||||
at: /home/circleci/go/bin
|
|
||||||
- run: go mod download
|
|
||||||
- run:
|
|
||||||
name: go test
|
|
||||||
command: |
|
|
||||||
mkdir -p $TEST_RESULTS_DIR /tmp/jsonfile
|
|
||||||
PACKAGE_NAMES=$(go list -tags "$GOTAGS" ./... | circleci tests split --split-by=timings --timings-type=classname)
|
|
||||||
echo "Running $(echo $PACKAGE_NAMES | wc -w) packages"
|
|
||||||
echo $PACKAGE_NAMES
|
|
||||||
# some tests expect this umask, and arm images have a different default
|
|
||||||
umask 0022
|
|
||||||
|
|
||||||
<< parameters.go_test_flags >>
|
|
||||||
|
|
||||||
gotestsum \
|
|
||||||
--format=short-verbose \
|
|
||||||
--jsonfile /tmp/jsonfile/go-test-${CIRCLE_NODE_INDEX}.log \
|
|
||||||
--debug \
|
|
||||||
--rerun-fails=3 \
|
|
||||||
--rerun-fails-max-failures=40 \
|
|
||||||
--rerun-fails-report=/tmp/gotestsum-rerun-fails \
|
|
||||||
--packages="$PACKAGE_NAMES" \
|
|
||||||
--junitfile $TEST_RESULTS_DIR/gotestsum-report.xml -- \
|
|
||||||
-tags="$GOTAGS" -p 2 \
|
|
||||||
${GO_TEST_FLAGS-} \
|
|
||||||
-cover -coverprofile=coverage.txt
|
|
||||||
|
|
||||||
- store_test_results:
|
|
||||||
path: *TEST_RESULTS_DIR
|
|
||||||
- store_artifacts:
|
|
||||||
path: *TEST_RESULTS_DIR
|
|
||||||
- store_artifacts:
|
|
||||||
path: /tmp/jsonfile
|
|
||||||
- run: &rerun-fails-report
|
|
||||||
name: "Re-run fails report"
|
|
||||||
command: |
|
|
||||||
.circleci/scripts/rerun-fails-report.sh /tmp/gotestsum-rerun-fails
|
|
||||||
- run: *notify-slack-failure
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
check-go-mod:
|
|
||||||
docker:
|
|
||||||
- image: *GOLANG_IMAGE
|
|
||||||
environment:
|
|
||||||
<<: *ENVIRONMENT
|
|
||||||
steps:
|
|
||||||
- checkout
|
|
||||||
- run: go mod tidy
|
|
||||||
- run: |
|
|
||||||
if [[ -n $(git status -s) ]]; then
|
|
||||||
echo "Git directory has changes"
|
|
||||||
git status -s
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
- run: *notify-slack-failure
|
|
||||||
|
|
||||||
# build is a templated job for build-x
|
|
||||||
build-distros: &build-distros
|
|
||||||
docker:
|
|
||||||
- image: *GOLANG_IMAGE
|
|
||||||
resource_class: large
|
|
||||||
environment: &build-env
|
|
||||||
<<: *ENVIRONMENT
|
|
||||||
steps:
|
|
||||||
- checkout
|
|
||||||
- run:
|
|
||||||
name: Build
|
|
||||||
command: |
|
|
||||||
for os in $XC_OS; do
|
|
||||||
target="./pkg/bin/${GOOS}_${GOARCH}/"
|
|
||||||
GOOS="$os" CGO_ENABLED=0 go build -o "${target}" -ldflags "${GOLDFLAGS}" -tags "${GOTAGS}"
|
|
||||||
done
|
|
||||||
|
|
||||||
# save dev build to CircleCI
|
|
||||||
- store_artifacts:
|
|
||||||
path: ./pkg/bin
|
|
||||||
- run: *notify-slack-failure
|
|
||||||
|
|
||||||
# create a development build
|
|
||||||
dev-build:
|
|
||||||
docker:
|
|
||||||
- image: *GOLANG_IMAGE
|
|
||||||
resource_class: large
|
|
||||||
environment:
|
|
||||||
<<: *ENVIRONMENT
|
|
||||||
steps:
|
|
||||||
- checkout
|
|
||||||
- attach_workspace: # this normally runs as the first job and has nothing to attach; only used in main branch after rebuilding UI
|
|
||||||
at: .
|
|
||||||
- run:
|
|
||||||
name: Build
|
|
||||||
command: |
|
|
||||||
make dev
|
|
||||||
mkdir -p /home/circleci/go/bin
|
|
||||||
cp ./bin/consul /home/circleci/go/bin/consul
|
|
||||||
|
|
||||||
# save dev build to pass to downstream jobs
|
|
||||||
- persist_to_workspace:
|
|
||||||
root: /home/circleci/go/bin
|
|
||||||
paths:
|
|
||||||
- consul
|
|
||||||
- run: *notify-slack-failure
|
|
||||||
|
|
||||||
# upload development build to s3
|
|
||||||
dev-upload-s3:
|
|
||||||
docker:
|
|
||||||
- image: *GOLANG_IMAGE
|
|
||||||
environment:
|
|
||||||
<<: *ENVIRONMENT
|
|
||||||
steps:
|
|
||||||
- checkout
|
|
||||||
- *get-aws-cli
|
|
||||||
- assume-role:
|
|
||||||
access-key: AWS_ACCESS_KEY_ID_S3_UPLOAD
|
|
||||||
secret-key: AWS_SECRET_ACCESS_KEY_S3_UPLOAD
|
|
||||||
role-arn: ROLE_ARN_S3_UPLOAD
|
|
||||||
# get consul binary
|
|
||||||
- attach_workspace:
|
|
||||||
at: bin/
|
|
||||||
- run:
|
|
||||||
name: package binary
|
|
||||||
command: zip -j consul.zip bin/consul
|
|
||||||
- run:
|
|
||||||
name: Upload to s3
|
|
||||||
command: |
|
|
||||||
if [ -n "${S3_ARTIFACT_PATH}" ]; then
|
|
||||||
aws s3 cp \
|
|
||||||
--metadata "CIRCLECI=${CIRCLECI},CIRCLE_BUILD_URL=${CIRCLE_BUILD_URL},CIRCLE_BRANCH=${CIRCLE_BRANCH}" \
|
|
||||||
"consul.zip" "s3://${S3_ARTIFACT_BUCKET}/${S3_ARTIFACT_PATH}/${CIRCLE_SHA1}.zip" --acl public-read
|
|
||||||
else
|
|
||||||
echo "CircleCI - S3_ARTIFACT_PATH was not set"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
- run: *notify-slack-failure
|
|
||||||
|
|
||||||
# upload dev docker image
|
|
||||||
dev-upload-docker:
|
|
||||||
docker:
|
|
||||||
- image: *GOLANG_IMAGE # use a circleci image so the attach_workspace step works (has ca-certs installed)
|
|
||||||
environment:
|
|
||||||
<<: *ENVIRONMENT
|
|
||||||
steps:
|
|
||||||
- checkout
|
|
||||||
# get consul binary
|
|
||||||
- attach_workspace:
|
|
||||||
at: bin/
|
|
||||||
- setup_remote_docker
|
|
||||||
- run: make ci.dev-docker
|
|
||||||
- run: *notify-slack-failure
|
|
||||||
nomad-integration-test: &NOMAD_TESTS
|
|
||||||
docker:
|
|
||||||
- image: docker.mirror.hashicorp.services/cimg/go:1.20
|
|
||||||
parameters:
|
|
||||||
nomad-version:
|
|
||||||
type: enum
|
|
||||||
enum: *supported_nomad_versions
|
|
||||||
default: *default_nomad_version
|
|
||||||
environment:
|
|
||||||
<<: *ENVIRONMENT
|
|
||||||
NOMAD_WORKING_DIR: &NOMAD_WORKING_DIR /home/circleci/go/src/github.com/hashicorp/nomad
|
|
||||||
NOMAD_VERSION: << parameters.nomad-version >>
|
|
||||||
steps: &NOMAD_INTEGRATION_TEST_STEPS
|
|
||||||
- run: git clone https://github.com/hashicorp/nomad.git --branch v${NOMAD_VERSION} ${NOMAD_WORKING_DIR}
|
|
||||||
|
|
||||||
# get consul binary
|
|
||||||
- attach_workspace:
|
|
||||||
at: /home/circleci/go/bin
|
|
||||||
|
|
||||||
# make dev build of nomad
|
|
||||||
- run:
|
|
||||||
command: make pkg/linux_amd64/nomad
|
|
||||||
working_directory: *NOMAD_WORKING_DIR
|
|
||||||
|
|
||||||
- run: *install-gotestsum
|
|
||||||
|
|
||||||
# run integration tests
|
|
||||||
- run:
|
|
||||||
name: go test
|
|
||||||
command: |
|
|
||||||
mkdir -p $TEST_RESULTS_DIR
|
|
||||||
gotestsum \
|
|
||||||
--format=short-verbose \
|
|
||||||
--junitfile $TEST_RESULTS_DIR/results.xml -- \
|
|
||||||
./command/agent/consul -run TestConsul
|
|
||||||
working_directory: *NOMAD_WORKING_DIR
|
|
||||||
|
|
||||||
# store test results for CircleCI
|
|
||||||
- store_test_results:
|
|
||||||
path: *TEST_RESULTS_DIR
|
|
||||||
- store_artifacts:
|
|
||||||
path: *TEST_RESULTS_DIR
|
|
||||||
- run: *notify-slack-failure
|
|
||||||
|
|
||||||
compatibility-integration-test:
|
|
||||||
machine:
|
|
||||||
image: *UBUNTU_CI_IMAGE
|
|
||||||
docker_layer_caching: true
|
|
||||||
parallelism: 1
|
|
||||||
steps:
|
|
||||||
- checkout
|
|
||||||
# Get go binary from workspace
|
|
||||||
- attach_workspace:
|
|
||||||
at: .
|
|
||||||
# Build the consul:local image from the already built binary
|
|
||||||
- run:
|
|
||||||
command: |
|
|
||||||
sudo rm -rf /usr/local/go
|
|
||||||
wget https://dl.google.com/go/go${GO_VERSION}.linux-amd64.tar.gz
|
|
||||||
sudo tar -C /usr/local -xzvf go${GO_VERSION}.linux-amd64.tar.gz
|
|
||||||
environment:
|
|
||||||
<<: *ENVIRONMENT
|
|
||||||
- run: go env
|
|
||||||
- run: *install-gotestsum
|
|
||||||
- run: docker build -t consul:local -f ./build-support/docker/Consul-Dev.dockerfile .
|
|
||||||
- run:
|
|
||||||
name: Compatibility Integration Tests
|
|
||||||
command: |
|
|
||||||
mkdir -p /tmp/test-results/
|
|
||||||
cd ./test/integration/consul-container
|
|
||||||
docker run --rm consul:local consul version
|
|
||||||
gotestsum \
|
|
||||||
--raw-command \
|
|
||||||
--format=short-verbose \
|
|
||||||
--debug \
|
|
||||||
--rerun-fails=3 \
|
|
||||||
--packages="./..." \
|
|
||||||
-- \
|
|
||||||
go test \
|
|
||||||
-p=4 \
|
|
||||||
-timeout=30m \
|
|
||||||
-json \
|
|
||||||
`go list ./... | grep -v upgrade` \
|
|
||||||
--target-image consul \
|
|
||||||
--target-version local \
|
|
||||||
--latest-image consul \
|
|
||||||
--latest-version latest
|
|
||||||
ls -lrt
|
|
||||||
environment:
|
|
||||||
# this is needed because of incompatibility between RYUK container and circleci
|
|
||||||
GOTESTSUM_JUNITFILE: /tmp/test-results/results.xml
|
|
||||||
GOTESTSUM_FORMAT: standard-verbose
|
|
||||||
COMPOSE_INTERACTIVE_NO_CLI: 1
|
|
||||||
# tput complains if this isn't set to something.
|
|
||||||
TERM: ansi
|
|
||||||
- store_test_results:
|
|
||||||
path: *TEST_RESULTS_DIR
|
|
||||||
- store_artifacts:
|
|
||||||
path: *TEST_RESULTS_DIR
|
|
||||||
- run: *notify-slack-failure
|
|
||||||
|
|
||||||
upgrade-integration-test:
|
|
||||||
machine:
|
|
||||||
image: *UBUNTU_CI_IMAGE
|
|
||||||
docker_layer_caching: true
|
|
||||||
parallelism: 3
|
|
||||||
resource_class: large
|
|
||||||
parameters:
|
|
||||||
consul-version:
|
|
||||||
type: enum
|
|
||||||
enum: *consul_versions
|
|
||||||
environment:
|
|
||||||
CONSUL_VERSION: << parameters.consul-version >>
|
|
||||||
steps:
|
|
||||||
- checkout
|
|
||||||
# Get go binary from workspace
|
|
||||||
- attach_workspace:
|
|
||||||
at: .
|
|
||||||
# Build the consul:local image from the already built binary
|
|
||||||
- run:
|
|
||||||
command: |
|
|
||||||
sudo rm -rf /usr/local/go
|
|
||||||
wget https://dl.google.com/go/go${GO_VERSION}.linux-amd64.tar.gz
|
|
||||||
sudo tar -C /usr/local -xzvf go${GO_VERSION}.linux-amd64.tar.gz
|
|
||||||
environment:
|
|
||||||
<<: *ENVIRONMENT
|
|
||||||
- run: go env
|
|
||||||
- run: *install-gotestsum
|
|
||||||
- run: docker build -t consul:local -f ./build-support/docker/Consul-Dev.dockerfile .
|
|
||||||
- run:
|
|
||||||
name: Upgrade Integration Tests
|
|
||||||
command: |
|
|
||||||
mkdir -p /tmp/test-results/
|
|
||||||
cd ./test/integration/consul-container
|
|
||||||
docker run --rm consul:local consul version
|
|
||||||
gotestsum \
|
|
||||||
--raw-command \
|
|
||||||
--format=short-verbose \
|
|
||||||
--debug \
|
|
||||||
--rerun-fails=3 \
|
|
||||||
--packages="./..." \
|
|
||||||
-- \
|
|
||||||
go test \
|
|
||||||
-p=4 \
|
|
||||||
-tags "${GOTAGS}" \
|
|
||||||
-timeout=30m \
|
|
||||||
-json \
|
|
||||||
./.../upgrade/ \
|
|
||||||
--target-image consul \
|
|
||||||
--target-version local \
|
|
||||||
--latest-image consul \
|
|
||||||
--latest-version $CONSUL_VERSION
|
|
||||||
ls -lrt
|
|
||||||
environment:
|
|
||||||
# this is needed because of incompatibility between RYUK container and circleci
|
|
||||||
GOTESTSUM_JUNITFILE: /tmp/test-results/results.xml
|
|
||||||
GOTESTSUM_FORMAT: standard-verbose
|
|
||||||
COMPOSE_INTERACTIVE_NO_CLI: 1
|
|
||||||
# tput complains if this isn't set to something.
|
|
||||||
TERM: ansi
|
|
||||||
- store_test_results:
|
|
||||||
path: *TEST_RESULTS_DIR
|
|
||||||
- store_artifacts:
|
|
||||||
path: *TEST_RESULTS_DIR
|
|
||||||
- run: *notify-slack-failure
|
|
||||||
|
|
||||||
envoy-integration-test: &ENVOY_TESTS
|
|
||||||
machine:
|
|
||||||
image: *UBUNTU_CI_IMAGE
|
|
||||||
parallelism: 4
|
|
||||||
resource_class: medium
|
|
||||||
parameters:
|
|
||||||
envoy-version:
|
|
||||||
type: enum
|
|
||||||
enum: *supported_envoy_versions
|
|
||||||
default: *default_envoy_version
|
|
||||||
xds-target:
|
|
||||||
type: enum
|
|
||||||
enum: ["server", "client"]
|
|
||||||
default: "server"
|
|
||||||
environment:
|
|
||||||
ENVOY_VERSION: << parameters.envoy-version >>
|
|
||||||
XDS_TARGET: << parameters.xds-target >>
|
|
||||||
AWS_LAMBDA_REGION: us-west-2
|
|
||||||
steps: &ENVOY_INTEGRATION_TEST_STEPS
|
|
||||||
- checkout
|
|
||||||
- assume-role:
|
|
||||||
access-key: AWS_ACCESS_KEY_ID_LAMBDA
|
|
||||||
secret-key: AWS_SECRET_ACCESS_KEY_LAMBDA
|
|
||||||
role-arn: ROLE_ARN_LAMBDA
|
|
||||||
# Get go binary from workspace
|
|
||||||
- attach_workspace:
|
|
||||||
at: .
|
|
||||||
- run: *install-gotestsum
|
|
||||||
# Build the consul:local image from the already built binary
|
|
||||||
- run: docker build -t consul:local -f ./build-support/docker/Consul-Dev.dockerfile .
|
|
||||||
- run:
|
|
||||||
name: Envoy Integration Tests
|
|
||||||
command: |
|
|
||||||
subtests=$(ls -d test/integration/connect/envoy/*/ | xargs -n 1 basename | circleci tests split)
|
|
||||||
echo "Running $(echo $subtests | wc -w) subtests"
|
|
||||||
echo "$subtests"
|
|
||||||
subtests_pipe_sepr=$(echo "$subtests" | xargs | sed 's/ /|/g')
|
|
||||||
mkdir -p /tmp/test-results/
|
|
||||||
gotestsum -- -timeout=30m -tags integration ./test/integration/connect/envoy -run="TestEnvoy/($subtests_pipe_sepr)"
|
|
||||||
environment:
|
|
||||||
GOTESTSUM_JUNITFILE: /tmp/test-results/results.xml
|
|
||||||
GOTESTSUM_FORMAT: standard-verbose
|
|
||||||
COMPOSE_INTERACTIVE_NO_CLI: 1
|
|
||||||
LAMBDA_TESTS_ENABLED: "true"
|
|
||||||
# tput complains if this isn't set to something.
|
|
||||||
TERM: ansi
|
|
||||||
- store_artifacts:
|
|
||||||
path: ./test/integration/connect/envoy/workdir/logs
|
|
||||||
destination: container-logs
|
|
||||||
- store_test_results:
|
|
||||||
path: *TEST_RESULTS_DIR
|
|
||||||
- store_artifacts:
|
|
||||||
path: *TEST_RESULTS_DIR
|
|
||||||
- run: *notify-slack-failure
|
|
||||||
|
|
||||||
# run integration tests for the connect ca providers with vault
|
|
||||||
vault-integration-test:
|
|
||||||
docker:
|
|
||||||
- image: *GOLANG_IMAGE
|
|
||||||
parameters:
|
|
||||||
vault-version:
|
|
||||||
type: enum
|
|
||||||
enum: *supported_vault_versions
|
|
||||||
default: *default_vault_version
|
|
||||||
environment:
|
|
||||||
<<: *ENVIRONMENT
|
|
||||||
VAULT_BINARY_VERSION: << parameters.vault-version >>
|
|
||||||
steps: &VAULT_INTEGRATION_TEST_STEPS
|
|
||||||
- run:
|
|
||||||
name: Install vault
|
|
||||||
command: |
|
|
||||||
wget -q -O /tmp/vault.zip https://releases.hashicorp.com/vault/${VAULT_BINARY_VERSION}/vault_${VAULT_BINARY_VERSION}_linux_amd64.zip
|
|
||||||
sudo unzip -d /usr/local/bin /tmp/vault.zip
|
|
||||||
rm -rf /tmp/vault*
|
|
||||||
vault version
|
|
||||||
- checkout
|
|
||||||
- run: go mod download
|
|
||||||
- run:
|
|
||||||
name: go test
|
|
||||||
command: |
|
|
||||||
mkdir -p $TEST_RESULTS_DIR
|
|
||||||
make test-connect-ca-providers
|
|
||||||
- store_test_results:
|
|
||||||
path: *TEST_RESULTS_DIR
|
|
||||||
- run: *notify-slack-failure
|
|
||||||
|
|
||||||
# The noop job is a used as a very fast job in the verify-ci workflow because every workflow
|
|
||||||
# requires at least one job. It does nothing.
|
|
||||||
noop:
|
|
||||||
docker:
|
|
||||||
- image: docker.mirror.hashicorp.services/alpine:latest
|
|
||||||
steps:
|
|
||||||
- run: "echo ok"
|
|
||||||
|
|
||||||
workflows:
|
|
||||||
test-integrations:
|
|
||||||
jobs:
|
|
||||||
- dev-build: &filter-ignore-non-go-branches
|
|
||||||
filters:
|
|
||||||
branches:
|
|
||||||
ignore:
|
|
||||||
- stable-website
|
|
||||||
- /^docs\/.*/
|
|
||||||
- /^ui\/.*/
|
|
||||||
- /^mktg-.*/ # Digital Team Terraform-generated branches' prefix
|
|
||||||
- /^backport\/docs\/.*/
|
|
||||||
- /^backport\/ui\/.*/
|
|
||||||
- /^backport\/mktg-.*/
|
|
||||||
- dev-upload-s3: &dev-upload
|
|
||||||
requires:
|
|
||||||
- dev-build
|
|
||||||
filters:
|
|
||||||
branches:
|
|
||||||
ignore:
|
|
||||||
- /^pull\/.*$/ # only push dev builds from non forks
|
|
||||||
- main # all main dev uploads will include a UI rebuild in build-distros
|
|
||||||
- dev-upload-docker:
|
|
||||||
<<: *dev-upload
|
|
||||||
context: consul-ci
|
|
||||||
- nomad-integration-test:
|
|
||||||
requires:
|
|
||||||
- dev-build
|
|
||||||
matrix:
|
|
||||||
parameters:
|
|
||||||
nomad-version: *supported_nomad_versions
|
|
||||||
- vault-integration-test:
|
|
||||||
matrix:
|
|
||||||
parameters:
|
|
||||||
vault-version: *supported_vault_versions
|
|
||||||
<<: *filter-ignore-non-go-branches
|
|
||||||
- envoy-integration-test:
|
|
||||||
requires:
|
|
||||||
- dev-build
|
|
||||||
matrix:
|
|
||||||
parameters:
|
|
||||||
envoy-version: *supported_envoy_versions
|
|
||||||
xds-target: ["server", "client"]
|
|
||||||
- compatibility-integration-test:
|
|
||||||
requires:
|
|
||||||
- dev-build
|
|
||||||
- upgrade-integration-test:
|
|
||||||
requires:
|
|
||||||
- dev-build
|
|
||||||
matrix:
|
|
||||||
parameters:
|
|
||||||
consul-version: *consul_versions
|
|
||||||
|
|
||||||
- noop
|
|
|
@ -1,24 +0,0 @@
|
||||||
#!/usr/bin/env bash
|
|
||||||
# Copyright (c) HashiCorp, Inc.
|
|
||||||
# SPDX-License-Identifier: MPL-2.0
|
|
||||||
|
|
||||||
#
|
|
||||||
# Add a comment on the github PR if there were any rerun tests.
|
|
||||||
#
|
|
||||||
set -eu -o pipefail
|
|
||||||
|
|
||||||
report_filename="${1?report filename is required}"
|
|
||||||
if [ ! -s "$report_filename" ]; then
|
|
||||||
echo "gotestsum rerun report file is empty or missing"
|
|
||||||
exit 0
|
|
||||||
fi
|
|
||||||
|
|
||||||
function report {
|
|
||||||
echo ":repeat: gotestsum re-ran some tests in $CIRCLE_BUILD_URL"
|
|
||||||
echo
|
|
||||||
echo '```'
|
|
||||||
cat "$report_filename"
|
|
||||||
echo '```'
|
|
||||||
}
|
|
||||||
|
|
||||||
report
|
|
|
@ -1,110 +0,0 @@
|
||||||
# This file is maintained automatically by "terraform init".
|
|
||||||
# Manual edits may be lost in future updates.
|
|
||||||
|
|
||||||
provider "registry.terraform.io/hashicorp/aws" {
|
|
||||||
version = "3.41.0"
|
|
||||||
constraints = "~> 3.0, >= 3.27.0"
|
|
||||||
hashes = [
|
|
||||||
"h1:YLbsjPt/oZdEhV+KJzMVBwGDViw14Ih5bYr+EOudIVw=",
|
|
||||||
"zh:01449ed390710428c92dcd3c6b8ba7e06cc1581b927e96eabe9ebc2653d1e3e0",
|
|
||||||
"zh:259c1267ab5798e90c8edb4b9c3b17c1dd98e5265c121eaf025a5836e88f4d1d",
|
|
||||||
"zh:2671ec766eb63d642b8b3d847d67db83d578a44d4945bc45ddd7fbb6d09298ca",
|
|
||||||
"zh:36082943070c8f4f9a1e557a6b18d279db079b19210cd5249ba03c87de44e5d4",
|
|
||||||
"zh:49a52c679a14c7755db34e0b98ef062f5e42b7beec1decec2511ecef16690b3f",
|
|
||||||
"zh:82cf0db34865d8844139a6db35436a6b4664995972dc53e298c93a7133101b0f",
|
|
||||||
"zh:9082239ae74e4f8b9763087bf454dcfb1019e1a65c4d9ab8057f8425b9da550b",
|
|
||||||
"zh:a9b51d299b3ffe07684e86d8ea11513411f53375439be5aa87fdfef59cbe5dfa",
|
|
||||||
"zh:b33fb3990c9bb2a1337725651a98d9563a3b91b50ddeb7c7b655c463faa81dda",
|
|
||||||
"zh:bd759da1e0c18a2c17bfe607660d52d8981aa51460d70d2e338ddbcef1b50183",
|
|
||||||
"zh:eebb98f9ba764dd09b059c5865ce7e8bace49fe470980f813a767cbe833a933e",
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
||||||
provider "registry.terraform.io/hashicorp/local" {
|
|
||||||
version = "2.1.0"
|
|
||||||
hashes = [
|
|
||||||
"h1:KfieWtVyGWwplSoLIB5usKAUnrIkDQBkWaR5TI+4WYg=",
|
|
||||||
"zh:0f1ec65101fa35050978d483d6e8916664b7556800348456ff3d09454ac1eae2",
|
|
||||||
"zh:36e42ac19f5d68467aacf07e6adcf83c7486f2e5b5f4339e9671f68525fc87ab",
|
|
||||||
"zh:6db9db2a1819e77b1642ec3b5e95042b202aee8151a0256d289f2e141bf3ceb3",
|
|
||||||
"zh:719dfd97bb9ddce99f7d741260b8ece2682b363735c764cac83303f02386075a",
|
|
||||||
"zh:7598bb86e0378fd97eaa04638c1a4c75f960f62f69d3662e6d80ffa5a89847fe",
|
|
||||||
"zh:ad0a188b52517fec9eca393f1e2c9daea362b33ae2eb38a857b6b09949a727c1",
|
|
||||||
"zh:c46846c8df66a13fee6eff7dc5d528a7f868ae0dcf92d79deaac73cc297ed20c",
|
|
||||||
"zh:dc1a20a2eec12095d04bf6da5321f535351a594a636912361db20eb2a707ccc4",
|
|
||||||
"zh:e57ab4771a9d999401f6badd8b018558357d3cbdf3d33cc0c4f83e818ca8e94b",
|
|
||||||
"zh:ebdcde208072b4b0f8d305ebf2bfdc62c926e0717599dcf8ec2fd8c5845031c3",
|
|
||||||
"zh:ef34c52b68933bedd0868a13ccfd59ff1c820f299760b3c02e008dc95e2ece91",
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
||||||
provider "registry.terraform.io/hashicorp/null" {
|
|
||||||
version = "3.1.0"
|
|
||||||
hashes = [
|
|
||||||
"h1:xhbHC6in3nQryvTQBWKxebi3inG5OCgHgc4fRxL0ymc=",
|
|
||||||
"zh:02a1675fd8de126a00460942aaae242e65ca3380b5bb192e8773ef3da9073fd2",
|
|
||||||
"zh:53e30545ff8926a8e30ad30648991ca8b93b6fa496272cd23b26763c8ee84515",
|
|
||||||
"zh:5f9200bf708913621d0f6514179d89700e9aa3097c77dac730e8ba6e5901d521",
|
|
||||||
"zh:9ebf4d9704faba06b3ec7242c773c0fbfe12d62db7d00356d4f55385fc69bfb2",
|
|
||||||
"zh:a6576c81adc70326e4e1c999c04ad9ca37113a6e925aefab4765e5a5198efa7e",
|
|
||||||
"zh:a8a42d13346347aff6c63a37cda9b2c6aa5cc384a55b2fe6d6adfa390e609c53",
|
|
||||||
"zh:c797744d08a5307d50210e0454f91ca4d1c7621c68740441cf4579390452321d",
|
|
||||||
"zh:cecb6a304046df34c11229f20a80b24b1603960b794d68361a67c5efe58e62b8",
|
|
||||||
"zh:e1371aa1e502000d9974cfaff5be4cfa02f47b17400005a16f14d2ef30dc2a70",
|
|
||||||
"zh:fc39cc1fe71234a0b0369d5c5c7f876c71b956d23d7d6f518289737a001ba69b",
|
|
||||||
"zh:fea4227271ebf7d9e2b61b89ce2328c7262acd9fd190e1fd6d15a591abfa848e",
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
||||||
provider "registry.terraform.io/hashicorp/random" {
|
|
||||||
version = "3.1.0"
|
|
||||||
hashes = [
|
|
||||||
"h1:rKYu5ZUbXwrLG1w81k7H3nce/Ys6yAxXhWcbtk36HjY=",
|
|
||||||
"zh:2bbb3339f0643b5daa07480ef4397bd23a79963cc364cdfbb4e86354cb7725bc",
|
|
||||||
"zh:3cd456047805bf639fbf2c761b1848880ea703a054f76db51852008b11008626",
|
|
||||||
"zh:4f251b0eda5bb5e3dc26ea4400dba200018213654b69b4a5f96abee815b4f5ff",
|
|
||||||
"zh:7011332745ea061e517fe1319bd6c75054a314155cb2c1199a5b01fe1889a7e2",
|
|
||||||
"zh:738ed82858317ccc246691c8b85995bc125ac3b4143043219bd0437adc56c992",
|
|
||||||
"zh:7dbe52fac7bb21227acd7529b487511c91f4107db9cc4414f50d04ffc3cab427",
|
|
||||||
"zh:a3a9251fb15f93e4cfc1789800fc2d7414bbc18944ad4c5c98f466e6477c42bc",
|
|
||||||
"zh:a543ec1a3a8c20635cf374110bd2f87c07374cf2c50617eee2c669b3ceeeaa9f",
|
|
||||||
"zh:d9ab41d556a48bd7059f0810cf020500635bfc696c9fc3adab5ea8915c1d886b",
|
|
||||||
"zh:d9e13427a7d011dbd654e591b0337e6074eef8c3b9bb11b2e39eaaf257044fd7",
|
|
||||||
"zh:f7605bd1437752114baf601bdf6931debe6dc6bfe3006eb7e9bb9080931dca8a",
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
||||||
provider "registry.terraform.io/hashicorp/template" {
|
|
||||||
version = "2.2.0"
|
|
||||||
hashes = [
|
|
||||||
"h1:0wlehNaxBX7GJQnPfQwTNvvAf38Jm0Nv7ssKGMaG6Og=",
|
|
||||||
"zh:01702196f0a0492ec07917db7aaa595843d8f171dc195f4c988d2ffca2a06386",
|
|
||||||
"zh:09aae3da826ba3d7df69efeb25d146a1de0d03e951d35019a0f80e4f58c89b53",
|
|
||||||
"zh:09ba83c0625b6fe0a954da6fbd0c355ac0b7f07f86c91a2a97849140fea49603",
|
|
||||||
"zh:0e3a6c8e16f17f19010accd0844187d524580d9fdb0731f675ffcf4afba03d16",
|
|
||||||
"zh:45f2c594b6f2f34ea663704cc72048b212fe7d16fb4cfd959365fa997228a776",
|
|
||||||
"zh:77ea3e5a0446784d77114b5e851c970a3dde1e08fa6de38210b8385d7605d451",
|
|
||||||
"zh:8a154388f3708e3df5a69122a23bdfaf760a523788a5081976b3d5616f7d30ae",
|
|
||||||
"zh:992843002f2db5a11e626b3fc23dc0c87ad3729b3b3cff08e32ffb3df97edbde",
|
|
||||||
"zh:ad906f4cebd3ec5e43d5cd6dc8f4c5c9cc3b33d2243c89c5fc18f97f7277b51d",
|
|
||||||
"zh:c979425ddb256511137ecd093e23283234da0154b7fa8b21c2687182d9aea8b2",
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
||||||
provider "registry.terraform.io/hashicorp/tls" {
|
|
||||||
version = "3.1.0"
|
|
||||||
hashes = [
|
|
||||||
"h1:XTU9f6sGMZHOT8r/+LWCz2BZOPH127FBTPjMMEAAu1U=",
|
|
||||||
"zh:3d46616b41fea215566f4a957b6d3a1aa43f1f75c26776d72a98bdba79439db6",
|
|
||||||
"zh:623a203817a6dafa86f1b4141b645159e07ec418c82fe40acd4d2a27543cbaa2",
|
|
||||||
"zh:668217e78b210a6572e7b0ecb4134a6781cc4d738f4f5d09eb756085b082592e",
|
|
||||||
"zh:95354df03710691773c8f50a32e31fca25f124b7f3d6078265fdf3c4e1384dca",
|
|
||||||
"zh:9f97ab190380430d57392303e3f36f4f7835c74ea83276baa98d6b9a997c3698",
|
|
||||||
"zh:a16f0bab665f8d933e95ca055b9c8d5707f1a0dd8c8ecca6c13091f40dc1e99d",
|
|
||||||
"zh:be274d5008c24dc0d6540c19e22dbb31ee6bfdd0b2cddd4d97f3cd8a8d657841",
|
|
||||||
"zh:d5faa9dce0a5fc9d26b2463cea5be35f8586ab75030e7fa4d4920cd73ee26989",
|
|
||||||
"zh:e9b672210b7fb410780e7b429975adcc76dd557738ecc7c890ea18942eb321a5",
|
|
||||||
"zh:eb1f8368573d2370605d6dbf60f9aaa5b64e55741d96b5fb026dbfe91de67c0d",
|
|
||||||
"zh:fc1e12b713837b85daf6c3bb703d7795eaf1c5177aebae1afcf811dd7009f4b0",
|
|
||||||
]
|
|
||||||
}
|
|
|
@ -1,29 +0,0 @@
|
||||||
# Copyright (c) HashiCorp, Inc.
|
|
||||||
# SPDX-License-Identifier: MPL-2.0
|
|
||||||
|
|
||||||
terraform {
|
|
||||||
backend "s3" {
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
provider "aws" {
|
|
||||||
assume_role {
|
|
||||||
role_arn = var.role_arn
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
module "load-test" {
|
|
||||||
source = "../../../test/load/terraform"
|
|
||||||
|
|
||||||
vpc_az = ["us-east-2a", "us-east-2b"]
|
|
||||||
vpc_name = var.vpc_name
|
|
||||||
vpc_cidr = "10.0.0.0/16"
|
|
||||||
vpc_allwed_ssh_cidr = "0.0.0.0/0"
|
|
||||||
public_subnet_cidrs = ["10.0.1.0/24", "10.0.2.0/24"]
|
|
||||||
private_subnet_cidrs = ["10.0.3.0/24"]
|
|
||||||
test_public_ip = true
|
|
||||||
ami_owners = var.ami_owners
|
|
||||||
consul_download_url = var.consul_download_url
|
|
||||||
cluster_name = var.cluster_name
|
|
||||||
cluster_tag_key = var.cluster_tag_key
|
|
||||||
}
|
|
|
@ -1,33 +0,0 @@
|
||||||
# Copyright (c) HashiCorp, Inc.
|
|
||||||
# SPDX-License-Identifier: MPL-2.0
|
|
||||||
|
|
||||||
variable "vpc_name" {
|
|
||||||
description = "Name of the VPC"
|
|
||||||
}
|
|
||||||
|
|
||||||
variable "ami_owners" {
|
|
||||||
type = list(string)
|
|
||||||
description = "The account owner number which the desired AMI is in"
|
|
||||||
}
|
|
||||||
|
|
||||||
variable "role_arn" {
|
|
||||||
type = string
|
|
||||||
description = "Role ARN for assume role"
|
|
||||||
}
|
|
||||||
|
|
||||||
variable "consul_download_url" {
|
|
||||||
type = string
|
|
||||||
description = "URL to download the Consul binary from"
|
|
||||||
default = ""
|
|
||||||
}
|
|
||||||
variable "cluster_name" {
|
|
||||||
description = "What to name the Consul cluster and all of its associated resources"
|
|
||||||
type = string
|
|
||||||
default = "consul-example"
|
|
||||||
}
|
|
||||||
|
|
||||||
variable "cluster_tag_key" {
|
|
||||||
description = "The tag the EC2 Instances will look for to automatically discover each other and form a cluster."
|
|
||||||
type = string
|
|
||||||
default = "consul-ci-load-test"
|
|
||||||
}
|
|
|
@ -67,8 +67,7 @@ issue. Stale issues will be closed.
|
||||||
### Prerequisites
|
### Prerequisites
|
||||||
|
|
||||||
If you wish to work on Consul itself, you'll first need to:
|
If you wish to work on Consul itself, you'll first need to:
|
||||||
- install [Go](https://golang.org) (the version should match that of our
|
- install [Go](https://golang.org)
|
||||||
[CI config's](https://github.com/hashicorp/consul/blob/main/.circleci/config.yml) Go image).
|
|
||||||
- [fork the Consul repo](../docs/contributing/fork-the-project.md)
|
- [fork the Consul repo](../docs/contributing/fork-the-project.md)
|
||||||
|
|
||||||
### Building Consul
|
### Building Consul
|
||||||
|
|
|
@ -60,7 +60,7 @@ theme/ui:
|
||||||
# thinking:
|
# thinking:
|
||||||
# type/bug:
|
# type/bug:
|
||||||
type/ci:
|
type/ci:
|
||||||
- .circleci/*
|
- .github/workflows/*
|
||||||
# type/crash:
|
# type/crash:
|
||||||
type/docs:
|
type/docs:
|
||||||
- website/**/*
|
- website/**/*
|
||||||
|
|
|
@ -79,7 +79,7 @@ jobs:
|
||||||
matrix:
|
matrix:
|
||||||
partition: [1, 2, 3, 4]
|
partition: [1, 2, 3, 4]
|
||||||
env:
|
env:
|
||||||
EMBER_TEST_REPORT: test-results/report-oss.xml # outputs test report for CircleCI test summary
|
EMBER_TEST_REPORT: test-results/report-oss.xml # outputs test report for CI test summary
|
||||||
EMBER_TEST_PARALLEL: true # enables test parallelization with ember-exam
|
EMBER_TEST_PARALLEL: true # enables test parallelization with ember-exam
|
||||||
CONSUL_NSPACES_ENABLED: ${{ endsWith(github.repository, '-enterprise') && 1 || 0 }} # NOTE: this should be 1 in ENT.
|
CONSUL_NSPACES_ENABLED: ${{ endsWith(github.repository, '-enterprise') && 1 || 0 }} # NOTE: this should be 1 in ENT.
|
||||||
JOBS: 2 # limit parallelism for broccoli-babel-transpiler
|
JOBS: 2 # limit parallelism for broccoli-babel-transpiler
|
||||||
|
|
|
@ -84,7 +84,7 @@ jobs:
|
||||||
partition: [ 1, 2, 3, 4 ]
|
partition: [ 1, 2, 3, 4 ]
|
||||||
env:
|
env:
|
||||||
CONSUL_NSPACES_ENABLED: 0
|
CONSUL_NSPACES_ENABLED: 0
|
||||||
EMBER_TEST_REPORT: test-results/report-oss.xml #outputs test report for CircleCI test summary
|
EMBER_TEST_REPORT: test-results/report-oss.xml #outputs test report for CI test summary
|
||||||
EMBER_TEST_PARALLEL: true #enables test parallelization with ember-exam
|
EMBER_TEST_PARALLEL: true #enables test parallelization with ember-exam
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
|
@ -156,7 +156,7 @@ jobs:
|
||||||
partition: [ 1, 2, 3, 4 ]
|
partition: [ 1, 2, 3, 4 ]
|
||||||
env:
|
env:
|
||||||
CONSUL_NSPACES_ENABLED: 1
|
CONSUL_NSPACES_ENABLED: 1
|
||||||
EMBER_TEST_REPORT: test-results/report-oss.xml #outputs test report for CircleCI test summary
|
EMBER_TEST_REPORT: test-results/report-oss.xml #outputs test report for CI test summary
|
||||||
EMBER_TEST_PARALLEL: true #enables test parallelization with ember-exam
|
EMBER_TEST_PARALLEL: true #enables test parallelization with ember-exam
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
|
|
|
@ -84,7 +84,7 @@ jobs:
|
||||||
partition: [ 1, 2, 3, 4 ]
|
partition: [ 1, 2, 3, 4 ]
|
||||||
env:
|
env:
|
||||||
CONSUL_NSPACES_ENABLED: 0
|
CONSUL_NSPACES_ENABLED: 0
|
||||||
EMBER_TEST_REPORT: test-results/report-oss.xml #outputs test report for CircleCI test summary
|
EMBER_TEST_REPORT: test-results/report-oss.xml #outputs test report for CI test summary
|
||||||
EMBER_TEST_PARALLEL: true #enables test parallelization with ember-exam
|
EMBER_TEST_PARALLEL: true #enables test parallelization with ember-exam
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
|
@ -156,7 +156,7 @@ jobs:
|
||||||
partition: [ 1, 2, 3, 4 ]
|
partition: [ 1, 2, 3, 4 ]
|
||||||
env:
|
env:
|
||||||
CONSUL_NSPACES_ENABLED: 1
|
CONSUL_NSPACES_ENABLED: 1
|
||||||
EMBER_TEST_REPORT: test-results/report-oss.xml #outputs test report for CircleCI test summary
|
EMBER_TEST_REPORT: test-results/report-oss.xml #outputs test report for CI test summary
|
||||||
EMBER_TEST_PARALLEL: true #enables test parallelization with ember-exam
|
EMBER_TEST_PARALLEL: true #enables test parallelization with ember-exam
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
|
|
|
@ -84,7 +84,7 @@ jobs:
|
||||||
partition: [ 1, 2, 3, 4 ]
|
partition: [ 1, 2, 3, 4 ]
|
||||||
env:
|
env:
|
||||||
CONSUL_NSPACES_ENABLED: 0
|
CONSUL_NSPACES_ENABLED: 0
|
||||||
EMBER_TEST_REPORT: test-results/report-oss.xml #outputs test report for CircleCI test summary
|
EMBER_TEST_REPORT: test-results/report-oss.xml #outputs test report for CI test summary
|
||||||
EMBER_TEST_PARALLEL: true #enables test parallelization with ember-exam
|
EMBER_TEST_PARALLEL: true #enables test parallelization with ember-exam
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
|
@ -156,7 +156,7 @@ jobs:
|
||||||
partition: [ 1, 2, 3, 4 ]
|
partition: [ 1, 2, 3, 4 ]
|
||||||
env:
|
env:
|
||||||
CONSUL_NSPACES_ENABLED: 1
|
CONSUL_NSPACES_ENABLED: 1
|
||||||
EMBER_TEST_REPORT: test-results/report-oss.xml #outputs test report for CircleCI test summary
|
EMBER_TEST_REPORT: test-results/report-oss.xml #outputs test report for CI test summary
|
||||||
EMBER_TEST_PARALLEL: true #enables test parallelization with ember-exam
|
EMBER_TEST_PARALLEL: true #enables test parallelization with ember-exam
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
|
|
|
@ -84,7 +84,7 @@ jobs:
|
||||||
partition: [ 1, 2, 3, 4 ]
|
partition: [ 1, 2, 3, 4 ]
|
||||||
env:
|
env:
|
||||||
CONSUL_NSPACES_ENABLED: 0
|
CONSUL_NSPACES_ENABLED: 0
|
||||||
EMBER_TEST_REPORT: test-results/report-oss.xml #outputs test report for CircleCI test summary
|
EMBER_TEST_REPORT: test-results/report-oss.xml #outputs test report for CI test summary
|
||||||
EMBER_TEST_PARALLEL: true #enables test parallelization with ember-exam
|
EMBER_TEST_PARALLEL: true #enables test parallelization with ember-exam
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
|
@ -156,7 +156,7 @@ jobs:
|
||||||
partition: [ 1, 2, 3, 4 ]
|
partition: [ 1, 2, 3, 4 ]
|
||||||
env:
|
env:
|
||||||
CONSUL_NSPACES_ENABLED: 1
|
CONSUL_NSPACES_ENABLED: 1
|
||||||
EMBER_TEST_REPORT: test-results/report-oss.xml #outputs test report for CircleCI test summary
|
EMBER_TEST_REPORT: test-results/report-oss.xml #outputs test report for CI test summary
|
||||||
EMBER_TEST_PARALLEL: true #enables test parallelization with ember-exam
|
EMBER_TEST_PARALLEL: true #enables test parallelization with ember-exam
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
|
|
|
@ -84,7 +84,7 @@ jobs:
|
||||||
partition: [ 1, 2, 3, 4 ]
|
partition: [ 1, 2, 3, 4 ]
|
||||||
env:
|
env:
|
||||||
CONSUL_NSPACES_ENABLED: 0
|
CONSUL_NSPACES_ENABLED: 0
|
||||||
EMBER_TEST_REPORT: test-results/report-oss.xml #outputs test report for CircleCI test summary
|
EMBER_TEST_REPORT: test-results/report-oss.xml #outputs test report for CI test summary
|
||||||
EMBER_TEST_PARALLEL: true #enables test parallelization with ember-exam
|
EMBER_TEST_PARALLEL: true #enables test parallelization with ember-exam
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
|
@ -156,7 +156,7 @@ jobs:
|
||||||
partition: [ 1, 2, 3, 4 ]
|
partition: [ 1, 2, 3, 4 ]
|
||||||
env:
|
env:
|
||||||
CONSUL_NSPACES_ENABLED: 1
|
CONSUL_NSPACES_ENABLED: 1
|
||||||
EMBER_TEST_REPORT: test-results/report-oss.xml #outputs test report for CircleCI test summary
|
EMBER_TEST_REPORT: test-results/report-oss.xml #outputs test report for CI test summary
|
||||||
EMBER_TEST_PARALLEL: true #enables test parallelization with ember-exam
|
EMBER_TEST_PARALLEL: true #enables test parallelization with ember-exam
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
|
|
|
@ -49,7 +49,7 @@ jobs:
|
||||||
uses: golangci/golangci-lint-action@08e2f20817b15149a52b5b3ebe7de50aff2ba8c5 # pin@v3.4.0
|
uses: golangci/golangci-lint-action@08e2f20817b15149a52b5b3ebe7de50aff2ba8c5 # pin@v3.4.0
|
||||||
with:
|
with:
|
||||||
working-directory: ${{ matrix.directory }}
|
working-directory: ${{ matrix.directory }}
|
||||||
version: v1.51
|
version: v1.51.1
|
||||||
args: --build-tags="${{ env.GOTAGS }}" -v
|
args: --build-tags="${{ env.GOTAGS }}" -v
|
||||||
- name: Notify Slack
|
- name: Notify Slack
|
||||||
if: ${{ failure() }}
|
if: ${{ failure() }}
|
||||||
|
|
|
@ -338,7 +338,7 @@ jobs:
|
||||||
--latest-version latest
|
--latest-version latest
|
||||||
ls -lrt
|
ls -lrt
|
||||||
env:
|
env:
|
||||||
# this is needed because of incompatibility between RYUK container and circleci
|
# this is needed because of incompatibility between RYUK container and GHA
|
||||||
GOTESTSUM_JUNITFILE: ${{ env.TEST_RESULTS_DIR }}/results.xml
|
GOTESTSUM_JUNITFILE: ${{ env.TEST_RESULTS_DIR }}/results.xml
|
||||||
GOTESTSUM_FORMAT: standard-verbose
|
GOTESTSUM_FORMAT: standard-verbose
|
||||||
COMPOSE_INTERACTIVE_NO_CLI: 1
|
COMPOSE_INTERACTIVE_NO_CLI: 1
|
||||||
|
@ -469,7 +469,7 @@ jobs:
|
||||||
--latest-version "${{ env.CONSUL_VERSION }}"
|
--latest-version "${{ env.CONSUL_VERSION }}"
|
||||||
ls -lrt
|
ls -lrt
|
||||||
env:
|
env:
|
||||||
# this is needed because of incompatibility between RYUK container and circleci
|
# this is needed because of incompatibility between RYUK container and GHA
|
||||||
GOTESTSUM_JUNITFILE: ${{ env.TEST_RESULTS_DIR }}/results.xml
|
GOTESTSUM_JUNITFILE: ${{ env.TEST_RESULTS_DIR }}/results.xml
|
||||||
GOTESTSUM_FORMAT: standard-verbose
|
GOTESTSUM_FORMAT: standard-verbose
|
||||||
COMPOSE_INTERACTIVE_NO_CLI: 1
|
COMPOSE_INTERACTIVE_NO_CLI: 1
|
||||||
|
|
12
GNUmakefile
12
GNUmakefile
|
@ -208,7 +208,7 @@ remote-docker: check-remote-dev-image-env
|
||||||
--push \
|
--push \
|
||||||
-f $(CURDIR)/build-support/docker/Consul-Dev-Multiarch.dockerfile $(CURDIR)/pkg/bin/
|
-f $(CURDIR)/build-support/docker/Consul-Dev-Multiarch.dockerfile $(CURDIR)/pkg/bin/
|
||||||
|
|
||||||
# In CircleCI, the linux binary will be attached from a previous step at bin/. This make target
|
# In CI, the linux binary will be attached from a previous step at bin/. This make target
|
||||||
# should only run in CI and not locally.
|
# should only run in CI and not locally.
|
||||||
ci.dev-docker:
|
ci.dev-docker:
|
||||||
@echo "Pulling consul container image - $(CONSUL_IMAGE_VERSION)"
|
@echo "Pulling consul container image - $(CONSUL_IMAGE_VERSION)"
|
||||||
|
@ -473,20 +473,10 @@ test-metrics-integ: test-compat-integ-setup
|
||||||
--latest-version latest
|
--latest-version latest
|
||||||
|
|
||||||
test-connect-ca-providers:
|
test-connect-ca-providers:
|
||||||
ifeq ("$(CIRCLECI)","true")
|
|
||||||
# Run in CI
|
|
||||||
gotestsum --format=short-verbose --junitfile "$(TEST_RESULTS_DIR)/gotestsum-report.xml" -- -cover -coverprofile=coverage.txt ./agent/connect/ca
|
|
||||||
# Run leader tests that require Vault
|
|
||||||
gotestsum --format=short-verbose --junitfile "$(TEST_RESULTS_DIR)/gotestsum-report-leader.xml" -- -cover -coverprofile=coverage-leader.txt -run Vault ./agent/consul
|
|
||||||
# Run agent tests that require Vault
|
|
||||||
gotestsum --format=short-verbose --junitfile "$(TEST_RESULTS_DIR)/gotestsum-report-agent.xml" -- -cover -coverprofile=coverage-agent.txt -run Vault ./agent
|
|
||||||
else
|
|
||||||
# Run locally
|
|
||||||
@echo "Running /agent/connect/ca tests in verbose mode"
|
@echo "Running /agent/connect/ca tests in verbose mode"
|
||||||
@go test -v ./agent/connect/ca
|
@go test -v ./agent/connect/ca
|
||||||
@go test -v ./agent/consul -run Vault
|
@go test -v ./agent/consul -run Vault
|
||||||
@go test -v ./agent -run Vault
|
@go test -v ./agent -run Vault
|
||||||
endif
|
|
||||||
|
|
||||||
.PHONY: proto
|
.PHONY: proto
|
||||||
proto: proto-tools proto-gen proto-mocks
|
proto: proto-tools proto-gen proto-mocks
|
||||||
|
|
|
@ -1150,9 +1150,6 @@ func TestCheckTCPPassing(t *testing.T) {
|
||||||
if os.Getenv("TRAVIS") == "true" {
|
if os.Getenv("TRAVIS") == "true" {
|
||||||
t.Skip("IPV6 not supported on travis-ci")
|
t.Skip("IPV6 not supported on travis-ci")
|
||||||
}
|
}
|
||||||
if os.Getenv("CIRCLECI") == "true" {
|
|
||||||
t.Skip("IPV6 not supported on CircleCI")
|
|
||||||
}
|
|
||||||
tcpServer = mockTCPServer(`tcp6`)
|
tcpServer = mockTCPServer(`tcp6`)
|
||||||
expectTCPStatus(t, tcpServer.Addr().String(), api.HealthPassing)
|
expectTCPStatus(t, tcpServer.Addr().String(), api.HealthPassing)
|
||||||
tcpServer.Close()
|
tcpServer.Close()
|
||||||
|
|
|
@ -149,7 +149,7 @@ func NewTestVaultServer(t testing.T) *TestVaultServer {
|
||||||
// We pass '-dev-no-store-token' to avoid having multiple vaults oddly
|
// We pass '-dev-no-store-token' to avoid having multiple vaults oddly
|
||||||
// interact and fail like this:
|
// interact and fail like this:
|
||||||
//
|
//
|
||||||
// Error initializing Dev mode: rename /home/circleci/.vault-token.tmp /home/circleci/.vault-token: no such file or directory
|
// Error initializing Dev mode: rename /.vault-token.tmp /.vault-token: no such file or directory
|
||||||
//
|
//
|
||||||
"-dev-no-store-token",
|
"-dev-no-store-token",
|
||||||
}
|
}
|
||||||
|
|
|
@ -48,7 +48,7 @@ contain other important source related to Consul.
|
||||||
* [ui] contains the source code for the Consul UI.
|
* [ui] contains the source code for the Consul UI.
|
||||||
* [website] contains the source for [consul.io](https://www.consul.io/). A pull requests
|
* [website] contains the source for [consul.io](https://www.consul.io/). A pull requests
|
||||||
can update the source code and Consul's documentation at the same time.
|
can update the source code and Consul's documentation at the same time.
|
||||||
* [.circleci] and [.github] contain the source for our CI and GitHub repository
|
* [.github] contains the source for our CI and GitHub repository
|
||||||
automation.
|
automation.
|
||||||
* [.changelog] contains markdown files that are used by [hashicorp/go-changelog] to produce the
|
* [.changelog] contains markdown files that are used by [hashicorp/go-changelog] to produce the
|
||||||
[CHANGELOG.md].
|
[CHANGELOG.md].
|
||||||
|
@ -59,7 +59,6 @@ contain other important source related to Consul.
|
||||||
|
|
||||||
[ui]: https://github.com/hashicorp/consul/tree/main/ui
|
[ui]: https://github.com/hashicorp/consul/tree/main/ui
|
||||||
[website]: https://github.com/hashicorp/consul/tree/main/website
|
[website]: https://github.com/hashicorp/consul/tree/main/website
|
||||||
[.circleci]: https://github.com/hashicorp/consul/tree/main/.circleci
|
|
||||||
[.github]: https://github.com/hashicorp/consul/tree/main/.github
|
[.github]: https://github.com/hashicorp/consul/tree/main/.github
|
||||||
[.changelog]: https://github.com/hashicorp/consul/tree/main/.changelog
|
[.changelog]: https://github.com/hashicorp/consul/tree/main/.changelog
|
||||||
[hashicorp/go-changelog]: https://github.com/hashicorp/go-changelog
|
[hashicorp/go-changelog]: https://github.com/hashicorp/go-changelog
|
||||||
|
|
|
@ -314,8 +314,7 @@ function pre_service_setup {
|
||||||
}
|
}
|
||||||
|
|
||||||
function start_services {
|
function start_services {
|
||||||
# Push the state to the shared docker volume (note this is because CircleCI
|
# Push the state to the shared docker volume
|
||||||
# can't use shared volumes)
|
|
||||||
docker cp workdir/. envoy_workdir_1:/workdir
|
docker cp workdir/. envoy_workdir_1:/workdir
|
||||||
|
|
||||||
# Start containers required
|
# Start containers required
|
||||||
|
@ -476,8 +475,7 @@ function run_tests {
|
||||||
# Wipe state
|
# Wipe state
|
||||||
wipe_volumes
|
wipe_volumes
|
||||||
|
|
||||||
# Push the state to the shared docker volume (note this is because CircleCI
|
# Push the state to the shared docker volume
|
||||||
# can't use shared volumes)
|
|
||||||
docker cp workdir/. envoy_workdir_1:/workdir
|
docker cp workdir/. envoy_workdir_1:/workdir
|
||||||
|
|
||||||
start_consul primary
|
start_consul primary
|
||||||
|
@ -559,10 +557,6 @@ function suite_setup {
|
||||||
echo "Rebuilding 'bats-verify' image..."
|
echo "Rebuilding 'bats-verify' image..."
|
||||||
retry_default docker build -t bats-verify -f Dockerfile-bats .
|
retry_default docker build -t bats-verify -f Dockerfile-bats .
|
||||||
|
|
||||||
# if this fails on CircleCI your first thing to try would be to upgrade
|
|
||||||
# the machine image to the latest version using this listing:
|
|
||||||
#
|
|
||||||
# https://circleci.com/docs/2.0/configuration-reference/#available-linux-machine-images
|
|
||||||
echo "Checking bats image..."
|
echo "Checking bats image..."
|
||||||
docker run --rm -t bats-verify -v
|
docker run --rm -t bats-verify -v
|
||||||
|
|
||||||
|
|
|
@ -5,9 +5,6 @@ This relies on the [Gruntwork's Terraform AWS Consul Module](https://github.com/
|
||||||
|
|
||||||
<img src="loadtestdiagram.png" width="500" height="300"/>
|
<img src="loadtestdiagram.png" width="500" height="300"/>
|
||||||
|
|
||||||
# Load Test Automation
|
|
||||||
This can only be run on PRs that a Dev Build has been made for. When a PR has the `pr/load-test` Github Label applied this will kick off a Github Action. This Github Action will trigger Circle CI to run a Terraform Apply that runs a load test against the Dev Build Consul binary. The GitHub Action will paste the CircleCI load test workflow URL to the PR as a comment.
|
|
||||||
|
|
||||||
## How to use
|
## How to use
|
||||||
[Terraform](https://www.terraform.io/downloads.html) and [Packer](https://www.packer.io/downloads), AWS and [Datadog](https://docs.datadoghq.com/getting_started/) are required to use this. All of this, except the AWS resources that will be utilized, are free.
|
[Terraform](https://www.terraform.io/downloads.html) and [Packer](https://www.packer.io/downloads), AWS and [Datadog](https://docs.datadoghq.com/getting_started/) are required to use this. All of this, except the AWS resources that will be utilized, are free.
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@ Node upgrades should be done when it is convienient, preferably using the
|
||||||
latest Active LTS version (https://nodejs.org/en/about/releases/) that also
|
latest Active LTS version (https://nodejs.org/en/about/releases/) that also
|
||||||
corresponds with the ember version we are on (https://github.com/ember-cli/ember-cli/blob/master/docs/node-support.md)
|
corresponds with the ember version we are on (https://github.com/ember-cli/ember-cli/blob/master/docs/node-support.md)
|
||||||
|
|
||||||
Aswell as bumping our `.nvmrc` and `.circleci/config.yml` files, when bumping
|
Aswell as bumping our `.nvmrc` file, when bumping
|
||||||
node versions, please check with the rest of the team to see if there are
|
node versions, please check with the rest of the team to see if there are
|
||||||
other repositories that should track the same node version as this repository.
|
other repositories that should track the same node version as this repository.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue