playground: add a goprevplay service, hosting the previous go release
Change-Id: Ibdd5f45062960cd09965df63c12cde394dca1f8b
Reviewed-on: https://go-review.googlesource.com/c/playground/+/367814
Trust: Robert Findley <rfindley@google.com>
Run-TryBot: Robert Findley <rfindley@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Alexander Rakoczy <alex@golang.org>
diff --git a/app.goprev.yaml b/app.goprev.yaml
new file mode 100644
index 0000000..2b19ccf
--- /dev/null
+++ b/app.goprev.yaml
@@ -0,0 +1,22 @@
+service: golast-play
+runtime: custom
+env: flex
+
+network:
+ name: projects/golang-org/global/networks/golang
+
+resources:
+ cpu: 2
+ memory_gb: 2
+
+automatic_scaling:
+ min_num_instances: 5
+
+readiness_check:
+ path: "/_ah/health"
+ check_interval_sec: 10
+
+env_variables:
+ MEMCACHED_ADDR: 'memcached-play-golang:11211'
+ GOTIP: "true"
+
diff --git a/cmd/latestgo/main.go b/cmd/latestgo/main.go
index 6e8a690..2fe6e3f 100644
--- a/cmd/latestgo/main.go
+++ b/cmd/latestgo/main.go
@@ -7,6 +7,7 @@
import (
"context"
+ "flag"
"fmt"
"log"
@@ -14,9 +15,13 @@
grpc "grpc.go4.org"
)
+var prev = flag.Bool("prev", false, "whether to query the previous Go release, rather than the last (e.g. 1.17 versus 1.18)")
+
const maintnerURI = "https://maintner.golang.org"
func main() {
+ flag.Parse()
+
conn, err := grpc.NewClient(nil, maintnerURI)
if err != nil {
log.Fatalf("error creating grpc client for %q: %v", maintnerURI, err)
@@ -27,6 +32,10 @@
if err != nil {
log.Fatalln(err)
}
+ idx := 0
+ if *prev {
+ idx = 1
+ }
// On success, the maintner API always returns at least two releases.
- fmt.Print(resp.GetReleases()[0].GetTagName())
+ fmt.Print(resp.GetReleases()[idx].GetTagName())
}
diff --git a/deploy/deploy_goprev.json b/deploy/deploy_goprev.json
new file mode 100644
index 0000000..31ba056
--- /dev/null
+++ b/deploy/deploy_goprev.json
@@ -0,0 +1,41 @@
+{
+ "steps": [
+ {
+ "name": "golang",
+ "env": [
+ "GO111MODULE=on"
+ ],
+ "entrypoint": "bash",
+ "args": [
+ "-c",
+ "go run golang.org/x/playground/cmd/latestgo -prev > /workspace/goversion; echo GO_VERSION=`cat /workspace/goversion`"
+ ]
+ },
+ {
+ "name": "gcr.io/cloud-builders/docker",
+ "entrypoint": "bash",
+ "args": [
+ "-c",
+ "docker build --build-arg GO_VERSION=`cat /workspace/goversion` -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.goprev.yaml",
+ "--project=$PROJECT_ID",
+ "--image-url=gcr.io/$PROJECT_ID/playground-goprev:latest"
+ ]
+ }
+ ],
+ "timeout": "3600s"
+}