2021-08-11 20:48:29 +00:00
# For documentation on building consul from source, refer to:
# https://www.consul.io/docs/install#compiling-from-source
2017-04-27 18:49:43 +00:00
SHELL = bash
2016-05-07 20:02:12 +00:00
GOTOOLS = \
2019-12-13 19:50:07 +00:00
github.com/elazarl/go-bindata-assetfs/go-bindata-assetfs@master \
github.com/hashicorp/go-bindata/go-bindata@master \
2021-11-16 18:04:49 +00:00
golang.org/x/tools/cmd/cover@master \
golang.org/x/tools/cmd/stringer@master \
github.com/vektra/mockery/cmd/mockery@master \
github.com/golangci/golangci-lint/cmd/golangci-lint@v1.40.1 \
2022-03-29 20:18:05 +00:00
github.com/hashicorp/lint-consul-retry@master
2022-03-30 16:51:56 +00:00
PROTOC_VERSION = 3.15.8
2022-03-30 15:37:44 +00:00
PROTOC_OS := $( shell if test " $$ (uname) " = = "Darwin" ; then echo osx; else echo linux; fi )
2022-03-30 15:08:17 +00:00
PROTOC_ZIP := protoc-$( PROTOC_VERSION) -$( PROTOC_OS) -x86_64.zip
PROTOC_URL := https://github.com/protocolbuffers/protobuf/releases/download/v$( PROTOC_VERSION) /$( PROTOC_ZIP)
PROTOC_ROOT := .protobuf/protoc-$( PROTOC_OS) -$( PROTOC_VERSION)
PROTOC_BIN := $( PROTOC_ROOT) /bin/protoc
2022-03-29 20:18:05 +00:00
GOPROTOVERSION ?= $( shell grep github.com/golang/protobuf go.mod | awk '{print $$2}' )
GOPROTOTOOLS = \
github.com/golang/protobuf/protoc-gen-go@$( GOPROTOVERSION) \
github.com/hashicorp/protoc-gen-go-binary@master \
github.com/favadi/protoc-go-inject-tag@v1.3.0 \
2022-03-31 18:49:42 +00:00
github.com/hashicorp/mog@v0.2.0
2017-06-29 12:50:47 +00:00
2017-08-30 11:25:14 +00:00
GOTAGS ?=
2018-01-04 19:38:20 +00:00
GOPATH = $( shell go env GOPATH)
2019-07-04 14:22:59 +00:00
MAIN_GOPATH = $( shell go env GOPATH | cut -d: -f1)
2017-04-18 22:03:51 +00:00
2022-02-11 16:45:37 +00:00
export PATH := $( PWD) /bin:$( PATH)
2020-10-01 15:19:10 +00:00
ASSETFS_PATH ?= agent/uiserver/bindata_assetfs.go
2017-04-18 22:03:51 +00:00
# Get the git commit
2018-06-08 14:20:54 +00:00
GIT_COMMIT ?= $( shell git rev-parse --short HEAD)
2020-01-24 15:40:14 +00:00
GIT_COMMIT_YEAR ?= $( shell git show -s --format= %cd --date= format:%Y HEAD)
2018-06-08 14:20:54 +00:00
GIT_DIRTY ?= $( shell test -n "`git status --porcelain`" && echo "+CHANGES" || true )
2017-04-18 22:03:51 +00:00
GIT_IMPORT = github.com/hashicorp/consul/version
2020-07-14 19:17:45 +00:00
GOLDFLAGS = -X $( GIT_IMPORT) .GitCommit= $( GIT_COMMIT) $( GIT_DIRTY)
2017-04-18 22:03:51 +00:00
2022-03-30 15:08:17 +00:00
PROTOFILES ?= $( shell find . -name '*.proto' | grep -v 'vendor/' | grep -v '.protobuf' )
2019-09-20 18:37:22 +00:00
PROTOGOFILES = $( PROTOFILES:.proto= .pb.go)
2019-09-30 19:39:20 +00:00
PROTOGOBINFILES = $( PROTOFILES:.proto= .pb.binary.go)
2022-03-31 18:49:42 +00:00
PROTO_MOG_ORDER = $( shell go list -tags '$(GOTAGS)' -deps ./proto/pb... | grep "consul/proto" )
2019-09-20 18:37:22 +00:00
2018-06-15 01:25:59 +00:00
i f e q ( $( FORCE_REBUILD ) , 1 )
NOCACHE = --no-cache
e l s e
NOCACHE =
e n d i f
DOCKER_BUILD_QUIET ?= 1
i f e q ( $ { D O C K E R _ B U I L D _ Q U I E T } , 1 )
QUIET = -q
e l s e
QUIET =
e n d i f
CONSUL_DEV_IMAGE ?= consul-dev
2018-06-08 14:20:54 +00:00
GO_BUILD_TAG ?= consul-build-go
UI_BUILD_TAG ?= consul-build-ui
BUILD_CONTAINER_NAME ?= consul-builder
2019-04-12 19:17:13 +00:00
CONSUL_IMAGE_VERSION ?= latest
2018-06-08 14:20:54 +00:00
2019-07-25 13:19:09 +00:00
################
# CI Variables #
################
CI_DEV_DOCKER_NAMESPACE ?= hashicorpdev
CI_DEV_DOCKER_IMAGE_NAME ?= consul
CI_DEV_DOCKER_WORKDIR ?= bin/
################
2019-07-04 14:22:59 +00:00
TEST_MODCACHE ?= 1
TEST_BUILDCACHE ?= 1
# You can only use as many CPUs as you have allocated to docker
i f d e f T E S T _ D O C K E R _ C P U S
TEST_DOCKER_RESOURCE_CONSTRAINTS = --cpus $( TEST_DOCKER_CPUS)
TEST_PARALLELIZATION = -e GOMAXPROCS = $( TEST_DOCKER_CPUS)
e l s e
TEST_DOCKER_RESOURCE_CONSTRAINTS =
TEST_PARALLELIZATION =
e n d i f
i f e q ( $( TEST_MODCACHE ) , 1 )
TEST_MODCACHE_VOL = -v $( MAIN_GOPATH) /pkg/mod:/go/pkg/mod
e l s e
TEST_MODCACHE_VOL =
e n d i f
i f e q ( $( TEST_BUILDCACHE ) , 1 )
TEST_BUILDCACHE_VOL = -v $( shell go env GOCACHE) :/root/.caches/go-build
e l s e
TEST_BUILDCACHE_VOL =
e n d i f
2018-06-12 20:55:52 +00:00
DIST_TAG ?= 1
DIST_BUILD ?= 1
DIST_SIGN ?= 1
2018-06-15 01:25:59 +00:00
i f d e f D I S T _ V E R S I O N
2018-06-18 18:36:24 +00:00
DIST_VERSION_ARG = -v " $( DIST_VERSION) "
2018-06-15 01:25:59 +00:00
e l s e
DIST_VERSION_ARG =
e n d i f
i f d e f D I S T _ R E L E A S E _ D A T E
2018-06-18 18:36:24 +00:00
DIST_DATE_ARG = -d " $( DIST_RELEASE_DATE) "
2018-06-15 01:25:59 +00:00
e l s e
DIST_DATE_ARG =
e n d i f
2018-06-18 21:01:20 +00:00
i f d e f D I S T _ P R E R E L E A S E
DIST_REL_ARG = -r " $( DIST_PRERELEASE) "
e l s e
DIST_REL_ARG =
e n d i f
2018-06-15 19:23:26 +00:00
PUB_GIT ?= 1
PUB_WEBSITE ?= 1
i f e q ( $( PUB_GIT ) , 1 )
PUB_GIT_ARG = -g
e l s e
PUB_GIT_ARG =
e n d i f
i f e q ( $( PUB_WEBSITE ) , 1 )
2018-06-26 18:08:10 +00:00
PUB_WEBSITE_ARG = -w
2018-06-15 19:23:26 +00:00
e l s e
PUB_WEBSITE_ARG =
e n d i f
2018-06-26 18:26:23 +00:00
2018-06-08 14:20:54 +00:00
export GO_BUILD_TAG
export UI_BUILD_TAG
export BUILD_CONTAINER_NAME
export GIT_COMMIT
2020-01-24 15:40:14 +00:00
export GIT_COMMIT_YEAR
2018-06-08 14:20:54 +00:00
export GIT_DIRTY
export GOTAGS
2017-04-18 22:03:51 +00:00
export GOLDFLAGS
2013-12-06 23:43:07 +00:00
2019-04-29 16:27:57 +00:00
# Allow skipping docker build during integration tests in CI since we already
# have a built binary
ENVOY_INTEG_DEPS ?= dev-docker
i f d e f S K I P _ D O C K E R _ B U I L D
ENVOY_INTEG_DEPS = noop
e n d i f
2018-06-26 18:26:23 +00:00
2021-09-08 23:50:42 +00:00
all : dev -build
2016-10-25 20:49:57 +00:00
2019-04-29 16:27:57 +00:00
# used to make integration dependencies conditional
noop : ;
2021-09-08 23:50:42 +00:00
# dev creates binaries for testing locally - these are put into ./bin
2021-06-04 17:01:03 +00:00
dev : dev -build
2017-07-18 07:22:49 +00:00
dev-build :
2021-09-08 23:50:42 +00:00
mkdir -p bin
2022-02-11 16:45:37 +00:00
CGO_ENABLED = 0 go install -ldflags " $( GOLDFLAGS) " -tags " $( GOTAGS) "
cp -f ${ MAIN_GOPATH } /bin/consul ./bin/consul
2018-06-15 01:25:59 +00:00
2019-04-12 19:17:13 +00:00
dev-docker : linux
@echo " Pulling consul container image - $( CONSUL_IMAGE_VERSION) "
@docker pull consul:$( CONSUL_IMAGE_VERSION) >/dev/null
@echo " Building Consul Development container - $( CONSUL_DEV_IMAGE) "
@docker build $( NOCACHE) $( QUIET) -t '$(CONSUL_DEV_IMAGE)' --build-arg CONSUL_IMAGE_VERSION = $( CONSUL_IMAGE_VERSION) $( CURDIR) /pkg/bin/linux_amd64 -f $( CURDIR) /build-support/docker/Consul-Dev.dockerfile
2015-10-22 18:16:01 +00:00
2019-07-25 13:19:09 +00:00
# In CircleCI, the linux binary will be attached from a previous step at bin/. This make target
# should only run in CI and not locally.
ci.dev-docker :
@echo " Pulling consul container image - $( CONSUL_IMAGE_VERSION) "
@docker pull consul:$( CONSUL_IMAGE_VERSION) >/dev/null
@echo " Building Consul Development container - $( CI_DEV_DOCKER_IMAGE_NAME) "
@docker build $( NOCACHE) $( QUIET) -t '$(CI_DEV_DOCKER_NAMESPACE)/$(CI_DEV_DOCKER_IMAGE_NAME):$(GIT_COMMIT)' \
--build-arg CONSUL_IMAGE_VERSION = $( CONSUL_IMAGE_VERSION) \
--label COMMIT_SHA = $( CIRCLE_SHA1) \
--label PULL_REQUEST = $( CIRCLE_PULL_REQUEST) \
--label CIRCLE_BUILD_URL = $( CIRCLE_BUILD_URL) \
$( CI_DEV_DOCKER_WORKDIR) -f $( CURDIR) /build-support/docker/Consul-Dev.dockerfile
2019-09-05 18:29:39 +00:00
@echo $( DOCKER_PASS) | docker login -u= " $( DOCKER_USER) " --password-stdin
2019-07-25 13:19:09 +00:00
@echo "Pushing dev image to: https://cloud.docker.com/u/hashicorpdev/repository/docker/hashicorpdev/consul"
@docker push $( CI_DEV_DOCKER_NAMESPACE) /$( CI_DEV_DOCKER_IMAGE_NAME) :$( GIT_COMMIT)
2021-06-29 21:04:24 +00:00
i f e q ( $( CIRCLE_BRANCH ) , m a i n )
2019-07-25 13:19:09 +00:00
@docker tag $( CI_DEV_DOCKER_NAMESPACE) /$( CI_DEV_DOCKER_IMAGE_NAME) :$( GIT_COMMIT) $( CI_DEV_DOCKER_NAMESPACE) /$( CI_DEV_DOCKER_IMAGE_NAME) :latest
@docker push $( CI_DEV_DOCKER_NAMESPACE) /$( CI_DEV_DOCKER_IMAGE_NAME) :latest
e n d i f
2021-09-08 23:50:42 +00:00
# linux builds a linux binary independent of the source platform
2017-05-04 11:31:56 +00:00
linux :
2022-03-02 20:18:26 +00:00
@mkdir -p ./pkg/bin/linux_amd64
CGO_ENABLED = 0 GOOS = linux GOARCH = amd64 go build -o ./pkg/bin/linux_amd64 -ldflags " $( GOLDFLAGS) " -tags " $( GOTAGS) "
2017-05-04 11:31:56 +00:00
2016-02-18 04:36:48 +00:00
# dist builds binaries for all platforms and packages them for distribution
dist :
2018-06-18 21:01:20 +00:00
@$( SHELL) $( CURDIR) /build-support/scripts/release.sh -t '$(DIST_TAG)' -b '$(DIST_BUILD)' -S '$(DIST_SIGN)' $( DIST_VERSION_ARG) $( DIST_DATE_ARG) $( DIST_REL_ARG)
2018-06-26 16:08:33 +00:00
2020-02-12 16:15:24 +00:00
cover : cov
cov : other -consul dev -build
go test -tags '$(GOTAGS)' ./... -coverprofile= coverage.out
cd sdk && go test -tags '$(GOTAGS)' ./... -coverprofile= ../coverage.sdk.part
cd api && go test -tags '$(GOTAGS)' ./... -coverprofile= ../coverage.api.part
grep -h -v "mode: set" coverage.{ sdk,api} .part >> coverage.out
rm -f coverage.{ sdk,api} .part
2019-04-09 20:05:52 +00:00
go tool cover -html= coverage.out
2013-12-06 23:43:07 +00:00
2020-03-24 20:14:12 +00:00
test : other -consul dev -build lint test -internal
2018-07-24 14:12:48 +00:00
2020-02-03 16:12:26 +00:00
go-mod-tidy :
@echo "--> Running go mod tidy"
@cd sdk && go mod tidy
@cd api && go mod tidy
@go mod tidy
2018-07-24 14:12:48 +00:00
test-internal :
2017-09-25 18:40:42 +00:00
@echo "--> Running go test"
@rm -f test.log exit-code
2018-02-20 15:32:44 +00:00
@# Dump verbose output to test.log so we can surface test names on failure but
@# hide it from travis as it exceeds their log limits and causes job to be
@# terminated ( over 4MB and over 10k lines in the UI) . We need to output
@# _something_ to stop them terminating us due to inactivity...
2020-02-12 16:15:24 +00:00
@echo "===================== submodule: sdk =====================" | tee -a test.log
cd sdk && { go test -v $( GOTEST_FLAGS) -tags '$(GOTAGS)' ./... 2>& 1 ; echo $$ ? >> ../exit-code ; } | tee -a ../test.log | egrep '^(ok|FAIL|panic:|--- FAIL|--- PASS)'
@echo "===================== submodule: api =====================" | tee -a test.log
cd api && { go test -v $( GOTEST_FLAGS) -tags '$(GOTAGS)' ./... 2>& 1 ; echo $$ ? >> ../exit-code ; } | tee -a ../test.log | egrep '^(ok|FAIL|panic:|--- FAIL|--- PASS)'
@echo "===================== submodule: root =====================" | tee -a test.log
{ go test -v $( GOTEST_FLAGS) -tags '$(GOTAGS)' ./... 2>& 1 ; echo $$ ? >> exit-code ; } | tee -a test.log | egrep '^(ok|FAIL|panic:|--- FAIL|--- PASS)'
@# if everything worked fine then all 3 zeroes will be collapsed to a single zero here
@exit_codes= " $$ (sort -u exit-code) " ; echo " $$ exit_codes " > exit-code
2018-07-24 14:12:48 +00:00
@echo " Exit code: $$ (cat exit-code) "
2018-04-19 12:01:20 +00:00
@# This prints all the race report between = = = = = = lines
@awk '/^WARNING: DATA RACE/ {do_print=1; print "=================="} do_print==1 {print} /^={10,}/ {do_print=0}' test.log || true
2018-04-20 13:24:24 +00:00
@grep -A10 'panic: ' test.log || true
2018-04-19 12:01:20 +00:00
@# Prints all the failure output until the next non-indented line - testify
2018-04-20 13:24:24 +00:00
@# helpers often output multiple lines for readability but useless if we can' t
@# see them. Un-intuitive order of matches is necessary. No || true because
@# awk always returns true even if there is no match and it breaks non-bash
@# shells locally.
@awk '/^[^[:space:]]/ {do_print=0} /--- SKIP/ {do_print=1} do_print==1 {print}' test.log
@awk '/^[^[:space:]]/ {do_print=0} /--- FAIL/ {do_print=1} do_print==1 {print}' test.log
2017-06-29 12:50:47 +00:00
@grep '^FAIL' test.log || true
2017-09-25 18:40:42 +00:00
@if [ " $$ (cat exit-code) " = = "0" ] ; then echo "PASS" ; exit 0 ; else exit 1 ; fi
2017-06-29 12:50:47 +00:00
test-race :
$( MAKE) GOTEST_FLAGS = -race
2017-05-22 19:24:38 +00:00
2019-07-04 14:22:59 +00:00
test-docker : linux go -build -image
@# -ti run in the foreground showing stdout
@# --rm removes the container once its finished running
@# GO_MODCACHE_VOL - args for mapping in the go module cache
@# GO_BUILD_CACHE_VOL - args for mapping in the go build cache
@# All the env vars are so we pass through all the relevant bits of information
@# Needed for running the tests
@# We map in our local linux_amd64 bin directory as thats where the linux dep
@# target dropped the binary. We could build the binary in the container too
@# but that might take longer as caching gets weird
@# Lastly we map the source dir here to the /consul workdir
@echo "Running tests within a docker container"
@docker run -ti --rm \
-e 'GOTEST_FLAGS=$(GOTEST_FLAGS)' \
-e 'GOTAGS=$(GOTAGS)' \
-e 'GIT_COMMIT=$(GIT_COMMIT)' \
2020-01-24 15:40:14 +00:00
-e 'GIT_COMMIT_YEAR=$(GIT_COMMIT_YEAR)' \
2019-07-04 14:22:59 +00:00
-e 'GIT_DIRTY=$(GIT_DIRTY)' \
$( TEST_PARALLELIZATION) \
$( TEST_DOCKER_RESOURCE_CONSTRAINTS) \
$( TEST_MODCACHE_VOL) \
$( TEST_BUILDCACHE_VOL) \
-v $( MAIN_GOPATH) /bin/linux_amd64/:/go/bin \
-v $( shell pwd ) :/consul \
$( GO_BUILD_TAG) \
make test-internal
2017-09-25 18:40:42 +00:00
other-consul :
@echo "--> Checking for other consul instances"
@if ps -ef | grep 'consul agent' | grep -v grep ; then \
echo "Found other running consul agents. This may affect your tests." ; \
exit 1 ; \
fi
2020-03-24 20:14:12 +00:00
lint :
@echo "--> Running go golangci-lint"
@golangci-lint run --build-tags '$(GOTAGS)' && \
( cd api && golangci-lint run --build-tags '$(GOTAGS)' ) && \
( cd sdk && golangci-lint run --build-tags '$(GOTAGS)' )
Makefile: add vet target
Add a vet target in order to catch suspicious constructs
reported by go vet.
Vet has successfully detected problems in the past,
for example, see
c9333b1b9b472feb5cad80e2c8276d41b64bde88
Some vet flags are noisy. In particular, the following flags
reports a large amount of generally unharmful constructs:
```
-assign: check for useless assignments
-composites: check that composite literals used field-keyed
elements
-shadow: check for shadowed variables
-shadowstrict: whether to be strict about shadowing
-unreachable: check for unreachable code
```
In order to skip running the flags mentioned above, vet is
invoked on a directory basis with `go tool vet .` since package-
level type-checking with `go vet` doesn't accept flags.
Hence, each file is vetted in isolation, which is weaker than
package-level type-checking. But nevertheless, it might catch
suspicious constructs that pose a real issue.
The vet target runs the following flags on the entire repo:
```
-asmdecl: check assembly against Go declarations
-atomic: check for common mistaken usages of the
sync/atomic package
-bool: check for mistakes involving boolean operators
-buildtags: check that +build tags are valid
-copylocks: check that locks are not passed by value
-methods: check that canonically named methods are canonically
defined
-nilfunc: check for comparisons between functions and nil
-printf: check printf-like invocations
-rangeloops: check that range loop variables are used correctly
-shift: check for useless shifts
-structtags: check that struct field tags have canonical format
and apply to exported fields as needed
-unsafeptr: check for misuse of unsafe.Pointer
```
Now and then, it might make sense to check the output of the
disabled flags manually.
For example, `VETARGS=-unreachable make vet` can detect several
lines of dead code that can be deleted, etc.
2015-01-17 06:44:10 +00:00
2017-06-21 21:43:07 +00:00
# If you've run "make ui" manually then this will get called for you. This is
# also run as part of the release build script when it verifies that there are no
# changes to the UI assets that aren't checked in.
2016-02-13 00:50:37 +00:00
static-assets :
2020-10-02 19:23:38 +00:00
@go-bindata-assetfs -pkg uiserver -prefix pkg -o $( ASSETFS_PATH) ./pkg/web_ui/...
2019-03-29 15:29:27 +00:00
@go fmt $( ASSETFS_PATH)
2015-11-30 19:24:08 +00:00
2018-06-15 12:00:12 +00:00
# Build the static web ui and build static assets inside a Docker container
2019-04-12 15:02:27 +00:00
ui : ui -docker static -assets -docker
2018-06-15 12:00:12 +00:00
2022-03-29 20:18:05 +00:00
tools : proto -tools
2021-11-16 18:04:49 +00:00
@if [ [ -d .gotools ] ] ; then rm -rf .gotools ; fi
@for TOOL in $( GOTOOLS) ; do \
2021-05-26 21:40:15 +00:00
echo " === TOOL: $$ TOOL " ; \
2021-11-16 18:04:49 +00:00
go install -v $$ TOOL ; \
2021-05-26 21:40:15 +00:00
done
2016-02-13 01:09:18 +00:00
2022-03-29 20:18:05 +00:00
proto-tools :
@if [ [ -d .gotools ] ] ; then rm -rf .gotools ; fi
@for TOOL in $( GOPROTOTOOLS) ; do \
echo " === TOOL: $$ TOOL " ; \
go install -v $$ TOOL ; \
done
2018-06-12 20:55:52 +00:00
version :
2018-06-13 19:10:02 +00:00
@echo -n "Version: "
2018-06-15 01:25:59 +00:00
@$( SHELL) $( CURDIR) /build-support/scripts/version.sh
2018-06-13 19:10:02 +00:00
@echo -n "Version + release: "
2018-06-15 01:25:59 +00:00
@$( SHELL) $( CURDIR) /build-support/scripts/version.sh -r
2018-06-13 19:10:02 +00:00
@echo -n "Version + git: "
2018-06-15 01:25:59 +00:00
@$( SHELL) $( CURDIR) /build-support/scripts/version.sh -g
2018-06-13 19:10:02 +00:00
@echo -n "Version + release + git: "
2018-06-15 12:00:12 +00:00
@$( SHELL) $( CURDIR) /build-support/scripts/version.sh -r -g
2018-10-19 16:04:07 +00:00
2018-06-15 01:25:59 +00:00
2019-04-12 15:02:27 +00:00
docker-images : go -build -image ui -build -image
2018-06-08 14:20:54 +00:00
go-build-image :
2018-06-15 01:25:59 +00:00
@echo "Building Golang build container"
@docker build $( NOCACHE) $( QUIET) --build-arg 'GOTOOLS=$(GOTOOLS)' -t $( GO_BUILD_TAG) - < build-support/docker/Build-Go.dockerfile
2018-10-19 16:04:07 +00:00
2018-06-08 14:20:54 +00:00
ui-build-image :
2018-06-15 01:25:59 +00:00
@echo "Building UI build container"
@docker build $( NOCACHE) $( QUIET) -t $( UI_BUILD_TAG) - < build-support/docker/Build-UI.dockerfile
2018-10-19 16:04:07 +00:00
2018-06-08 14:20:54 +00:00
static-assets-docker : go -build -image
2018-06-15 01:25:59 +00:00
@$( SHELL) $( CURDIR) /build-support/scripts/build-docker.sh static-assets
2018-10-19 16:04:07 +00:00
2018-06-12 20:55:52 +00:00
consul-docker : go -build -image
2018-06-15 01:25:59 +00:00
@$( SHELL) $( CURDIR) /build-support/scripts/build-docker.sh consul
2018-10-19 16:04:07 +00:00
2018-06-08 14:20:54 +00:00
ui-docker : ui -build -image
2018-06-15 01:25:59 +00:00
@$( SHELL) $( CURDIR) /build-support/scripts/build-docker.sh ui
2018-10-19 16:04:07 +00:00
2019-04-29 16:27:57 +00:00
test-envoy-integ : $( ENVOY_INTEG_DEPS )
2020-05-19 18:00:00 +00:00
@go test -v -timeout= 30m -tags integration ./test/integration/connect/envoy
2019-04-29 16:27:57 +00:00
2020-03-24 19:16:13 +00:00
test-connect-ca-providers :
2019-12-17 21:22:32 +00:00
i f e q ( "$(CIRCLECI)" , "true" )
# Run in CI
2020-10-07 20:32:25 +00:00
gotestsum --format= short-verbose --junitfile " $( TEST_RESULTS_DIR) /gotestsum-report.xml " -- -cover -coverprofile= coverage.txt ./agent/connect/ca
2020-10-09 12:02:18 +00:00
# Run leader tests that require Vault
2022-02-28 21:13:53 +00:00
gotestsum --format= short-verbose --junitfile " $( TEST_RESULTS_DIR) /gotestsum-report-leader.xml " -- -cover -coverprofile= coverage-leader.txt -run Vault ./agent/consul
2021-02-08 19:18:51 +00:00
# Run agent tests that require Vault
2022-02-28 21:13:53 +00:00
gotestsum --format= short-verbose --junitfile " $( TEST_RESULTS_DIR) /gotestsum-report-agent.xml " -- -cover -coverprofile= coverage-agent.txt -run Vault ./agent
2019-12-17 21:22:32 +00:00
e l s e
# Run locally
2020-03-24 19:16:13 +00:00
@echo "Running /agent/connect/ca tests in verbose mode"
@go test -v ./agent/connect/ca
2022-02-28 21:13:53 +00:00
@go test -v ./agent/consul -run Vault
@go test -v ./agent -run Vault
2019-12-17 21:22:32 +00:00
e n d i f
2022-03-30 15:08:17 +00:00
.PHONY : protoc -install
protoc-install :
$( info locally installing protocol buffer compiler version if needed ( expect: $( PROTOC_VERSION) ) )
@if [ [ ! -x $( PROTOC_ROOT) /bin/protoc ] ] ; then \
mkdir -p .protobuf/tmp ; \
if [ [ ! -f .protobuf/tmp/$( PROTOC_ZIP) ] ] ; then \
( cd .protobuf/tmp && curl -sSL " $( PROTOC_URL) " -o " $( PROTOC_ZIP) " ) ; \
fi ; \
mkdir -p $( PROTOC_ROOT) ; \
unzip -d $( PROTOC_ROOT) .protobuf/tmp/$( PROTOC_ZIP) ; \
chmod -R a+Xr $( PROTOC_ROOT) ; \
chmod +x $( PROTOC_ROOT) /bin/protoc ; \
2022-03-29 17:02:43 +00:00
fi
2019-09-20 18:37:22 +00:00
2022-03-31 18:49:42 +00:00
.PHONY : proto
proto : -protoc -files -mog -files
.PHONY : -mog -files
-mog-files :
@for FULL_PKG in $( PROTO_MOG_ORDER) ; do \
PKG = " $$ {FULL_PKG/#github.com\/hashicorp\/consul\//.\/} " ; \
find " $$ PKG " -name '*.gen.go' -delete ; \
echo " mog -tags ' $( GOTAGS) ' -source \" $$ {PKG}/*.pb.go\" " ; \
mog -tags '$(GOTAGS)' -source " $$ {PKG}/*.pb.go " ; \
done
@echo "Generated all mog Go files"
.PHONY : -protoc -files
-protoc-files : protoc -install $( PROTOGOFILES ) $( PROTOGOBINFILES )
2022-03-29 17:02:43 +00:00
@echo "Generated all protobuf Go files"
2019-09-30 19:39:20 +00:00
2019-10-02 19:32:15 +00:00
%.pb.go %.pb.binary.go : %.proto
2022-03-30 15:08:17 +00:00
@$( SHELL) $( CURDIR) /build-support/scripts/proto-gen.sh --grpc --protoc-bin " $( PROTOC_BIN) " " $< "
2019-09-20 18:37:22 +00:00
2022-03-29 17:02:43 +00:00
# utility to echo a makefile variable (i.e. 'make print-PROTOC_VERSION')
print-% : ; @echo $( $ *)
2020-07-23 20:13:20 +00:00
.PHONY : module -versions
# Print a list of modules which can be updated.
# Columns are: module current_version date_of_current_version latest_version
module-versions :
@go list -m -u -f '{{if .Update}} {{printf "%-50v %-40s" .Path .Version}} {{with .Time}} {{ .Format "2006-01-02" -}} {{else}} {{printf "%9s" ""}} {{end}} {{ .Update.Version}} {{end}}' all
2021-04-29 19:58:26 +00:00
.PHONY : envoy -library
envoy-library :
@$( SHELL) $( CURDIR) /build-support/scripts/envoy-library-references.sh
2018-10-19 16:04:07 +00:00
2021-04-30 16:27:12 +00:00
.PHONY : envoy -regen
envoy-regen :
$( info regenerating envoy golden files)
@for d in endpoints listeners routes clusters rbac; do \
if [ [ -d " agent/xds/testdata/ $$ {d} " ] ] ; then \
find " agent/xds/testdata/ $$ {d} " -name '*.golden' -delete ; \
fi \
done
@go test -tags '$(GOTAGS)' ./agent/xds -update
@find "command/connect/envoy/testdata" -name '*.golden' -delete
@go test -tags '$(GOTAGS)' ./command/connect/envoy -update
2022-03-31 18:49:42 +00:00
.PHONY : all bin dev dist cov test test -internal cover lint ui static -assets tools proto -tools
2019-04-12 15:02:27 +00:00
.PHONY : docker -images go -build -image ui -build -image static -assets -docker consul -docker ui -docker
2022-03-31 18:49:42 +00:00
.PHONY : version test -envoy -integ