commit | d790a2e65ddb3b340322b1f2b410c91047f14c39 | [log] [tgz] |
---|---|---|
author | Alexander Rakoczy <alex@golang.org> | Fri Jul 23 14:33:46 2021 -0400 |
committer | Alexander Rakoczy <alex@golang.org> | Fri Jul 23 20:20:13 2021 +0000 |
tree | 62d5222df9b8cf684b75b9c755de5e92e4570e7f | |
parent | 541c3c365c56794719985fcb48f580a41cf64f18 [diff] |
all: fix build timeouts for std dependent snippets This change addresses two issues that were causing the first build of a snippet to be unusually slow. One is to build the standard library with faketime, and CGO_ENABLED=0 in our final container, which is more similar to our actual build environment. This fixes staleness issues from std. Another is to pre-vet std with --tags=faketime. The first vet of a snippet that contained a significant std package such as net/http would take 5-6 seconds, and frequently longer than our maxBuildTime of 10s. Finally, execute vet with the correct tags when a user is vetting their snippet. Fixes golang/go#44822 Change-Id: Ie5674bb6aa5f79694bffc6902c46297ac553419a Reviewed-on: https://go-review.googlesource.com/c/playground/+/337010 Trust: Alexander Rakoczy <alex@golang.org> Run-TryBot: Alexander Rakoczy <alex@golang.org> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Heschi Kreinick <heschi@google.com>
This subrepository holds the source for the Go playground: https://play.golang.org/
# build the image docker build -t golang/playground .
docker run --name=play --rm -p 8080:8080 golang/playground & # run some Go code cat /path/to/code.go | go run client.go | curl -s --upload-file - localhost:8080/compile
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.yaml, deploy/playground_trigger.yaml, and deploy/deploy.json.
Changes to the trigger configuration can be made to the YAML files, or in the GCP UI, which should be kept in sync using the push-cloudbuild-trigger
and pull-cloudbuild-trigger
make targets.
The Cloud Build configuration will always build and deploy with the latest supported release of Go.
gcloud builds submit --config deploy/deploy.json .
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
To submit changes to this repository, see https://golang.org/doc/contribute.html.