2017-10-23 16:38:30 +00:00
# Determine this makefile's path.
# Be sure to place this BEFORE `include` directives, if any.
THIS_FILE := $( lastword $( MAKEFILE_LIST) )
2019-10-17 19:48:45 +00:00
export RELEASE_GPG_KEY_FINGERPRINT := 91A6 E7F8 5D05 C656 30BE F189 5185 2D87 348F FC4C
2020-01-09 17:35:32 +00:00
TEST ?= $$ ( $( GO_CMD) list ./... | grep -v /vendor/ | grep -v /integ)
2019-07-22 17:11:00 +00:00
TEST_TIMEOUT ?= 45m
EXTENDED_TEST_TIMEOUT = 60m
INTEG_TEST_TIMEOUT = 120m
2015-03-04 07:14:18 +00:00
VETARGS ?= -asmdecl -atomic -bool -buildtags -copylocks -methods -nilfunc -printf -rangeloops -shift -structtags -unsafeptr
2020-04-22 19:05:49 +00:00
EXTERNAL_TOOLS_CI = \
2018-04-03 14:46:45 +00:00
github.com/elazarl/go-bindata-assetfs/... \
github.com/hashicorp/go-bindata/... \
2020-04-30 00:01:03 +00:00
github.com/mitchellh/gox \
golang.org/x/tools/cmd/goimports
2020-04-29 20:35:13 +00:00
EXTERNAL_TOOLS = \
2020-04-25 00:52:23 +00:00
github.com/client9/misspell/cmd/misspell
2019-12-08 02:01:11 +00:00
GOFMT_FILES ?= $$ ( find . -name '*.go' | grep -v pb.go | grep -v vendor)
2015-03-04 07:14:18 +00:00
2020-08-10 11:57:21 +00:00
GO_VERSION_MIN = 1.14.7
2020-01-09 17:35:32 +00:00
GO_CMD ?= go
2019-05-22 12:17:55 +00:00
CGO_ENABLED ?= 0
2018-07-16 14:18:09 +00:00
i f n e q ( $( FDB_ENABLED ) , )
CGO_ENABLED = 1
BUILD_TAGS += foundationdb
e n d i f
2017-02-06 01:30:40 +00:00
default : dev
2015-03-04 07:14:18 +00:00
2018-03-20 18:54:10 +00:00
# bin generates the releasable binaries for Vault
2017-10-23 16:38:30 +00:00
bin : prep
2018-07-16 14:18:09 +00:00
@CGO_ENABLED= $( CGO_ENABLED) BUILD_TAGS = '$(BUILD_TAGS) ui' sh -c " ' $( CURDIR) /scripts/build.sh' "
2015-03-04 07:14:18 +00:00
# dev creates binaries for testing Vault locally. These are put
2018-04-09 21:36:05 +00:00
# into ./bin/ as well as $GOPATH/bin
2017-10-23 16:38:30 +00:00
dev : prep
2018-07-16 14:18:09 +00:00
@CGO_ENABLED= $( CGO_ENABLED) BUILD_TAGS = '$(BUILD_TAGS)' VAULT_DEV_BUILD = 1 sh -c " ' $( CURDIR) /scripts/build.sh' "
2019-03-25 17:07:14 +00:00
dev-ui : assetcheck prep
2018-07-16 14:18:09 +00:00
@CGO_ENABLED= $( CGO_ENABLED) BUILD_TAGS = '$(BUILD_TAGS) ui' VAULT_DEV_BUILD = 1 sh -c " ' $( CURDIR) /scripts/build.sh' "
2017-09-04 23:16:11 +00:00
dev-dynamic : prep
2016-05-10 03:17:38 +00:00
@CGO_ENABLED= 1 BUILD_TAGS = '$(BUILD_TAGS)' VAULT_DEV_BUILD = 1 sh -c " ' $( CURDIR) /scripts/build.sh' "
2018-10-31 18:11:45 +00:00
# *-mem variants will enable memory profiling which will write snapshots of heap usage
# to $TMP/vaultprof every 5 minutes. These can be analyzed using `$ go tool pprof <profile_file>`.
# Note that any build can have profiling added via: `$ BUILD_TAGS=memprofiler make ...`
dev-mem : BUILD_TAGS +=memprofiler
dev-mem : dev
dev-ui-mem : BUILD_TAGS +=memprofiler
2019-03-25 17:07:14 +00:00
dev-ui-mem : assetcheck dev -ui
2018-10-31 18:11:45 +00:00
dev-dynamic-mem : BUILD_TAGS +=memprofiler
dev-dynamic-mem : dev -dynamic
2020-07-20 18:11:34 +00:00
# Creates a Docker image by adding the compiled linux/amd64 binary found in ./bin.
# The resulting image is tagged "vault:dev".
docker-dev : prep
docker build -f scripts/docker/Dockerfile -t vault:dev .
docker-dev-ui : prep
docker build -f scripts/docker/Dockerfile.ui -t vault:dev-ui .
2015-03-04 07:14:18 +00:00
# test runs the unit tests and vets the code
2017-10-23 16:38:30 +00:00
test : prep
2018-07-16 14:18:09 +00:00
@CGO_ENABLED= $( CGO_ENABLED) \
2017-09-05 03:51:29 +00:00
VAULT_ADDR = \
VAULT_TOKEN = \
VAULT_DEV_ROOT_TOKEN_ID = \
VAULT_ACC = \
2020-01-09 17:35:32 +00:00
$( GO_CMD) test -tags= '$(BUILD_TAGS)' $( TEST) $( TESTARGS) -timeout= $( TEST_TIMEOUT) -parallel= 20
2015-03-04 07:14:18 +00:00
2017-10-23 16:38:30 +00:00
testcompile : prep
2017-02-16 20:15:02 +00:00
@for pkg in $( TEST) ; do \
2020-01-09 17:35:32 +00:00
$( GO_CMD) test -v -c -tags= '$(BUILD_TAGS)' $$ pkg -parallel= 4 ; \
2017-02-16 20:15:02 +00:00
done
2015-03-20 16:59:48 +00:00
# testacc runs acceptance tests
2017-10-23 16:38:30 +00:00
testacc : prep
2015-03-20 16:59:48 +00:00
@if [ " $( TEST) " = "./..." ] ; then \
echo "ERROR: Set TEST to a specific package" ; \
exit 1; \
fi
2020-01-09 17:35:32 +00:00
VAULT_ACC = 1 $( GO_CMD) test -tags= '$(BUILD_TAGS)' $( TEST) -v $( TESTARGS) -timeout= $( EXTENDED_TEST_TIMEOUT)
2015-03-20 16:59:48 +00:00
2015-03-04 07:14:18 +00:00
# testrace runs the race checker
2017-10-23 16:38:30 +00:00
testrace : prep
2017-09-05 03:51:29 +00:00
@CGO_ENABLED= 1 \
VAULT_ADDR = \
VAULT_TOKEN = \
VAULT_DEV_ROOT_TOKEN_ID = \
VAULT_ACC = \
2020-01-09 17:35:32 +00:00
$( GO_CMD) test -tags= '$(BUILD_TAGS)' -race $( TEST) $( TESTARGS) -timeout= $( EXTENDED_TEST_TIMEOUT) -parallel= 20
2015-03-04 07:14:18 +00:00
cover :
2015-04-29 02:02:46 +00:00
./scripts/coverage.sh --html
2015-03-04 07:14:18 +00:00
# vet runs the Go source code static analysis tool `vet` to find
# any common errors.
vet :
2020-01-09 17:35:32 +00:00
@$( GO_CMD) list -f '{{.Dir}}' ./... | grep -v /vendor/ \
2015-04-28 20:18:55 +00:00
| grep -v '.*github.com/hashicorp/vault$$' \
2020-01-09 17:35:32 +00:00
| xargs $( GO_CMD) vet ; if [ $$ ? -eq 1 ] ; then \
2015-04-28 20:18:55 +00:00
echo "" ; \
echo "Vet found suspicious constructs. Please check the reported constructs" ; \
echo "and fix them if necessary before submitting the code for reviewal." ; \
fi
2015-03-04 07:14:18 +00:00
2019-07-22 17:11:00 +00:00
# lint runs vet plus a number of other checkers, it is more comprehensive, but louder
lint :
2020-01-09 17:35:32 +00:00
@$( GO_CMD) list -f '{{.Dir}}' ./... | grep -v /vendor/ \
2019-07-22 17:11:00 +00:00
| xargs golangci-lint run; if [ $$ ? -eq 1 ] ; then \
echo "" ; \
echo "Lint found suspicious constructs. Please check the reported constructs" ; \
echo "and fix them if necessary before submitting the code for reviewal." ; \
fi
# for ci jobs, runs lint against the changed packages in the commit
ci-lint :
@golangci-lint run --deadline 10m --new-from-rev= HEAD~
2017-09-04 23:16:11 +00:00
# prep runs `go generate` to build the dynamically generated
2015-03-04 07:14:18 +00:00
# source files.
2017-10-23 16:38:30 +00:00
prep : fmtcheck
2017-10-19 20:30:19 +00:00
@sh -c " ' $( CURDIR) /scripts/goversioncheck.sh' ' $( GO_VERSION_MIN) ' "
2020-01-09 17:35:32 +00:00
@$( GO_CMD) generate $( $( GO_CMD) list ./... | grep -v /vendor/)
2019-06-11 14:55:53 +00:00
@# Remove old ( now broken) husky git hooks.
@[ ! -d .git/hooks ] || grep -l '^# husky$$' .git/hooks/* | xargs rm -f
2017-10-27 17:11:02 +00:00
@if [ -d .git/hooks ] ; then cp .hooks/* .git/hooks/; fi
2015-03-04 07:14:18 +00:00
ci/packagespec (#9653)
* add packagespec build system
- The majority of changes in this commit are files generated
by packagespec (everything in the packages-oss.lock directory).
* add .yamllint
* update to packagespec@fd54aea4
* ci: bust packagespec cache
- Change to packagespec results in package IDs that can use
git tag refs, not just commit refs.
* update to packagepsec@5fc121d0
- This busts all caches, because of a change to the way we
no longer traverse from tag refs to commit refs, due to
the potential confusion this can cause.
- See https://github.com/hashicorp/packagespec/commit/fd54aea4827bb6cfd637c78a2ab6274111605330
for the original change to packagespec necessitating this.
* update to packagespec@5e6c87b6
- This completes the change to allowing git tag refs
to be used for source IDs, begun in f130b940a8fbe3e9398225b08ea1d63420bef7b6
* update to packagespec@4d3c9e8b
- This busts cache, needed to apply previous change.
* remove RELEASE_BUILD_WORKFLOW_NAME
* update packagespec, add watch-ci target
* fix package names (do not refer to EDITION)
* remove EDITION input from packages-oss.yml
* bump package cache, update packagespec
* update packagespec, add 'aliases' target
* update packagespec; less output noise
* ci: give release bundle file a better name
- When performing a release build, this will include the build ID
as part of the name, making it easier to distinguish from other
builds.
* ci: create aliases tarball artifact
* ci: cache package metadata files
* ci: add metadata artifact
* ci: bust circleci package cache
* Revert "ci: bust circleci package cache"
This reverts commit 1320d182613466f0999d63f5742db12ac17f8e92.
* ci: remove aliases artifact
* ci: use buildID not workflowName to id artifacts
* packages: add BUNDLE_NAME metadata
* do not cache package metadata with binaries
* ci: bump package cache
* ci: debugging
* ci: fix package cache; update packagespec
* ci: update packagespec to 10e7beb2
* ci: write package metadata and aliases
* ci: switch to .zip artifacts
* switch package bundle back to tar.gz (from zip)
- Because of the way zip works, the zip archive was over 2GB rather than under 750MB as with tar.gz.
* bump packagespec, adds list-staged-builds
* update packagespec
* add publish stub + general tidy up
* bump packagespec
* bump packagespec; add make publish-config
* Makefile: tidy up packagespec targets
* pass PRODUCT_REPO_ROOT to packagespec
* bump go to 1.14.6
* packages-oss.yml: use more explicit base image
* bump packagespec to b899b7c1
* bump packagespec to f040ce8f
* packages-oss.yml: pin base image to digest
- This digest is pointed to by debian:buster-20200720
- Using a specific digest ensures that builds use the same
base image in all contexts
* add release-repo; bump packagespec
* remove BUILD_TAGS and -tags flag
* bump packagespec to e444f742
* bump to go1.14.7
* ci: bump to go1.14.7
2020-08-11 09:00:59 +00:00
PACKAGES_LOCK_DIR := $( shell find . -mindepth 1 -maxdepth 1 \
-type d -name 'packages*.lock' )
2019-06-11 14:55:53 +00:00
2020-04-22 19:05:49 +00:00
# bootstrap the build by downloading additional tools needed to build
ci-bootstrap :
@for tool in $( EXTERNAL_TOOLS_CI) ; do \
echo " Installing/Updating $$ tool " ; \
GO111MODULE = off $( GO_CMD) get -u $$ tool; \
done
# bootstrap the build by downloading additional tools that may be used by devs
bootstrap : ci -bootstrap
2020-05-14 17:45:12 +00:00
go generate -tags tools tools/tools.go
2015-05-31 23:32:36 +00:00
2018-05-30 01:09:57 +00:00
# Note: if you have plugins in GOPATH you can update all of them via something like:
# for i in $(ls | grep vault-plugin-); do cd $i; git remote update; git reset --hard origin/master; dep ensure -update; git add .; git commit; git push; cd ..; done
2018-04-10 06:32:41 +00:00
update-plugins :
grep vault-plugin- vendor/vendor.json | cut -d '"' -f 4 | xargs govendor fetch
2019-12-06 18:58:40 +00:00
static-assets-dir :
@mkdir -p ./pkg/web_ui
static-assets : static -assets -dir
2018-04-03 14:46:45 +00:00
@echo "--> Generating static assets"
2018-04-20 19:47:45 +00:00
@go-bindata-assetfs -o bindata_assetfs.go -pkg http -prefix pkg -modtime 1480000000 -tags ui ./pkg/web_ui/...
2018-04-03 14:46:45 +00:00
@mv bindata_assetfs.go http
@$( MAKE) -f $( THIS_FILE) fmt
test-ember :
@echo "--> Installing JavaScript assets"
2019-10-17 19:48:45 +00:00
@cd ui && yarn --ignore-optional
2018-04-03 14:46:45 +00:00
@echo "--> Running ember tests"
2019-12-18 17:12:44 +00:00
@cd ui && yarn run test:oss
2018-04-03 14:46:45 +00:00
2019-05-24 12:02:51 +00:00
ember-ci-test : # Deprecated, to be removed soon.
@echo "ember-ci-test is deprecated in favour of test-ui-browserstack"
@exit 1
check-vault-in-path :
@VAULT_BIN= $$ ( command -v vault) || { echo "vault command not found" ; exit 1; } ; \
[ -x " $$ VAULT_BIN " ] || { echo " $$ VAULT_BIN not executable " ; exit 1; } ; \
printf " Using Vault at %s:\n\$ $ vault version\n%s\n " " $$ VAULT_BIN " " $$ (vault version) "
check-browserstack-creds :
@[ -n " $$ BROWSERSTACK_ACCESS_KEY " ] || { echo "BROWSERSTACK_ACCESS_KEY not set" ; exit 1; }
@[ -n " $$ BROWSERSTACK_USERNAME " ] || { echo "BROWSERSTACK_USERNAME not set" ; exit 1; }
test-ui-browserstack : check -vault -in -path check -browserstack -creds
2019-05-03 22:20:14 +00:00
@echo "--> Installing JavaScript assets"
2019-10-17 19:48:45 +00:00
@cd ui && yarn --ignore-optional
2019-05-03 22:20:14 +00:00
@echo "--> Running ember tests in Browserstack"
@cd ui && yarn run test:browserstack
2018-04-03 14:46:45 +00:00
ember-dist :
@echo "--> Installing JavaScript assets"
2019-10-17 19:48:45 +00:00
@cd ui && yarn --ignore-optional
2018-04-03 14:46:45 +00:00
@cd ui && npm rebuild node-sass
@echo "--> Building Ember application"
2018-05-08 15:43:20 +00:00
@cd ui && yarn run build
2018-04-03 14:46:45 +00:00
@rm -rf ui/if-you-need-to-delete-this-open-an-issue-async-disk-cache
2018-06-25 20:30:11 +00:00
ember-dist-dev :
@echo "--> Installing JavaScript assets"
2019-10-17 19:48:45 +00:00
@cd ui && yarn --ignore-optional
2018-06-25 20:30:11 +00:00
@cd ui && npm rebuild node-sass
@echo "--> Building Ember application"
2019-10-17 19:48:45 +00:00
@cd ui && yarn run build-dev
2018-06-25 20:30:11 +00:00
2018-04-03 14:46:45 +00:00
static-dist : ember -dist static -assets
2018-06-25 20:30:11 +00:00
static-dist-dev : ember -dist -dev static -assets
2018-04-03 14:46:45 +00:00
2016-10-20 16:39:19 +00:00
proto :
2019-04-12 21:54:35 +00:00
protoc vault/*.proto --go_out= plugins = grpc,paths= source_relative:.
protoc helper/storagepacker/types.proto --go_out= plugins = grpc,paths= source_relative:.
protoc helper/forwarding/types.proto --go_out= plugins = grpc,paths= source_relative:.
protoc sdk/logical/*.proto --go_out= plugins = grpc,paths= source_relative:.
2019-06-20 19:14:58 +00:00
protoc physical/raft/types.proto --go_out= plugins = grpc,paths= source_relative:.
2019-04-12 21:54:35 +00:00
protoc helper/identity/mfa/types.proto --go_out= plugins = grpc,paths= source_relative:.
protoc helper/identity/types.proto --go_out= plugins = grpc,paths= source_relative:.
2019-04-15 18:10:07 +00:00
protoc sdk/database/dbplugin/*.proto --go_out= plugins = grpc,paths= source_relative:.
2019-04-12 21:54:35 +00:00
protoc sdk/plugin/pb/*.proto --go_out= plugins = grpc,paths= source_relative:.
2019-06-20 19:14:58 +00:00
sed -i -e 's/Id/ID/' vault/request_forwarding_service.pb.go
2020-02-14 22:02:33 +00:00
sed -i -e 's/Idp/IDP/' -e 's/Url/URL/' -e 's/Id/ID/' -e 's/IDentity/Identity/' -e 's/EntityId/EntityID/' -e 's/Api/API/' -e 's/Qr/QR/' -e 's/Totp/TOTP/' -e 's/Mfa/MFA/' -e 's/Pingid/PingID/' -e 's/protobuf:"/sentinel:"" protobuf:"/' -e 's/namespaceId/namespaceID/' -e 's/Ttl/TTL/' -e 's/BoundCidrs/BoundCIDRs/' helper/identity/types.pb.go helper/identity/mfa/types.pb.go helper/storagepacker/types.pb.go sdk/plugin/pb/backend.pb.go sdk/logical/identity.pb.go
2016-10-20 16:39:19 +00:00
2017-05-19 12:34:17 +00:00
fmtcheck :
2018-09-01 15:10:29 +00:00
@true
2018-09-01 15:17:02 +00:00
#@sh -c "'$(CURDIR)/scripts/gofmtcheck.sh'"
2017-05-19 12:34:17 +00:00
fmt :
2019-07-19 01:04:56 +00:00
goimports -w $( GOFMT_FILES)
2017-05-19 12:34:17 +00:00
2019-03-25 17:07:14 +00:00
assetcheck :
@echo "==> Checking compiled UI assets..."
@sh -c " ' $( CURDIR) /scripts/assetcheck.sh' "
2017-10-19 16:55:39 +00:00
spellcheck :
@echo "==> Spell checking website..."
@misspell -error -source= text website/source
2017-08-11 01:28:18 +00:00
mysql-database-plugin :
2020-01-09 17:35:32 +00:00
@CGO_ENABLED= 0 $( GO_CMD) build -o bin/mysql-database-plugin ./plugins/database/mysql/mysql-database-plugin
2017-08-11 01:28:18 +00:00
mysql-legacy-database-plugin :
2020-01-09 17:35:32 +00:00
@CGO_ENABLED= 0 $( GO_CMD) build -o bin/mysql-legacy-database-plugin ./plugins/database/mysql/mysql-legacy-database-plugin
2017-08-11 01:28:18 +00:00
cassandra-database-plugin :
2020-01-09 17:35:32 +00:00
@CGO_ENABLED= 0 $( GO_CMD) build -o bin/cassandra-database-plugin ./plugins/database/cassandra/cassandra-database-plugin
2017-08-11 01:28:18 +00:00
2019-01-18 01:14:57 +00:00
influxdb-database-plugin :
2020-01-09 17:35:32 +00:00
@CGO_ENABLED= 0 $( GO_CMD) build -o bin/influxdb-database-plugin ./plugins/database/influxdb/influxdb-database-plugin
2019-01-18 01:14:57 +00:00
2017-08-11 01:28:18 +00:00
postgresql-database-plugin :
2020-01-09 17:35:32 +00:00
@CGO_ENABLED= 0 $( GO_CMD) build -o bin/postgresql-database-plugin ./plugins/database/postgresql/postgresql-database-plugin
2017-08-11 01:28:18 +00:00
mssql-database-plugin :
2020-01-09 17:35:32 +00:00
@CGO_ENABLED= 0 $( GO_CMD) build -o bin/mssql-database-plugin ./plugins/database/mssql/mssql-database-plugin
2017-08-11 01:28:18 +00:00
hana-database-plugin :
2020-01-09 17:35:32 +00:00
@CGO_ENABLED= 0 $( GO_CMD) build -o bin/hana-database-plugin ./plugins/database/hana/hana-database-plugin
2017-08-11 01:28:18 +00:00
mongodb-database-plugin :
2020-01-09 17:35:32 +00:00
@CGO_ENABLED= 0 $( GO_CMD) build -o bin/mongodb-database-plugin ./plugins/database/mongodb/mongodb-database-plugin
2017-08-11 01:28:18 +00:00
2019-10-17 19:48:45 +00:00
# GPG_KEY_VARS sets FPR to the fingerprint with no spaces and GIT_GPG_KEY_ID to a git compatible gpg key id.
d e f i n e G P G _ K E Y _ V A R S
FPR = $$ ( echo " $( RELEASE_GPG_KEY_FINGERPRINT) " | sed 's/ //g' ) && GIT_GPG_KEY_ID = " 0x $$ (printf $$ FPR | tail -c 16) "
e n d e f
d e f i n e F A I L _ I F _ G P G _ K E Y _ M I S S I N G
@$( GPG_KEY_VARS) && echo " Checking for key ' $$ FPR' (git key id: $$ GIT_GPG_KEY_ID) " ; \
gpg --list-secret-keys " $$ FPR " >/dev/null 2>& 1 || { \
echo " ERROR: Secret GPG key missing: $$ FPR " ; \
exit 1; \
}
e n d e f
d e f i n e F A I L _ I F _ U N C O M M I T T E D _ C H A N G E S
@{ git diff --exit-code && git diff --cached --exit-code; } >/dev/null 2>& 1 || { \
echo "ERROR: Uncommitted changes detected." ; \
exit 1; \
}
e n d e f
stage-commit :
$( FAIL_IF_GPG_KEY_MISSING)
$( FAIL_IF_UNCOMMITTED_CHANGES)
@[ -n " $( STAGE_VERSION) " ] || { echo "You must set STAGE_VERSION to the version in semver-like format." ; exit 1; }
set -x; $( GPG_KEY_VARS) && git commit --allow-empty --gpg-sign= $$ GIT_GPG_KEY_ID -m 'release: stage v$(STAGE_VERSION)'
publish-commit :
$( FAIL_IF_GPG_KEY_MISSING)
$( FAIL_IF_UNCOMMITTED_CHANGES)
@[ -n " $( PUBLISH_VERSION) " ] || { echo "You must set PUBLISH_VERSION to the version in semver-like format." ; exit 1; }
set -x; $( GPG_KEY_VARS) && git commit --allow-empty --gpg-sign= $$ GIT_GPG_KEY_ID -m 'release: publish v$(PUBLISH_VERSION)'
ci/packagespec (#9653)
* add packagespec build system
- The majority of changes in this commit are files generated
by packagespec (everything in the packages-oss.lock directory).
* add .yamllint
* update to packagespec@fd54aea4
* ci: bust packagespec cache
- Change to packagespec results in package IDs that can use
git tag refs, not just commit refs.
* update to packagepsec@5fc121d0
- This busts all caches, because of a change to the way we
no longer traverse from tag refs to commit refs, due to
the potential confusion this can cause.
- See https://github.com/hashicorp/packagespec/commit/fd54aea4827bb6cfd637c78a2ab6274111605330
for the original change to packagespec necessitating this.
* update to packagespec@5e6c87b6
- This completes the change to allowing git tag refs
to be used for source IDs, begun in f130b940a8fbe3e9398225b08ea1d63420bef7b6
* update to packagespec@4d3c9e8b
- This busts cache, needed to apply previous change.
* remove RELEASE_BUILD_WORKFLOW_NAME
* update packagespec, add watch-ci target
* fix package names (do not refer to EDITION)
* remove EDITION input from packages-oss.yml
* bump package cache, update packagespec
* update packagespec, add 'aliases' target
* update packagespec; less output noise
* ci: give release bundle file a better name
- When performing a release build, this will include the build ID
as part of the name, making it easier to distinguish from other
builds.
* ci: create aliases tarball artifact
* ci: cache package metadata files
* ci: add metadata artifact
* ci: bust circleci package cache
* Revert "ci: bust circleci package cache"
This reverts commit 1320d182613466f0999d63f5742db12ac17f8e92.
* ci: remove aliases artifact
* ci: use buildID not workflowName to id artifacts
* packages: add BUNDLE_NAME metadata
* do not cache package metadata with binaries
* ci: bump package cache
* ci: debugging
* ci: fix package cache; update packagespec
* ci: update packagespec to 10e7beb2
* ci: write package metadata and aliases
* ci: switch to .zip artifacts
* switch package bundle back to tar.gz (from zip)
- Because of the way zip works, the zip archive was over 2GB rather than under 750MB as with tar.gz.
* bump packagespec, adds list-staged-builds
* update packagespec
* add publish stub + general tidy up
* bump packagespec
* bump packagespec; add make publish-config
* Makefile: tidy up packagespec targets
* pass PRODUCT_REPO_ROOT to packagespec
* bump go to 1.14.6
* packages-oss.yml: use more explicit base image
* bump packagespec to b899b7c1
* bump packagespec to f040ce8f
* packages-oss.yml: pin base image to digest
- This digest is pointed to by debian:buster-20200720
- Using a specific digest ensures that builds use the same
base image in all contexts
* add release-repo; bump packagespec
* remove BUILD_TAGS and -tags flag
* bump packagespec to e444f742
* bump to go1.14.7
* ci: bump to go1.14.7
2020-08-11 09:00:59 +00:00
# WRITE_GENERATED_FILE_HEADER overwrites the file specified, replacing its contents with
# the header warning people not to attempt to edit or merge the file. You should call this
# before writing the generated contents to the file.
# Args: 1: File to write; 2: Command to generate it; 3: Source files to edit/merge instead.
d e f i n e W R I T E _ G E N E R A T E D _ F I L E _ H E A D E R
echo "### ***" > $( 1) ; \
echo " ### WARNING: DO NOT manually EDIT or MERGE this file, it is generated by ' $( 2) '. " >> $( 1) ; \
echo " ### INSTEAD: Edit or merge the source in $( 3) then run ' $( 2) '. " >> $( 1) ; \
echo "### ***" >> $( 1)
e n d e f
## begin packagespec integration ##
# The plan is to generate this packagespec integration section automatically.
# By keeping it in a contiguous block for now, it will be easier to
# auto-generate when we get to it.
SPEC_FILE_PATTERN := packages*.yml
# SPEC is the human-managed description of which packages we are able to build.
SPEC := $( shell find . -mindepth 1 -maxdepth 1 -name '$(SPEC_FILE_PATTERN)' )
i f n e q ( $( words $ ( SPEC ) ) , 1 )
$(error Found $(words $(SPEC)) $(SPEC_FILE_PATTERN) files, need exactly 1 : $( SPEC ) )
e n d i f
SPEC_FILENAME := $( notdir $( SPEC) )
SPEC_MODIFIER := $( SPEC_FILENAME:packages%.yml= %)
# LOCKDIR contains the lockfile and layer files.
LOCKDIR := packages$( SPEC_MODIFIER) .lock
LOCKFILE := $( LOCKDIR) /pkgs.yml
export PACKAGE_SPEC_ID LAYER_SPEC_ID PRODUCT_REVISION PRODUCT_VERSION
# PACKAGESPEC_TARGETS are convenience aliases for targets defined in $(LOCKDIR)/Makefile
PACKAGESPEC_TARGETS := \
build build-all build-ci \
aliases meta package \
package-meta stage-config stage \
watch-ci publish-config publish list-staged-builds
$(PACKAGESPEC_TARGETS) :
$(PACKAGESPEC_TARGETS) :
@PRODUCT_REPO_ROOT= " $( shell git rev-parse --show-toplevel) " $( MAKE) -C $( LOCKDIR) $@
# packages regenerates $(LOCKDIR) from $(SPEC) using packagespec. This is only for
# internal HashiCorp use, as it has dependencies not available to OSS contributors.
packages :
@command -v packagespec > /dev/null 2>& 1 || { \
echo "Please install packagespec." ; \
echo "Note: packagespec is only available to HashiCorp employees at present." ; \
exit 1; \
}
@packagespec lock -specfile $( SPEC) -lockdir $( LOCKDIR)
@$( MAKE) ci-config
.PHONY : $( PACKAGESPEC_TARGETS ) packages
## end packagespec integration ##
CI_WORKFLOW_TPL := .circleci/config/@build-release.yml.tpl
CI_WORKFLOW := .circleci/config/@build-release.yml
.PHONY : ci -update -release -packages $( CI_WORKFLOW )
ci-update-release-packages : $( CI_WORKFLOW )
@echo $^
$(CI_WORKFLOW) : $( LOCKFILE ) $( CI_WORKFLOW_TPL )
@\
echo " ==> Updating $@ to match $< " ; \
$( call WRITE_GENERATED_FILE_HEADER,$@ ,make $@ ,$^) ; \
cat $< | gomplate -f $( CI_WORKFLOW_TPL) -d 'package-list=stdin://?type=application/yaml' >> $@
.PHONY : ci -config
ci-config : ci -update -release -packages
@$( MAKE) -C .circleci ci-config
.PHONY : ci -verify
ci-verify :
@$( MAKE) -C .circleci ci-verify
.PHONY : bin default prep test vet bootstrap ci -bootstrap fmt fmtcheck mysql -database -plugin mysql -legacy -database -plugin cassandra -database -plugin influxdb -database -plugin postgresql -database -plugin mssql -database -plugin hana -database -plugin mongodb -database -plugin static -assets ember -dist ember -dist -dev static -dist static -dist -dev assetcheck check -vault -in -path check -browserstack -creds test -ui -browserstack stage -commit publish -commit
2019-01-17 23:19:54 +00:00
.NOTPARALLEL : ember -dist ember -dist -dev static -assets