forked from Azure/terraform-provider-acsengine
-
Notifications
You must be signed in to change notification settings - Fork 0
/
GNUmakefile
146 lines (107 loc) · 4.27 KB
/
GNUmakefile
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
TEST?=$$(go list ./... |grep -v 'vendor')
GOFMT_FILES?=$$(find . -name '*.go' |grep -v vendor)
PKG_NAME=acsengine
undefine TF_ACC
# TF_LOG=INFO
###############################################################################
# build
###############################################################################
default: build
build: fmtcheck prereqs generate-all
go install
HAS_DEP := $(shell command -v dep;)
HAS_GIT := $(shell command -v git;)
HAS_GOMETALINTER := $(shell command -v gometalinter;)
prereqs:
ifndef HAS_DEP
go get -u github.com/golang/dep/cmd/dep
endif
go get github.com/jteeuwen/go-bindata/...
ifndef HAS_GIT
$(error you must install Git)
endif
ifndef HAS_GOMETALINTER
go get -u github.com/alecthomas/gometalinter
gometalinter --install
endif
.PHONY: build prereqs
###############################################################################
# generate for acs-engine
###############################################################################
generate-templates:
go generate ./vendor/github.com/Azure/acs-engine/pkg/acsengine
generate-translations:
go generate ./vendor/github.com/Azure/acs-engine/pkg/i18n
generate-all: generate-templates generate-translations
.PHONY: generate-templates generate-translations
###############################################################################
# vendor
###############################################################################
vendor:
@dep ensure
vendor-status:
@dep status
.PHONY: vendor vendor-status
###############################################################################
# testing
###############################################################################
test: fmtcheck
go test -i $(TEST) || exit 1
echo $(TEST) | \
xargs -t -n4 go test $(TESTARGS) -timeout=2m -parallel=4
testacc: fmtcheck
@TF_ACC=1 go test ./acsengine -v -timeout 15h
lint:
gometalinter ./acsengine/... --disable-all \
--enable=vet --enable=gotype --enable=deadcode --enable=golint --enable=varcheck \
--enable=structcheck --enable=errcheck --enable=ineffassign --enable=unconvert --enable=goconst \
--enable=misspell --enable=goimports --enable=gofmt --deadline 100s
# I would like to add in dupl, vetshadow, and megacheck eventually, maybe gocyclo, gosec, and others
fmtcheck:
@sh "$(CURDIR)/scripts/gofmtcheck.sh"
errcheck:
@sh "$(CURDIR)/scripts/errcheck.sh"
test-compile:
@if [ "$(TEST)" = "./..." ]; then \
echo "ERROR: Set TEST to a specific package. For example,"; \
echo " make test-compile TEST=./$(PKG_NAME)"; \
exit 1; \
fi
go test -c $(TEST) $(TESTARGS)
coverage:
@scripts/coverage.sh --codecov
.PHONY: test testacc lint fmtcheck errcheck test-compile coverage
###############################################################################
# CI tests
###############################################################################
cluster-create:
TF_ACC=1 go test ./acsengine -v -run createBasic -timeout 3h
TF_ACC=1 go test ./acsengine -v -run createVersion10AndAbove -timeout 3h
cluster-scale:
TF_ACC=1 go test ./acsengine -v -run scaleUpDown -timeout 5h
TF_ACC=1 go test ./acsengine -v -run scaleDownUp -timeout 5h
cluster-upgrade:
TF_ACC=1 go test ./acsengine -v -run upgradeMultiple -timeout 5h
TF_ACC=1 go test ./acsengine -v -run upgradeVersion10AndAbove -timeout 5h
cluster-update-scale:
TF_ACC=1 go test ./acsengine -v -run updateScaleUpUpgrade -timeout 5h
TF_ACC=1 go test ./acsengine -v -run updateScaleDownUpgrade -timeout 5h
cluster-update-upgrade:
TF_ACC=1 go test ./acsengine -v -run updateUpgrade -timeout 5h
cluster-update-tags:
TF_ACC=1 go test ./acsengine -v -run updateTags -timeout 5h
cluster-data:
TF_ACC=1 go test ./acsengine -v -run DataSource -timeout 5h
cluster-import:
TF_ACC=1 go test ./acsengine -v -run importBasic -timeout 5h
cluster-windows:
TF_ACC=1 go test ./acsengine -v -run windowsCreate -timeout 5h
.PHONY: cluster-create cluster-scale cluster-upgrade cluster-update-scale cluster-update-upgrade cluster-update-tags cluster-data cluster-import
###############################################################################
# key vault for CI tests
###############################################################################
keyvault-apply:
@scripts/keyvault.sh --tfapply
keyvault-destroy:
@scripts/keyvault.sh --tfdestroy
.PHONY: keyvault-apply keyvault-destroy