Makefile 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. # Copyright 2018 The Go Authors. All rights reserved.
  2. # Use of this source code is governed by a BSD-style
  3. # license that can be found in the LICENSE file.
  4. MUTABLE_VERSION ?= latest
  5. VERSION ?= $(shell git rev-parse --short HEAD)
  6. IMAGE_STAGING := gcr.io/go-dashboard-dev/h2demo
  7. IMAGE_PROD := gcr.io/symbolic-datum-552/h2demo
  8. DOCKER_IMAGE_build0=build0/h2demo:latest
  9. DOCKER_CTR_build0=h2demo-build0
  10. build0: *.go Dockerfile.0
  11. docker build --force-rm -f Dockerfile.0 --tag=$(DOCKER_IMAGE_build0) ../..
  12. h2demo: build0
  13. docker create --name $(DOCKER_CTR_build0) $(DOCKER_IMAGE_build0)
  14. docker cp $(DOCKER_CTR_build0):/go/bin/$@ $@
  15. docker rm $(DOCKER_CTR_build0)
  16. ca-certificates.crt:
  17. docker create --name $(DOCKER_CTR_build0) $(DOCKER_IMAGE_build0)
  18. docker cp $(DOCKER_CTR_build0):/etc/ssl/certs/$@ $@
  19. docker rm $(DOCKER_CTR_build0)
  20. update-deps:
  21. go install golang.org/x/build/cmd/gitlock
  22. gitlock --update=Dockerfile.0 --ignore=golang.org/x/net --tags=h2demo golang.org/x/net/http2/h2demo
  23. docker-prod: Dockerfile h2demo ca-certificates.crt
  24. docker build --force-rm --tag=$(IMAGE_PROD):$(VERSION) .
  25. docker tag $(IMAGE_PROD):$(VERSION) $(IMAGE_PROD):$(MUTABLE_VERSION)
  26. docker-staging: Dockerfile h2demo ca-certificates.crt
  27. docker build --force-rm --tag=$(IMAGE_STAGING):$(VERSION) .
  28. docker tag $(IMAGE_STAGING):$(VERSION) $(IMAGE_STAGING):$(MUTABLE_VERSION)
  29. push-prod: docker-prod
  30. gcloud docker -- push $(IMAGE_PROD):$(MUTABLE_VERSION)
  31. gcloud docker -- push $(IMAGE_PROD):$(VERSION)
  32. push-staging: docker-staging
  33. gcloud docker -- push $(IMAGE_STAGING):$(MUTABLE_VERSION)
  34. gcloud docker -- push $(IMAGE_STAGING):$(VERSION)
  35. deploy-prod: push-prod
  36. kubectl set image deployment/h2demo-deployment h2demo=$(IMAGE_PROD):$(VERSION)
  37. deploy-staging: push-staging
  38. kubectl set image deployment/h2demo-deployment h2demo=$(IMAGE_STAGING):$(VERSION)
  39. .PHONY: clean
  40. clean:
  41. $(RM) h2demo
  42. $(RM) ca-certificates.crt
  43. FORCE: