11SHELL := /bin/bash
22
33GO ?= go
4+ VAULT ?= vault
45
5- COVER_PROFILE ?= coverage.out
6- COVER_HTML ?= coverage.html
6+ COVER_PROFILE ?= $( BUILD_DIR ) / coverage.out
7+ COVER_HTML ?= $( BUILD_DIR ) / coverage.html
78
89# Default build tags for tests; can be overridden:
910# make test TAGS="unit,local"
@@ -13,13 +14,54 @@ TAGS ?= unit,local,saas,selfhosted
1314# make test TEST_ARGS="-run TestFoo -v"
1415TEST_ARGS ?=
1516
16- .PHONY : test coverage clean-coverage
17+ BUILD_DIR ?= build
18+ PLUGIN_CMD ?= vault-plugin-secrets-gitlab
19+ PLUGIN_BIN ?= gitlab
20+
21+ VAULT_PLUGIN_DIR ?= ./run/plugins
22+ VAULT_ROOT_TOKEN ?= root-token
23+ VAULT_ADDR ?= http://127.0.0.1:8200
24+
25+ PLUGIN_NAME ?= gitlab
26+ PLUGIN_TYPE ?= secret
27+
28+ .PHONY : test coverage clean clean-coverage build vault-plugin-enable vault-dev check-go check-vault
29+
30+ check-go :
31+ @command -v " $( GO) " > /dev/null 2>&1 || { \
32+ echo " ERROR: required binary '$( GO) ' not found in PATH. Install Go or set GO=<path-to-go>." ; \
33+ exit 1; \
34+ }
35+
36+ check-vault :
37+ @command -v " $( VAULT) " > /dev/null 2>&1 || { \
38+ echo " ERROR: required binary '$( VAULT) ' not found in PATH. Install Vault or set VAULT=<path-to-vault>." ; \
39+ exit 1; \
40+ }
41+
42+ clean :
43+ rm -rf $(BUILD_DIR ) $(VAULT_PLUGIN_DIR )
1744
1845test : coverage
1946
20- coverage :
21- $(GO ) test ./... -coverprofile=$(COVER_PROFILE ) -race -tags $(TAGS ) -count 1 $(TEST_ARGS )
47+ coverage : check-go clean-coverage
48+ mkdir -p $(BUILD_DIR )
49+ $(GO ) test ./... -cover -coverprofile=$(COVER_PROFILE ) -race -tags $(TAGS ) -count 1 $(TEST_ARGS )
2250 $(GO ) tool cover -html=$(COVER_PROFILE ) -o $(COVER_HTML )
2351
2452clean-coverage :
25- rm -f $(COVER_PROFILE ) $(COVER_HTML )
53+ rm -f $(BUILD_DIR ) /$(COVER_PROFILE ) $(BUILD_DIR ) /$(COVER_HTML )
54+
55+ build : check-go
56+ mkdir -p $(BUILD_DIR )
57+ $(GO ) build -trimpath -o $(BUILD_DIR ) /$(PLUGIN_BIN ) ./cmd/$(PLUGIN_CMD )
58+
59+ vault-plugin-enable : check-vault
60+ export VAULT_ADDR=$(VAULT_ADDR )
61+ export VAULT_TOKEN=$(VAULT_ROOT_TOKEN )
62+ $(VAULT ) secrets enable -path=" $( PLUGIN_NAME) " " $( PLUGIN_NAME) "
63+
64+ vault-dev : check-vault clean build
65+ mkdir -p $(VAULT_PLUGIN_DIR )
66+ cp -f $(BUILD_DIR ) /$(PLUGIN_BIN ) $(VAULT_PLUGIN_DIR ) /$(PLUGIN_BIN )
67+ $(VAULT ) server -dev -dev-root-token-id=$(VAULT_ROOT_TOKEN ) -dev-plugin-dir=$(shell pwd) /$(VAULT_PLUGIN_DIR )
0 commit comments