Implement cloud_build_status metric (#823)
This metric continuously monitors Cloud Build builds via Cloud Pub/Sub and records their results.
Whenever the metric's Collect() method is invoked, the most recent unprocessed results will be returned.
The metric also supports the Stackdriver publisher, which allows us to use Stackdriver alerting in the future.
It uses one metric type per source (=repo + branch), and publishes a simple boolean (true = build success).
diff --git a/metrics/main.go b/metrics/main.go
index 7e92489..a9d6798 100644
--- a/metrics/main.go
+++ b/metrics/main.go
@@ -1,6 +1,7 @@
package main
import (
+ "context"
"flag"
"fmt"
"log"
@@ -130,6 +131,13 @@
zombieInstances := metrics.CreateZombieInstances(computeClient, settings.CloudProjects, bk, settings.BuildkiteOrgs, minutes(3))
srv.AddMetric(zombieInstances, minutes(5), defaultPublisher)
+ ctx := context.Background()
+ cloudBuildStatus, err := metrics.CreateCloudBuildStatus(ctx, settings.CloudBuildProject, settings.CloudBuildSubscription)
+ if err != nil {
+ log.Fatalf("Failed to set up CloudBuildStatus metric: %v", err)
+ }
+ srv.AddMetric(cloudBuildStatus, minutes(5), defaultPublisher, stackdriver)
+
if *testMode {
logInTestMode("Running all jobs exactly once...")
srv.RunJobsOnce()