playground: trigger playground releases from Go releases

This change includes configuration to build and deploy new releases of
the Go playground when a new tag of Go is released to Github. The
trigger is configured to filter tags to new, non-rc, non-beta releases
of Go.

This first commit simply implements releasing the current version of Go
configured for the playground. Changes to the build process to ensure
we're releasing the latest version of Go will be in a follow-up commit.

Updates golang/go#32606

Change-Id: I3b518fd3f02efcd8f510fd865f3370bea19f0e9b
Reviewed-on: https://go-review.googlesource.com/c/playground/+/183037
Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
3 files changed
tree: 067c054f9c7d187f91f90906b9ba9bb21be7c4c0
  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.