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. AUTHORS
  2. CONTRIBUTING.md
  3. CONTRIBUTORS
  4. Dockerfile
  5. LICENSE
  6. Makefile
  7. PATENTS
  8. README.md
  9. app.yaml
  10. cache.go
  11. client.go
  12. cloudbuild_trigger.json
  13. codereview.cfg
  14. edit.go
  15. edit.html
  16. enable-fake-time.patch
  17. fake_fs.lst
  18. fmt.go
  19. fmt_test.go
  20. go.mod
  21. go.sum
  22. logger.go
  23. main.go
  24. play.go
  25. play_test.go
  26. sandbox.go
  27. server.go
  28. server_test.go
  29. share.go
  30. static/
  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.