playground: push image in trigger before deploying

Removes post-build trigger step of pushing image, and adds a push step
step before AppEngine deployment. This ensures that the image we just
built is pushed before asking AppEngine to deploy it.

This is documented at:
https://cloud.google.com/cloud-build/docs/configuring-builds/build-test-deploy-artifacts

Cloud Build is authorized to push images to gcr.io. This change was
tested by submitting a build with this configuration without the
deployment step.

Updates golang/go#32606

Change-Id: I4e7cc242566378e4ca6d52244fb81bf410e79314
Reviewed-on: https://go-review.googlesource.com/c/playground/+/185339
Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
1 file changed
tree: f9c1a50b76db419e62e77b8a5cbaba59dd8dbcd4
  1. static/
  2. app.yaml
  3. AUTHORS
  4. cache.go
  5. client.go
  6. cloudbuild_trigger.json
  7. codereview.cfg
  8. CONTRIBUTING.md
  9. CONTRIBUTORS
  10. Dockerfile
  11. edit.go
  12. edit.html
  13. enable-fake-time.patch
  14. fake_fs.lst
  15. fmt.go
  16. fmt_test.go
  17. go.mod
  18. go.sum
  19. LICENSE
  20. logger.go
  21. main.go
  22. Makefile
  23. PATENTS
  24. play.go
  25. play_test.go
  26. README.md
  27. sandbox.go
  28. server.go
  29. server_test.go
  30. share.go
  31. store.go
  32. tests.go
  33. txtar.go
  34. txtar_test.go
  35. vet.go
README.md

playground

This subrepository holds the source for the Go playground: https://play.golang.org/

Building

# build the image
docker build -t playground .

Running

docker run --name=play --rm -d -p 8080:8080 playground
# run some Go code
cat /path/to/code.go | go run client.go | curl -s --upload-file - localhost:8080/compile

Deployment

Building the playground Docker container takes more than the default 10 minute time limit of cloud build, so increase its timeout first (note, app/cloud_build_timeout is a global configuration value):

gcloud config set app/cloud_build_timeout 1200  # 20 mins

Alternatively, to avoid Cloud Build and build locally:

make docker
docker tag playground:latest gcr.io/golang-org/playground:latest
docker push gcr.io/golang-org/playground:latest
gcloud --project=golang-org --account=you@google.com app deploy app.yaml --image-url=gcr.io/golang-org/playground:latest

Then:

gcloud --project=golang-org --account=you@google.com app deploy app.yaml

Deployment Triggers

Playground releases are also triggered when new tags are pushed to Github. The Cloud Build trigger configuration is defined in cloudbuild_trigger.json.

Triggers can be updated by running the following Make target:

make update-cloudbuild-trigger

Contributing

To submit changes to this repository, see https://golang.org/doc/contribute.html.