blog: add analytics HTML and deploy instructions

When deployed with App Engine on blog.golang.org,
insert analytics HTML at the beginning of <head>.

Add deploy instructions to the README.

Also update to the App Engine Go 1.12 runtime.

Change-Id: Icf0919fd22d80cb8cb765845acd1d72f85f11fa1
Reviewed-on: https://go-review.googlesource.com/c/blog/+/198337
Run-TryBot: Dmitri Shuralyov <dmitshur@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
diff --git a/README.md b/README.md
index 0845e4e..e98ea0d 100644
--- a/README.md
+++ b/README.md
@@ -38,3 +38,21 @@
 The main issue tracker for the blog is located at
 https://github.com/golang/go/issues. Prefix your issue with "x/blog:" in the
 subject line, so it is easy to find.
+
+## Deploying
+
+1.	To deploy blog.golang.org, run:
+
+	```
+	GO111MODULE=on gcloud --project=golang-org app deploy --no-promote app.yaml
+	```
+
+	This will create a new version, which can be viewed within the
+	[golang-org GCP project](https://console.cloud.google.com/appengine/versions?project=golang-org&serviceId=blog).
+
+2.	Check that the deployed version looks OK (click the version link in GCP).
+
+3.	If all is well, click "Migrate Traffic" to move 100% of the blog.golang.org
+	traffic to the new version.
+
+4.	You're done.
diff --git a/app.yaml b/app.yaml
index 1f250f6..9e17b15 100644
--- a/app.yaml
+++ b/app.yaml
@@ -1,8 +1,17 @@
 service: blog
-runtime: go111
+runtime: go112
 
 env_variables:
   GOLANGORG_CHECK_COUNTRY: true
+  BLOG_ANALYTICS: |
+    <script async src="https://www.googletagmanager.com/gtag/js?id=UA-11222381-3"></script>
+    <script>
+    window.dataLayer = window.dataLayer || [];
+    function gtag(){dataLayer.push(arguments);}
+    gtag("js", new Date());
+    gtag("config", "UA-11222381-3");
+    gtag("config", "UA-49880327-6");
+    </script>
 
 default_expiration: "7d"
 
diff --git a/appengine.go b/appengine.go
index 3b65bc7..dcf19a6 100644
--- a/appengine.go
+++ b/appengine.go
@@ -7,6 +7,7 @@
 package main
 
 import (
+	"html/template"
 	"log"
 	"net/http"
 	"os"
@@ -17,6 +18,7 @@
 func gaeMain() {
 	config.ContentPath = "content/"
 	config.TemplatePath = "template/"
+	config.AnalyticsHTML = template.HTML(os.Getenv("BLOG_ANALYTICS"))
 	s, err := blog.NewServer(config)
 	if err != nil {
 		log.Fatalln(err)
diff --git a/go.mod b/go.mod
index a8d34d6..e25bace 100644
--- a/go.mod
+++ b/go.mod
@@ -6,7 +6,7 @@
 	github.com/gorilla/context v1.1.1
 	golang.org/x/net v0.0.0-20190620200207-3b0461eec859
 	golang.org/x/text v0.3.2
-	golang.org/x/tools v0.0.0-20190815144358-9065c182e3b6
+	golang.org/x/tools v0.0.0-20191002161851-3769738f410b
 	golang.org/x/website v0.0.0-20190903192346-00e97558e113
 	gopkg.in/tomb.v2 v2.0.0-20161208151619-d5d1b5820637
 )
diff --git a/go.sum b/go.sum
index 0ed7c71..dfc771d 100644
--- a/go.sum
+++ b/go.sum
@@ -64,8 +64,8 @@
 golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
 golang.org/x/tools v0.0.0-20190516015132-d1a3278ee749 h1:L1RW4r06KGFktOvNizsWNBWHn4V2I/p9SNRLhNn6hzM=
 golang.org/x/tools v0.0.0-20190516015132-d1a3278ee749/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q=
-golang.org/x/tools v0.0.0-20190815144358-9065c182e3b6 h1:+1pAC+Ra+xeEWKXKBrkf+ctlljiZ8wgLAz8ZSXOjU6c=
-golang.org/x/tools v0.0.0-20190815144358-9065c182e3b6/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20191002161851-3769738f410b h1:H3xgcuTEMnlg2n7BT6mWCOGuMchcPTaZ/uCC9GuV05M=
+golang.org/x/tools v0.0.0-20191002161851-3769738f410b/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
 golang.org/x/website v0.0.0-20190903192346-00e97558e113 h1:uwiB8M+mk9E2X0p+Pr1KlfnA1eWSheaeYkVmsesWLKg=
 golang.org/x/website v0.0.0-20190903192346-00e97558e113/go.mod h1:xGSACM0vBhAtMi/g1gCnV3jnZ7fON45PUeLicIqMMQo=
 golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
diff --git a/template/root.tmpl b/template/root.tmpl
index 9e6bc1f..8ef5424 100644
--- a/template/root.tmpl
+++ b/template/root.tmpl
@@ -3,7 +3,7 @@
 {{define "root"}}
 <!DOCTYPE html>
 <html lang="en">
-<meta charset="utf-8">
+{{.AnalyticsHTML}}<meta charset="utf-8">
 <meta name="viewport" content="width=device-width, initial-scale=1">
 <meta name="theme-color" content="#00ADD8">
 <meta name="description" content="Go is an open source programming language that makes it easy to build simple, reliable, and efficient software.">