зеркало из https://github.com/golang/playground.git
playground: trigger playground deploys from master
This change adds configuration to trigger a playground deploy when master is updated. Configuration for deploying a build with the latest release of go is shared in deploy/deploy.json. Cloud Build configurations have been moved to the deploy directory. In order to help share configurations, the build triggers will create a separate deployment build asynchronously. The README is updated to help describe common deployment scenarios. Tested deploy steps with README instructions. Updates golang/go#32606 Change-Id: I6eced05d3aa2904135e95e8b40e5a30a5b0b0488 Reviewed-on: https://go-review.googlesource.com/c/playground/+/185341 Reviewed-by: Dmitri Shuralyov <dmitshur@golang.org>
This commit is contained in:
Родитель
18ef8a7496
Коммит
01ce4a0aa7
13
Makefile
13
Makefile
|
@ -1,5 +1,7 @@
|
|||
CLOUDBUILD_TRIGGER_ID := $(shell jq -r .id cloudbuild_trigger.json)
|
||||
CLOUDBUILD_TRIGGER_JSON := cloudbuild_trigger.json
|
||||
CLOUDBUILD_PLAYGROUND_TRIGGER_JSON := deploy/playground_trigger.json
|
||||
CLOUDBUILD_PLAYGROUND_TRIGGER_ID := $(shell jq -r .id ${CLOUDBUILD_PLAYGROUND_TRIGGER_JSON})
|
||||
CLOUDBUILD_GO_TRIGGER_JSON := deploy/go_trigger.json
|
||||
CLOUDBUILD_GO_TRIGGER_ID := $(shell jq -r .id ${CLOUDBUILD_GO_TRIGGER_JSON})
|
||||
GCLOUD_ACCESS_TOKEN := $(shell gcloud auth print-access-token)
|
||||
|
||||
.PHONY: docker test update-cloudbuild-trigger
|
||||
|
@ -17,5 +19,8 @@ test:
|
|||
update-cloudbuild-trigger:
|
||||
# The gcloud CLI doesn't yet support updating a trigger.
|
||||
curl -H "Authorization: Bearer $(GCLOUD_ACCESS_TOKEN)" -H "Content-Type: application/json" \
|
||||
-d @$(CLOUDBUILD_TRIGGER_JSON) \
|
||||
-X PATCH https://cloudbuild.googleapis.com/v1/projects/golang-org/triggers/$(CLOUDBUILD_TRIGGER_ID)
|
||||
-d @$(CLOUDBUILD_GO_TRIGGER_JSON) \
|
||||
-X PATCH https://cloudbuild.googleapis.com/v1/projects/golang-org/triggers/$(CLOUDBUILD_GO_TRIGGER_ID)
|
||||
curl -H "Authorization: Bearer $(GCLOUD_ACCESS_TOKEN)" -H "Content-Type: application/json" \
|
||||
-d @$(CLOUDBUILD_PLAYGROUND_TRIGGER_JSON) \
|
||||
-X PATCH https://cloudbuild.googleapis.com/v1/projects/golang-org/triggers/$(CLOUDBUILD_PLAYGROUND_TRIGGER_ID)
|
||||
|
|
36
README.md
36
README.md
|
@ -20,6 +20,31 @@ cat /path/to/code.go | go run client.go | curl -s --upload-file - localhost:8080
|
|||
|
||||
## 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/go_trigger.json),
|
||||
[deploy/playground_trigger.json](deploy/playground_trigger.json),
|
||||
and [deploy/deploy.json](deploy/deploy.json).
|
||||
|
||||
After making changes to trigger configuration, update configuration by running the following Make target:
|
||||
|
||||
```bash
|
||||
make update-cloudbuild-trigger
|
||||
```
|
||||
|
||||
### Deploy via Cloud Build
|
||||
|
||||
The Cloud Build configuration will always build and deploy with the latest supported release of Go.
|
||||
|
||||
```bash
|
||||
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):
|
||||
|
||||
|
@ -42,17 +67,6 @@ 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](cloudbuild_trigger.json).
|
||||
|
||||
Triggers can be updated by running the following Make target:
|
||||
|
||||
```bash
|
||||
make update-cloudbuild-trigger
|
||||
```
|
||||
|
||||
## Contributing
|
||||
|
||||
To submit changes to this repository, see
|
||||
|
|
|
@ -1,68 +0,0 @@
|
|||
{
|
||||
"id": "5a2c9e25-a71a-4adf-a785-76c3eca2ac8a",
|
||||
"description": "Go repository release trigger for x/playground",
|
||||
"github": {
|
||||
"name": "go",
|
||||
"owner": "golang",
|
||||
"push": {
|
||||
"tag": "^go[0-9](\\.[0-9]+)+$"
|
||||
}
|
||||
},
|
||||
"build": {
|
||||
"steps": [
|
||||
{
|
||||
"name": "gcr.io/cloud-builders/git",
|
||||
"args": [
|
||||
"clone",
|
||||
"--depth",
|
||||
"1",
|
||||
"https://go.googlesource.com/playground"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "golang",
|
||||
"entrypoint": "bash",
|
||||
"args": [
|
||||
"-c",
|
||||
"go get golang.org/x/build/maintner/maintq && cp /go/bin/maintq /workspace/maintq"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "debian:stretch",
|
||||
"entrypoint": "bash",
|
||||
"args": [
|
||||
"-c",
|
||||
"apt-get update && apt-get install -y ca-certificates && ./maintq list-releases | head -n 1 | sed -re 's/^.*tag_name:\"(go[0-9](\\.[0-9]+)+)\".*$/\\1/g' > /workspace/latestgo"
|
||||
]
|
||||
},
|
||||
{
|
||||
"dir": "playground",
|
||||
"name": "gcr.io/cloud-builders/docker",
|
||||
"entrypoint": "bash",
|
||||
"args": [
|
||||
"-c",
|
||||
"docker build --build-arg GO_VERSION=`cat /workspace/latestgo` -t gcr.io/$PROJECT_ID/playground ."
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "gcr.io/cloud-builders/docker",
|
||||
"args": [
|
||||
"push",
|
||||
"gcr.io/$PROJECT_ID/playground"
|
||||
]
|
||||
},
|
||||
{
|
||||
"dir": "playground",
|
||||
"name": "gcr.io/cloud-builders/gcloud",
|
||||
"args": [
|
||||
"app",
|
||||
"deploy",
|
||||
"app.yaml",
|
||||
"--project=$PROJECT_ID",
|
||||
"--image-url=gcr.io/$PROJECT_ID/playground:latest"
|
||||
]
|
||||
}
|
||||
],
|
||||
"timeout": "1800s"
|
||||
}
|
||||
}
|
|
@ -0,0 +1,46 @@
|
|||
{
|
||||
"steps": [
|
||||
{
|
||||
"name": "golang",
|
||||
"entrypoint": "bash",
|
||||
"args": [
|
||||
"-c",
|
||||
"cd go && go get golang.org/x/build/maintner/maintq && cp /go/bin/maintq /workspace/maintq"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "debian:stretch",
|
||||
"entrypoint": "bash",
|
||||
"args": [
|
||||
"-c",
|
||||
"apt-get update && apt-get install -y ca-certificates && ./maintq list-releases | head -n 1 | sed -re 's/^.*tag_name:\"(go[0-9](\\.[0-9]+)+)\".*$/\\1/g' > /workspace/latestgo"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "gcr.io/cloud-builders/docker",
|
||||
"entrypoint": "bash",
|
||||
"args": [
|
||||
"-c",
|
||||
"docker build --build-arg GO_VERSION=`cat /workspace/latestgo` -t gcr.io/$PROJECT_ID/playground ."
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "gcr.io/cloud-builders/docker",
|
||||
"args": [
|
||||
"push",
|
||||
"gcr.io/$PROJECT_ID/playground"
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "gcr.io/cloud-builders/gcloud",
|
||||
"args": [
|
||||
"app",
|
||||
"deploy",
|
||||
"app.yaml",
|
||||
"--project=$PROJECT_ID",
|
||||
"--image-url=gcr.io/$PROJECT_ID/playground:latest"
|
||||
]
|
||||
}
|
||||
],
|
||||
"timeout": "1800s"
|
||||
}
|
|
@ -0,0 +1,36 @@
|
|||
{
|
||||
"id": "5a2c9e25-a71a-4adf-a785-76c3eca2ac8a",
|
||||
"description": "Go repository release trigger for x/playground",
|
||||
"github": {
|
||||
"name": "go",
|
||||
"owner": "golang",
|
||||
"push": {
|
||||
"tag": "^go[0-9](\\.[0-9]+)+$"
|
||||
}
|
||||
},
|
||||
"build": {
|
||||
"steps": [
|
||||
{
|
||||
"name": "gcr.io/cloud-builders/git",
|
||||
"args": [
|
||||
"clone",
|
||||
"--depth",
|
||||
"1",
|
||||
"https://go.googlesource.com/playground"
|
||||
]
|
||||
},
|
||||
{
|
||||
"dir": "playground",
|
||||
"name": "gcr.io/cloud-builders/gcloud",
|
||||
"args": [
|
||||
"builds",
|
||||
"submit",
|
||||
"--async",
|
||||
"--config",
|
||||
"deploy/deploy.json",
|
||||
"."
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
|
@ -0,0 +1,12 @@
|
|||
{
|
||||
"id": "cb46eb75-8665-4365-8e93-b8f7bfbd4807",
|
||||
"description": "Playground repository release trigger for x/playground",
|
||||
"github": {
|
||||
"name": "playground",
|
||||
"owner": "golang",
|
||||
"push": {
|
||||
"branch": "^master$"
|
||||
}
|
||||
},
|
||||
"filename": "deploy/deploy.json"
|
||||
}
|
Загрузка…
Ссылка в новой задаче