-
Notifications
You must be signed in to change notification settings - Fork 398
Expand file tree
/
Copy pathMakefile
More file actions
172 lines (129 loc) · 5.41 KB
/
Makefile
File metadata and controls
172 lines (129 loc) · 5.41 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
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
.PHONY: all install lint test test-go test-go-ci check-js test-js test-js-ci test-storybook integration wire-check wire ensure goimports vendor shellcheck release-container update-codegen update-codegen-go update-codegen-starlark update-codegen-ts shorttest-ci
all: check-js test-js test-storybook
CIRCLECI := $(if $(CIRCLECI),$(CIRCLECI),false)
GOIMPORTS_LOCAL_ARG := -local github.com/tilt-dev
# Build a binary the current commit SHA
install:
go install -mod vendor -ldflags "-X 'github.com/tilt-dev/tilt/internal/cli.commitSHA=$$(git merge-base master HEAD)'" ./cmd/tilt/...
# disable optimizations and inlining, to allow more complete information when attaching a debugger or capturing a profile
install-debug:
go install -mod vendor -gcflags "all=-N -l" ./...
lint: golangci-lint
lintfix:
LINT_FLAGS=--fix make golangci-lint
build:
go test -mod vendor -timeout 60s ./... -run nonsenseregex
test-go:
go test -mod vendor -timeout 100s ./...
test-go-ci:
ifneq ($(CIRCLECI),true)
@if scripts/ci-has-go-changes.sh; then gotestsum -- -mod vendor -timeout 100s ./...; else echo "No Go changes, skipping tests"; fi
else
@if scripts/ci-has-go-changes.sh; then mkdir -p test-results && gotestsum --format standard-quiet --junitfile test-results/unit-tests.xml -- ./... -mod vendor -timeout 100s; else echo "No Go changes, skipping tests"; fi
endif
test: test-go test-js
# skip some tests that are slow and not always relevant
# TODO(matt) skiplargetiltfiletests only skips the tiltfile DC+Helm tests at the moment
# we might also want to skip the ones in engine
shorttest:
go test -mod vendor -short -tags skipcontainertests,skiplargetiltfiletests -timeout 100s ./...
shorttest-ci:
ifneq ($(CIRCLECI),true)
@if scripts/ci-has-go-changes.sh; then gotestsum -- -mod vendor -short -tags skipcontainertests,skiplargetiltfiletests -timeout 100s ./...; else echo "No Go changes, skipping tests"; fi
else
@if scripts/ci-has-go-changes.sh; then mkdir -p test-results && gotestsum --format standard-quiet --junitfile test-results/unit-tests.xml --rerun-fails=2 --rerun-fails-max-failures=10 --packages="./..." -- -mod vendor -count 1 -short -tags skipcontainertests,skiplargetiltfiletests -timeout 100s; else echo "No Go changes, skipping tests"; fi
endif
integration:
ifneq ($(CIRCLECI),true)
go test -mod vendor -v -count 1 -tags 'integration' -timeout 30m ./integration
else
mkdir -p test-results
gotestsum --format dots --junitfile test-results/unit-tests.xml -- ./integration -mod vendor -count 1 -tags 'integration' -timeout 1000s
endif
# Run the integration tests on kind
integration-kind:
KIND_CLUSTER_NAME=integration ./integration/kind-with-registry.sh
KUBECONFIG="$(kind get kubeconfig-path --name="integration")" go test -mod vendor -tags 'integration' -timeout 30m ./integration -count 1
kind delete cluster --name=integration
# Run the extension integration tests against the current kubecontext
test-extensions:
scripts/test-extensions.sh
dev-js:
cd web && yarn install && yarn run start
check-js:
cd web && yarn install --immutable
# make sure there are no compilation errors or lint warnings
cd web && CI=true yarn build
cd web && yarn run check
build-js:
cd web && yarn install --immutable
cd web && yarn build
cp -r web/build/* pkg/assets/build
test-js:
cd web && yarn install --immutable
ifneq ($(CIRCLECI),true)
cd web && CI=true yarn test
else
cd web && CI=true yarn ci
endif
test-js-ci:
@if scripts/ci-has-web-changes.sh; then $(MAKE) test-js; else echo "No web changes, skipping tests"; fi
test-storybook:
cd web && yarn start-storybook --ci --smoke-test
goimports:
goimports -w -l $(GOIMPORTS_LOCAL_ARG) cmd/ integration/ internal/ pkg/
benchmark:
go test -mod vendor -run=XXX -bench=. ./...
golangci-lint:
ifneq ($(CIRCLECI),true)
GOFLAGS="-mod=vendor" golangci-lint run $(LINT_FLAGS) -v --timeout 300s
else
mkdir -p test-results
GOFLAGS="-mod=vendor" golangci-lint run -v --timeout 300s --output.junit-xml.path=test-results/lint.xml
endif
wire:
wire ./internal/engine ./internal/engine/buildcontrol ./internal/cli
goimports -w -l $(GOIMPORTS_LOCAL_ARG) internal/
wire-check:
wire check ./internal/engine ./internal/engine/buildcontrol ./internal/cli
release-container:
scripts/build-tilt-releaser.sh
ci-container:
scripts/build-tilt-ci.sh
ci-integration-container:
scripts/build-tilt-integration-ci.sh
clean:
go clean -cache -testcache -r -i ./...
prettier:
cd web && yarn install
cd web && yarn prettier
storybook:
cd web && yarn install
cd web && yarn storybook
ensure: vendor
vendor:
go mod vendor
go mod tidy
cli-docs:
rm -fR ../tilt.build/docs/cli
mkdir ../tilt.build/docs/cli
tilt dump cli-docs --dir=../tilt.build/docs/cli
test_install_version_check: install
NO_INSTALL=1 PATH="~/go/bin:$$PATH" scripts/install.sh
shellcheck:
find ./scripts -type f -name '*.sh' -exec docker run --rm -it -e SHELLCHECK_OPTS="-e SC2001" -v $$(pwd):/mnt nlknguyen/alpine-shellcheck {} \;
update-codegen: update-codegen-go update-codegen-ts update-codegen-starlark
update-codegen-go:
scripts/update-codegen.sh
goimports -w -l $(GOIMPORTS_LOCAL_ARG) pkg
update-codegen-starlark:
go install github.com/tilt-dev/tilt-starlark-codegen@latest
tilt-starlark-codegen ./pkg/apis/core/v1alpha1 ./internal/tiltfile/v1alpha1
goimports -w -l $(GOIMPORTS_LOCAL_ARG) internal/
update-codegen-ts:
go install github.com/gzuidhof/tygo@latest
tygo generate
cd web && yarn install
cd web && yarn prettier
release-build:
toast -f build.toast.yml