playground: differentiate cache key based on client JS version

Don't share a cache namespace between clients wanting vet (new) and
not wanting vet (old).

This was causing issues like:

   https://github.com/golang/go/issues/31944#issuecomment-493094932

And unrelated: a README deploy fix, broken from my earlier Makefile
cleanup.

Change-Id: Ibed7f91c739ac65e33ee8d73eed066a7a81f938c
Reviewed-on: https://go-review.googlesource.com/c/playground/+/177617
Reviewed-by: Emmanuel Odeke <emm.odeke@gmail.com>
Reviewed-by: Andrew Bonventre <andybons@golang.org>
2 files changed
tree: c7996f4f027b80c89589c20e16eb065b37c51e36
  1. cmd/
  2. deploy/
  3. static/
  4. app.yaml
  5. AUTHORS
  6. cache.go
  7. client.go
  8. codereview.cfg
  9. CONTRIBUTING.md
  10. CONTRIBUTORS
  11. Dockerfile
  12. edit.go
  13. edit.html
  14. enable-fake-time.patch
  15. fake_fs.lst
  16. fmt.go
  17. fmt_test.go
  18. go.mod
  19. go.sum
  20. LICENSE
  21. logger.go
  22. main.go
  23. Makefile
  24. PATENTS
  25. play.go
  26. play_test.go
  27. README.md
  28. sandbox.go
  29. server.go
  30. server_test.go
  31. share.go
  32. store.go
  33. tests.go
  34. txtar.go
  35. txtar_test.go
  36. 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

Deployment Triggers

Playground releases automatically triggered when new Go repository tags are pushed to GitHub, or when master is pushed on the playground repository.

For details, see deploy/go_trigger.json, deploy/playground_trigger.json, and deploy/deploy.json.

After making changes to trigger configuration, update configuration by running the following Make target:

make update-cloudbuild-trigger

Deploy via Cloud Build

The Cloud Build configuration will always build and deploy with the latest supported release of Go.

gcloud builds submit --config deploy/deploy.json .

Deploy via gcloud app deploy

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 golang/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

Contributing

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