github.com/pachyderm/pachyderm@v1.13.4/Makefile (about) 1 #### VARIABLES 2 # TESTFLAGS: flags for test 3 # KUBECTLFLAGS: flags for kubectl 4 # DOCKER_BUILD_FLAGS: flags for 'docker build' 5 #### 6 7 include etc/govars.mk 8 9 RUN= # used by go tests to decide which tests to run (i.e. passed to -run) 10 # Don't set the version to the git hash in CI, as it breaks the go build cache. 11 ifdef CIRCLE_BRANCH 12 export GC_FLAGS = "" 13 else 14 export VERSION_ADDITIONAL = -$(shell git log --pretty=format:%H | head -n 1) 15 export GC_FLAGS = "all=-trimpath=${PWD}" 16 endif 17 18 export CLIENT_ADDITIONAL_VERSION=github.com/pachyderm/pachyderm/src/client/version.AdditionalVersion=$(VERSION_ADDITIONAL) 19 export LD_FLAGS=-X $(CLIENT_ADDITIONAL_VERSION) 20 export DOCKER_BUILD_FLAGS 21 22 CLUSTER_NAME ?= pachyderm 23 CLUSTER_MACHINE_TYPE ?= n1-standard-4 24 CLUSTER_SIZE ?= 4 25 26 MINIKUBE_MEM = 8192 # MB of memory allocated to minikube 27 MINIKUBE_CPU = 4 # Number of CPUs allocated to minikube 28 29 CHLOGFILE = ${PWD}/../changelog.diff 30 export GOVERSION = $(shell cat etc/compile/GO_VERSION) 31 GORELSNAP = #--snapshot # uncomment --snapshot if you want to do a dry run. 32 SKIP = #\# # To skip push to docker and github remove # in front of # 33 GORELDEBUG = #--debug # uncomment --debug for verbose goreleaser output 34 35 # Default upper bound for test timeouts 36 # You can specify your own, but this is what CI uses 37 TIMEOUT ?= 3600s 38 39 install: 40 # GOBIN (default: GOPATH/bin) must be on your PATH to access these binaries: 41 go install -ldflags "$(LD_FLAGS)" -gcflags "$(GC_FLAGS)" ./src/server/cmd/pachctl 42 43 install-clean: 44 @# Need to blow away pachctl binary if its already there 45 @rm -f $(PACHCTL) 46 @make install 47 48 install-doc: 49 go install -gcflags "$(GC_FLAGS)" ./src/server/cmd/pachctl-doc 50 51 doc-custom: install-doc install-clean 52 ./etc/build/doc.sh 53 54 doc-reference-refresh: install-doc install-clean 55 ./etc/build/reference_refresh.sh 56 57 doc: 58 @make VERSION_ADDITIONAL= doc-custom 59 60 point-release: 61 @./etc/build/make_changelog.sh $(CHLOGFILE) 62 @VERSION_ADDITIONAL= ./etc/build/make_release.sh 63 @echo "Release completed" 64 65 # Run via 'make VERSION_ADDITIONAL=-rc2 release-candidate' to specify a version string 66 release-candidate: 67 @make custom-release 68 69 custom-release: 70 echo "" > $(CHLOGFILE) 71 @VERSION_ADDITIONAL=$(VERSION_ADDITIONAL) ./etc/build/make_release.sh "Custom" 72 # Need to check for homebrew updates from release-pachctl-custom 73 74 # This is getting called from etc/build/make_release.sh 75 # Git tag is force pushed. We are assuming if the same build is done again, it is done with intent 76 release: 77 @git tag -f -am "Release tag v$(VERSION)" v$(VERSION) 78 $(SKIP) @git push -f origin v$(VERSION) 79 @make release-helper 80 @make release-pachctl 81 @echo "Release $(VERSION) completed" 82 83 release-helper: release-docker-images docker-push docker-push-pipeline-build 84 85 release-docker-images: 86 DOCKER_BUILDKIT=1 goreleaser release -p 1 $(GORELSNAP) $(GORELDEBUG) --skip-publish --rm-dist -f goreleaser/docker.yml 87 DOCKER_BUILDKIT=1 goreleaser release -p 1 $(GORELSNAP) $(GORELDEBUG) --skip-publish --rm-dist -f goreleaser/docker-build-pipelines.yml 88 89 release-pachctl: 90 @goreleaser release -p 1 $(GORELSNAP) $(GORELDEBUG) --release-notes=$(CHLOGFILE) --rm-dist -f goreleaser/pachctl.yml 91 92 docker-build: 93 DOCKER_BUILDKIT=1 goreleaser release -p 1 --snapshot $(GORELDEBUG) --skip-publish --rm-dist -f goreleaser/docker.yml 94 95 docker-build-pipeline-build: install 96 VERSION=$$($(PACHCTL) version --client-only) DOCKER_BUILDKIT=1 \ 97 goreleaser release -p 1 --snapshot $(GORELDEBUG) --skip-publish --rm-dist -f goreleaser/docker-build-pipelines.yml 98 99 docker-build-proto: 100 docker build $(DOCKER_BUILD_FLAGS) -t pachyderm_proto etc/proto 101 102 docker-build-netcat: 103 docker build $(DOCKER_BUILD_FLAGS) -t pachyderm_netcat etc/netcat 104 105 docker-build-gpu: 106 docker build $(DOCKER_BUILD_FLAGS) -t pachyderm_nvidia_driver_install etc/deploy/gpu 107 docker tag pachyderm_nvidia_driver_install pachyderm/nvidia_driver_install 108 109 docker-build-kafka: 110 docker build -t kafka-demo etc/testing/kafka 111 112 docker-build-spout-test: 113 docker build -t spout-test etc/testing/spout 114 115 docker-push-gpu: 116 $(SKIP) docker push pachyderm/nvidia_driver_install 117 118 docker-push-gpu-dev: 119 docker tag pachyderm/nvidia_driver_install pachyderm/nvidia_driver_install:`git rev-list HEAD --max-count=1` 120 $(SKIP) docker push pachyderm/nvidia_driver_install:`git rev-list HEAD --max-count=1` 121 echo pushed pachyderm/nvidia_driver_install:`git rev-list HEAD --max-count=1` 122 123 docker-gpu: docker-build-gpu docker-push-gpu 124 125 docker-gpu-dev: docker-build-gpu docker-push-gpu-dev 126 127 docker-build-test-entrypoint: 128 docker build $(DOCKER_BUILD_FLAGS) -t pachyderm_entrypoint etc/testing/entrypoint 129 130 docker-tag: 131 docker tag pachyderm/pachd pachyderm/pachd:$(VERSION) 132 docker tag pachyderm/worker pachyderm/worker:$(VERSION) 133 docker tag pachyderm/pachctl pachyderm/pachctl:$(VERSION) 134 135 docker-push: docker-tag 136 $(SKIP) docker push pachyderm/etcd:v3.3.5 137 $(SKIP) docker push pachyderm/pachd:$(VERSION) 138 $(SKIP) docker push pachyderm/worker:$(VERSION) 139 $(SKIP) docker push pachyderm/pachctl:$(VERSION) 140 141 docker-push-pipeline-build: install 142 $(SKIP) ls etc/pipeline-build | xargs -I {} docker push pachyderm/{}-build:$$($(PACHCTL) version --client-only) 143 144 docker-push-pipeline-build-to-minikube: install 145 $(SKIP) ls etc/pipeline-build | xargs -I {} etc/kube/push-to-minikube.sh pachyderm/{}-build:$$($(PACHCTL) version --client-only) 146 147 check-kubectl: 148 @# check that kubectl is installed 149 @which kubectl >/dev/null || { \ 150 echo "error: kubectl not found"; \ 151 exit 1; \ 152 } 153 @if expr match $(shell kubectl config current-context) gke_pachub > /dev/null; then \ 154 echo "ERROR: The active kubectl context is pointing to a pachub GKE cluster"; \ 155 exit 1; \ 156 fi 157 158 check-kubectl-connection: 159 kubectl $(KUBECTLFLAGS) get all > /dev/null 160 161 launch-kube: check-kubectl 162 etc/kube/start-minikube.sh 163 164 launch-dev-vm: check-kubectl 165 # Making sure minikube isn't still up from a previous run... 166 @if minikube ip 2>/dev/null || sudo minikube ip 2>/dev/null; \ 167 then \ 168 echo "minikube is still up. Run 'make clean-launch-kube'"; \ 169 exit 1; \ 170 fi 171 etc/kube/start-minikube-vm.sh --cpus=$(MINIKUBE_CPU) --memory=$(MINIKUBE_MEM) 172 173 # launch-release-vm is like launch-dev-vm but it doesn't build pachctl locally, and uses the same 174 # version of pachd associated with the current pachctl (useful if you want to start a VM with a 175 # point-release version of pachd, instead of whatever's in the current branch) 176 launch-release-vm: 177 # Making sure minikube isn't still up from a previous run... 178 @if minikube ip 2>/dev/null || sudo minikube ip 2>/dev/null; \ 179 then \ 180 echo "minikube is still up. Run 'make clean-launch-kube'"; \ 181 exit 1; \ 182 fi 183 etc/kube/start-minikube-vm.sh --cpus=$(MINIKUBE_CPU) --memory=$(MINIKUBE_MEM) --tag=v$$($(PACHCTL) version --client-only) 184 185 clean-launch-kube: 186 @# clean up both of the following cases: 187 @# make launch-dev-vm - minikube config is owned by $USER 188 @# make launch-kube - minikube config is owned by root 189 minikube ip 2>/dev/null && minikube delete || true 190 sudo minikube ip 2>/dev/null && sudo minikube delete || true 191 killall kubectl || true 192 193 launch: install check-kubectl 194 $(eval STARTTIME := $(shell date +%s)) 195 $(PACHCTL) deploy local --dry-run | kubectl $(KUBECTLFLAGS) apply -f - 196 # wait for the pachyderm to come up 197 until timeout 1s ./etc/kube/check_ready.sh app=pachd; do sleep 1; done 198 @echo "pachd launch took $$(($$(date +%s) - $(STARTTIME))) seconds" 199 200 launch-dev: check-kubectl check-kubectl-connection install 201 $(eval STARTTIME := $(shell date +%s)) 202 $(PACHCTL) deploy local --no-guaranteed -d --dry-run $(LAUNCH_DEV_ARGS) | kubectl $(KUBECTLFLAGS) apply -f - 203 # wait for the pachyderm to come up 204 until timeout 1s ./etc/kube/check_ready.sh app=pachd; do sleep 1; done 205 @echo "pachd launch took $$(($$(date +%s) - $(STARTTIME))) seconds" 206 207 clean-launch: check-kubectl install 208 yes | $(PACHCTL) undeploy 209 210 clean-launch-dev: check-kubectl install 211 yes | $(PACHCTL) undeploy 212 213 full-clean-launch: check-kubectl 214 kubectl $(KUBECTLFLAGS) delete --ignore-not-found job -l suite=pachyderm 215 kubectl $(KUBECTLFLAGS) delete --ignore-not-found all -l suite=pachyderm 216 kubectl $(KUBECTLFLAGS) delete --ignore-not-found serviceaccount -l suite=pachyderm 217 kubectl $(KUBECTLFLAGS) delete --ignore-not-found secret -l suite=pachyderm 218 219 test-proto-static: 220 ./etc/proto/test_no_changes.sh || echo "Protos need to be recompiled; run 'DOCKER_BUILD_FLAGS=--no-cache make proto'." 221 222 test-deploy-manifests: install 223 ./etc/testing/deploy-manifests/validate.sh 224 225 regenerate-test-deploy-manifests: install 226 ./etc/testing/deploy-manifests/validate.sh --regenerate 227 228 proto: docker-build-proto 229 ./etc/proto/build.sh 230 231 # Run all the tests. Note! This is no longer the test entrypoint for travis 232 test: clean-launch-dev launch-dev lint enterprise-code-checkin-test docker-build test-pfs-server test-cmds test-libs test-vault test-auth test-enterprise test-worker test-admin test-pps 233 234 enterprise-code-checkin-test: 235 @which ag || { printf "'ag' not found. Run:\n sudo apt-get install -y silversearcher-ag\n brew install the_silver_searcher\nto install it\n\n"; exit 1; } 236 # Check if our test activation code is anywhere in the repo 237 @echo "Files containing test Pachyderm Enterprise activation token:"; \ 238 if ag --ignore=Makefile -p .gitignore 'RM2o1Qit6YlZhS1RGdXVac'; \ 239 then \ 240 $$( which echo ) -e "\n*** It looks like Pachyderm Engineering's test activation code may be in this repo. Please remove it before committing! ***\n"; \ 241 false; \ 242 fi 243 244 test-pfs-server: 245 ./etc/testing/start_postgres.sh 246 ./etc/testing/pfs_server.sh $(TIMEOUT) 247 248 test-pfs-storage: 249 ./etc/testing/start_postgres.sh 250 go test -count=1 ./src/server/pkg/storage/... -timeout $(TIMEOUT) 251 252 test-pps: launch-stats docker-build-spout-test docker-build-test-entrypoint 253 @# Use the count flag to disable test caching for this test suite. 254 PROM_PORT=$$(kubectl --namespace=monitoring get svc/prometheus -o json | jq -r .spec.ports[0].nodePort) \ 255 go test -v -count=1 ./src/server -parallel 1 -timeout $(TIMEOUT) $(RUN) 256 257 test-cmds: 258 go install -v ./src/testing/match 259 CGOENABLED=0 go test -v -count=1 ./src/server/cmd/pachctl/cmd 260 go test -v -count=1 ./src/server/pkg/deploy/cmds -timeout $(TIMEOUT) 261 go test -v -count=1 ./src/server/pfs/cmds -timeout $(TIMEOUT) 262 go test -v -count=1 ./src/server/pps/cmds -timeout $(TIMEOUT) 263 go test -v -count=1 ./src/server/config -timeout $(TIMEOUT) 264 @# TODO(msteffen) does this test leave auth active? If so it must run last 265 go test -v -count=1 ./src/server/auth/cmds -timeout $(TIMEOUT) 266 267 test-transaction: 268 go test -count=1 ./src/server/transaction/server/testing -timeout $(TIMEOUT) 269 270 test-client: 271 go test -count=1 -cover $$(go list ./src/client/...) 272 273 test-object-clients: 274 # The parallelism is lowered here because these tests run several pachd 275 # deployments in kubernetes which may contest resources. 276 go test -count=1 ./src/server/pkg/obj/testing -timeout $(TIMEOUT) -parallel=2 277 278 test-libs: 279 go test -v -count=1 ./src/client/pkg/grpcutil -timeout $(TIMEOUT) 280 go test -v -count=1 ./src/server/pkg/collection -timeout $(TIMEOUT) -vet=off 281 go test -v -count=1 ./src/server/pkg/hashtree -timeout $(TIMEOUT) 282 go test -v -count=1 ./src/server/pkg/cert -timeout $(TIMEOUT) 283 go test -v -count=1 ./src/server/pkg/localcache -timeout $(TIMEOUT) 284 go test -v -count=1 ./src/server/pkg/work -timeout $(TIMEOUT) 285 286 test-vault: 287 kill $$(cat /tmp/vault.pid) || true 288 ./src/plugin/vault/etc/start-vault.sh 289 ./src/plugin/vault/etc/pach-auth.sh --activate 290 ./src/plugin/vault/etc/setup-vault.sh 291 go test -v -count=1 ./src/plugin/vault -timeout $(TIMEOUT) 292 ./src/plugin/vault/etc/pach-auth.sh --delete-all 293 294 test-s3gateway-conformance: 295 @if [ -z $$CONFORMANCE_SCRIPT_PATH ]; then \ 296 echo "Missing environment variable 'CONFORMANCE_SCRIPT_PATH'"; \ 297 exit 1; \ 298 fi 299 $(CONFORMANCE_SCRIPT_PATH) --s3tests-config=etc/testing/s3gateway/s3tests.conf --ignore-config=etc/testing/s3gateway/ignore.conf --runs-dir=etc/testing/s3gateway/runs 300 301 test-s3gateway-integration: 302 @if [ -z $$INTEGRATION_SCRIPT_PATH ]; then \ 303 echo "Missing environment variable 'INTEGRATION_SCRIPT_PATH'"; \ 304 exit 1; \ 305 fi 306 $(INTEGRATION_SCRIPT_PATH) http://localhost:30600 --access-key=none --secret-key=none 307 308 test-s3gateway-unit: 309 go test -v -count=1 ./src/server/pfs/s3 -timeout $(TIMEOUT) 310 311 test-fuse: 312 CGOENABLED=0 go test -count=1 -cover $$(go list ./src/server/... | grep '/src/server/pfs/fuse') 313 314 test-local: 315 CGOENABLED=0 go test -count=1 -cover -short $$(go list ./src/server/... | grep -v '/src/server/pfs/fuse') -timeout $(TIMEOUT) 316 317 test-auth: 318 yes | $(PACHCTL) delete all 319 go test -v -count=1 ./src/server/auth/server/testing -timeout $(TIMEOUT) $(RUN) 320 321 test-admin: 322 go test -v -count=1 ./src/server/admin/server -timeout $(TIMEOUT) $(RUN) 323 324 test-enterprise: 325 go test -v -count=1 ./src/server/enterprise/server -timeout $(TIMEOUT) 326 327 test-tls: 328 ./etc/testing/test_tls.sh 329 330 test-worker: launch-stats test-worker-helper 331 332 test-worker-helper: 333 PROM_PORT=$$(kubectl --namespace=monitoring get svc/prometheus -o json | jq -r .spec.ports[0].nodePort) \ 334 go test -v -count=1 ./src/server/worker/ -timeout $(TIMEOUT) 335 336 clean: clean-launch clean-launch-kube 337 338 compatibility: 339 ./etc/build/compatibility.sh 340 341 clean-launch-kafka: 342 kubectl delete -f etc/kubernetes-kafka -R 343 344 launch-kafka: 345 kubectl apply -f etc/kubernetes-kafka -R 346 until timeout 10s ./etc/kube/check_ready.sh app=kafka kafka; do sleep 10; done 347 348 clean-launch-stats: 349 kubectl delete --filename etc/kubernetes-prometheus -R 350 351 launch-stats: 352 kubectl apply --filename etc/kubernetes-prometheus -R 353 354 clean-launch-monitoring: 355 kubectl delete --ignore-not-found -f ./etc/plugin/monitoring 356 357 launch-monitoring: 358 kubectl create -f ./etc/plugin/monitoring 359 @echo "Waiting for services to spin up ..." 360 until timeout 5s ./etc/kube/check_ready.sh k8s-app=heapster kube-system; do sleep 5; done 361 until timeout 5s ./etc/kube/check_ready.sh k8s-app=influxdb kube-system; do sleep 5; done 362 until timeout 5s ./etc/kube/check_ready.sh k8s-app=grafana kube-system; do sleep 5; done 363 @echo "All services up. Now port forwarding grafana to localhost:3000" 364 kubectl --namespace=kube-system port-forward `kubectl --namespace=kube-system get pods -l k8s-app=grafana -o json | jq '.items[0].metadata.name' -r` 3000:3000 & 365 366 clean-launch-logging: check-kubectl check-kubectl-connection 367 git submodule update --init 368 cd etc/plugin/logging && ./undeploy.sh 369 370 launch-logging: check-kubectl check-kubectl-connection 371 @# Creates Fluentd / Elasticsearch / Kibana services for logging under --namespace=monitoring 372 git submodule update --init 373 cd etc/plugin/logging && ./deploy.sh 374 kubectl --namespace=monitoring port-forward `kubectl --namespace=monitoring get pods -l k8s-app=kibana-logging -o json | jq '.items[0].metadata.name' -r` 35601:5601 & 375 376 launch-loki: 377 helm repo remove loki || true 378 helm repo add loki https://grafana.github.io/loki/charts 379 helm repo update 380 helm upgrade --install loki loki/loki-stack 381 until timeout 1s ./etc/kube/check_ready.sh release=loki; do sleep 1; done 382 383 clean-launch-loki: 384 helm uninstall loki 385 386 launch-dex: 387 helm repo add stable https://charts.helm.sh/stable 388 helm repo update 389 helm upgrade --install dex stable/dex -f etc/testing/auth/dex.yaml 390 until timeout 1s bash -x ./etc/kube/check_ready.sh 'app.kubernetes.io/name=dex'; do sleep 1; done 391 392 clean-launch-dex: 393 helm uninstall dex 394 395 logs: check-kubectl 396 kubectl $(KUBECTLFLAGS) get pod -l app=pachd | sed '1d' | cut -f1 -d ' ' | xargs -n 1 -I pod sh -c 'echo pod && kubectl $(KUBECTLFLAGS) logs pod' 397 398 follow-logs: check-kubectl 399 kubectl $(KUBECTLFLAGS) get pod -l app=pachd | sed '1d' | cut -f1 -d ' ' | xargs -n 1 -I pod sh -c 'echo pod && kubectl $(KUBECTLFLAGS) logs -f pod' 400 401 google-cluster-manifest: 402 @$(PACHCTL) deploy --dry-run google $(BUCKET_NAME) $(STORAGE_NAME) $(STORAGE_SIZE) 403 404 google-cluster: 405 gcloud container clusters create $(CLUSTER_NAME) --scopes storage-rw --machine-type $(CLUSTER_MACHINE_TYPE) --num-nodes $(CLUSTER_SIZE) 406 gcloud config set container/cluster $(CLUSTER_NAME) 407 gcloud container clusters get-credentials $(CLUSTER_NAME) 408 gcloud components install kubectl 409 -gcloud compute firewall-rules create pachd --allow=tcp:30650 410 gsutil mb gs://$(BUCKET_NAME) # for PFS 411 gcloud compute disks create --size=$(STORAGE_SIZE)GB $(STORAGE_NAME) # for PPS 412 413 clean-google-cluster: 414 gcloud container clusters delete $(CLUSTER_NAME) 415 gcloud compute firewall-rules delete pachd 416 gsutil -m rm -r gs://$(BUCKET_NAME) 417 gcloud compute disks delete $(STORAGE_NAME) 418 419 amazon-cluster-manifest: install 420 @$(PACHCTL) deploy --dry-run amazon $(BUCKET_NAME) $(AWS_ID) $(AWS_KEY) $(AWS_TOKEN) $(AWS_REGION) $(STORAGE_NAME) $(STORAGE_SIZE) 421 422 amazon-cluster: 423 aws s3api create-bucket --bucket $(BUCKET_NAME) --region $(AWS_REGION) 424 aws ec2 create-volume --size $(STORAGE_SIZE) --region $(AWS_REGION) --availability-zone $(AWS_AVAILABILITY_ZONE) --volume-type gp2 425 426 amazon-clean-cluster: 427 aws s3api delete-bucket --bucket $(BUCKET_NAME) --region $(AWS_REGION) 428 aws ec2 detach-volume --force --volume-id $(STORAGE_NAME) 429 sleep 20 430 aws ec2 delete-volume --volume-id $(STORAGE_NAME) 431 432 amazon-clean-launch: clean-launch 433 kubectl $(KUBECTLFLAGS) delete --ignore-not-found secrets amazon-secret 434 435 amazon-clean: 436 @while :; \ 437 do if echo "The following script will delete your AWS bucket and volume. The action cannot be undone. Do you want to proceed? (Y/n)";read REPLY; then \ 438 case $$REPLY in Y|y) make amazon-clean-launch;make amazon-clean-cluster;break;; \ 439 N|n) echo "The amazon clean process has been cancelled by user!";break;; \ 440 *) echo "input parameter error, please input again ";continue;;esac; \ 441 fi;done; 442 443 microsoft-cluster-manifest: 444 @$(PACHCTL) deploy --dry-run microsoft $(CONTAINER_NAME) $(AZURE_STORAGE_NAME) $(AZURE_STORAGE_KEY) $(VHD_URI) $(STORAGE_SIZE) 445 446 microsoft-cluster: 447 azure group create --name $(AZURE_RESOURCE_GROUP) --location $(AZURE_LOCATION) 448 azure storage account create $(AZURE_STORAGE_NAME) --location $(AZURE_LOCATION) --resource-group $(AZURE_RESOURCE_GROUP) --sku-name LRS --kind Storage 449 450 clean-microsoft-cluster: 451 azure group delete $(AZURE_RESOURCE_GROUP) -q 452 453 lint: 454 etc/testing/lint.sh 455 456 spellcheck: 457 @mdspell doc/*.md doc/**/*.md *.md --en-us --ignore-numbers --ignore-acronyms --report --no-suggestions 458 459 .PHONY: \ 460 install \ 461 install-clean \ 462 install-doc \ 463 doc-custom \ 464 doc \ 465 point-release \ 466 release-candidate \ 467 custom-release \ 468 release \ 469 release-helper \ 470 release-docker-images \ 471 release-pachctl \ 472 docker-build \ 473 docker-build-pipeline-build \ 474 docker-build-proto \ 475 docker-build-netcat \ 476 docker-build-gpu \ 477 docker-build-kafka \ 478 docker-build-spout-test \ 479 docker-push-gpu \ 480 docker-push-gpu-dev \ 481 docker-gpu \ 482 docker-gpu-dev \ 483 docker-build-test-entrypoint \ 484 docker-tag \ 485 docker-push \ 486 docker-push-pipeline-build \ 487 check-kubectl \ 488 check-kubectl-connection \ 489 launch-kube \ 490 launch-dev-vm \ 491 launch-release-vm \ 492 clean-launch-kube \ 493 launch \ 494 launch-dev \ 495 clean-launch \ 496 clean-launch-dev \ 497 full-clean-launch \ 498 test-proto-static \ 499 test-deploy-manifests \ 500 regenerate-test-deploy-manifests \ 501 proto \ 502 test \ 503 enterprise-code-checkin-test \ 504 test-pfs-server \ 505 test-pfs-storage \ 506 test-pps \ 507 test-cmds \ 508 test-transaction \ 509 test-client \ 510 test-libs \ 511 test-vault \ 512 test-s3gateway-conformance \ 513 test-s3gateway-integration \ 514 test-s3gateway-unit \ 515 test-fuse \ 516 test-local \ 517 test-auth \ 518 test-admin \ 519 test-enterprise \ 520 test-tls \ 521 test-worker \ 522 test-worker-helper \ 523 clean \ 524 compatibility \ 525 clean-launch-kafka \ 526 launch-kafka \ 527 clean-launch-stats \ 528 launch-stats \ 529 clean-launch-monitoring \ 530 launch-monitoring \ 531 clean-launch-logging \ 532 launch-logging \ 533 launch-loki \ 534 clean-launch-loki \ 535 launch-dex \ 536 clean-launch-dex \ 537 logs \ 538 follow-logs \ 539 google-cluster-manifest \ 540 google-cluster \ 541 clean-google-cluster \ 542 amazon-cluster-manifest \ 543 amazon-cluster \ 544 amazon-clean-cluster \ 545 amazon-clean-launch \ 546 amazon-clean \ 547 microsoft-cluster-manifest \ 548 microsoft-cluster \ 549 clean-microsoft-cluster \ 550 lint \ 551 spellcheck