Repository navigation
Expand file tree
/
Copy pathGNUmakefile
More file actions
152 lines (117 loc) · 5.45 KB
/
Copy pathGNUmakefile
File metadata and controls
152 lines (117 loc) · 5.45 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
TEST?=$$(go list ./... |grep -v 'vendor')
GOFMT_FILES?=$$(find . -name '*.go' |grep -v vendor)
WEBSITE_REPO=github.com/hashicorp/terraform-website
PACKAGE=$(shell env GO111MODULE=on go list)
GIT_VERSION?=$(shell git describe --tags --always --dirty --match=v* 2> /dev/null || \
cat $(CURDIR)/.version 2> /dev/null || echo v0)
VERSION=$(shell echo $(GIT_VERSION) | sed 's/^v//' | sed 's/-.*//')
PROVIDER_HOSTNAME=registry.upcloud.com
PROVIDER_NAMESPACE=upcloud
PROVIDER_TYPE=upcloud
PROVIDER_TARGET=$(shell go env GOOS)_$(shell go env GOARCH)
PROVIDER_PATH=~/.terraform.d/plugins/$(PROVIDER_HOSTNAME)/$(PROVIDER_NAMESPACE)/$(PROVIDER_TYPE)/$(VERSION)/$(PROVIDER_TARGET)
TOOLS_DIR:=$(CURDIR)/.ci/bin
default: build
build: fmtcheck
@mkdir -p $(PROVIDER_PATH)
go build \
-tags release \
-ldflags '-X $(PACKAGE)/internal/config.Version=$(GIT_VERSION)' \
-o $(PROVIDER_PATH)/terraform-provider-$(PROVIDER_NAMESPACE)_v$(VERSION)
generate:
go generate ./...
test: fmtcheck
@echo "Running unit tests (excluding acceptance tests in upcloud/)"
go test $$(go list ./... | grep -v 'vendor' | grep -vE '/upcloud($|/)') $(TESTARGS) -v -timeout=20m -parallel=4 -count=1
testacc: fmtcheck
@echo "Running all acceptance tests..."
TF_ACC=1 go test ./upcloud/... $(TESTARGS) -v -parallel=14 -timeout=240m
testacc-provider: fmtcheck
@echo "Running acceptance tests in ./upcloud only..."
TF_ACC=1 go test ./upcloud $(TESTARGS) -v -parallel=14 -timeout=240m
testacc-kubernetes:
@echo "Running acceptance tests in ./upcloud/kubernetes only..."
TF_ACC=1 go test ./upcloud/kubernetes $(TESTARGS) -v -parallel=4 -count=1 -timeout=150m
testacc-database:
@echo "Running acceptance tests in ./upcloud/database only..."
TF_ACC=1 go test ./upcloud/database $(TESTARGS) -v -parallel=4 -count=1 -timeout=150m
testacc-managedobjectstorage:
@echo "Running acceptance tests in ./upcloud/managedobjectstorage only..."
TF_ACC=1 go test ./upcloud/managedobjectstorage $(TESTARGS) -v -parallel=4 -count=1 -timeout=150m
testacc-server:
@echo "Running acceptance tests in ./upcloud/server only..."
TF_ACC=1 go test ./upcloud/server $(TESTARGS) -v -parallel=16 -count=1 -timeout=150m
testacc-network:
@echo "Running acceptance tests in ./upcloud/network only..."
TF_ACC=1 go test ./upcloud/network $(TESTARGS) -v -parallel=4 -count=1 -timeout=150m
testacc-cloud:
@echo "Running acceptance tests in ./upcloud/cloud only..."
TF_ACC=1 go test ./upcloud/cloud $(TESTARGS) -v -parallel=4 -count=1 -timeout=150m
testacc-filestorage:
@echo "Running acceptance tests in ./upcloud/filestorage only..."
TF_ACC=1 go test ./upcloud/filestorage $(TESTARGS) -v -parallel=4 -count=1 -timeout=150m
testacc-ip:
@echo "Running acceptance tests in ./upcloud/ip only..."
TF_ACC=1 go test ./upcloud/ip $(TESTARGS) -v -parallel=4 -count=1 -timeout=150m
testacc-storage:
@echo "Running acceptance tests in ./upcloud/storage only..."
TF_ACC=1 go test ./upcloud/storage $(TESTARGS) -v -parallel=4 -count=1 -timeout=150m
testacc-firewall:
@echo "Running acceptance tests in ./upcloud/firewall only..."
TF_ACC=1 go test ./upcloud/firewall $(TESTARGS) -v -parallel=4 -count=1 -timeout=150m
testacc-gateway:
@echo "Running acceptance tests in ./upcloud/gateway only..."
TF_ACC=1 go test ./upcloud/gateway $(TESTARGS) -v -parallel=4 -count=1 -timeout=150m
testacc-loadbalancer:
@echo "Running acceptance tests in ./upcloud/loadbalancer only..."
TF_ACC=1 go test ./upcloud/loadbalancer $(TESTARGS) -v -parallel=4 -count=1 -timeout=150m
testacc-networkpeering:
@echo "Running acceptance tests in ./upcloud/networkpeering only..."
TF_ACC=1 go test ./upcloud/networkpeering $(TESTARGS) -v -parallel=4 -count=1 -timeout=150m
testacc-router:
@echo "Running acceptance tests in ./upcloud/router only..."
TF_ACC=1 go test ./upcloud/router $(TESTARGS) -v -parallel=4 -count=1 -timeout=150m
testacc-servergroup:
@echo "Running acceptance tests in ./upcloud/servergroup only..."
TF_ACC=1 go test ./upcloud/servergroup $(TESTARGS) -v -parallel=4 -count=1 -timeout=150m
testacc-tag:
@echo "Running acceptance tests in ./upcloud/tag only..."
TF_ACC=1 go test ./upcloud/tag $(TESTARGS) -v -parallel=4 -count=1 -timeout=150m
vet:
@echo "go vet ."
@go vet $$(go list ./... | grep -v vendor/) ; if [ $$? -ge 1 ]; then \
echo ""; \
echo "Vet found suspicious constructs. Please check the reported constructs"; \
echo "and fix them if necessary before submitting the code for review."; \
exit 1; \
fi
fmt:
gofmt -w $(GOFMT_FILES)
fmtcheck:
@sh -c "'$(CURDIR)/scripts/gofmtcheck.sh'"
errcheck:
@sh -c "'$(CURDIR)/scripts/errcheck.sh'"
test-compile:
@if [ "$(TEST)" = "./..." ]; then \
echo "ERROR: Set TEST to a specific package. For example,"; \
echo " make test-compile TEST=./aws"; \
exit 1; \
fi
go test -c $(TEST) $(TESTARGS)
update-deps:
go mod vendor
install-tools:
cd .ci/tools && GOBIN=$(TOOLS_DIR) go install github.com/hashicorp/terraform-plugin-docs/cmd/tfplugindocs
docs: install-tools
terraform fmt -recursive examples/
$(TOOLS_DIR)/tfplugindocs --blocks-section
./scripts/group-docs.sh
release-notes: CHANGELOG_HEADER = ^\#\# \[
release-notes: CHANGELOG_VERSION = $(subst v,,$(VERSION))
release-notes:
@awk \
'/${CHANGELOG_HEADER}${CHANGELOG_VERSION}/ { flag = 1; next } \
/${CHANGELOG_HEADER}/ { if ( flag ) { exit; } } \
flag { if ( n ) { print prev; } n++; prev = $$0 }' \
CHANGELOG.md
.PHONY: build generate test testacc vet fmt fmtcheck errcheck test-compile update-deps website website-test build_0_12 install-tools docs release-notes