Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(767)

Unified Diff: milo/appengine/common/model/build_summary.go

Issue 2944633003: [milo] Add BuildSummary and common models. (Closed)
Patch Set: add comments Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « milo/appengine/buildbucket/common.go ('k') | milo/appengine/common/model/link.go » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: milo/appengine/common/model/build_summary.go
diff --git a/milo/appengine/common/model/build_summary.go b/milo/appengine/common/model/build_summary.go
new file mode 100644
index 0000000000000000000000000000000000000000..849686acbeb24bf47de6fedf2fefed5183d428a2
--- /dev/null
+++ b/milo/appengine/common/model/build_summary.go
@@ -0,0 +1,87 @@
+// Copyright 2017 The LUCI Authors. All rights reserved.
+// Use of this source code is governed under the Apache License, Version 2.0
+// that can be found in the LICENSE file.
+
+package model
+
+import (
+ "time"
+
+ "github.com/luci/gae/service/datastore"
+)
+
+// BuildSummary is a datastore model which is used for storing staandardized
+// summarized build data, and is used for backend-agnostic views (i.e. builders,
+// console). It contains only data that:
+// * is necessary to render these simplified views
+// * is present in all implementations (buildbot, buildbucket)
+//
+// This entity will live as a child of the various implementation's
+// representations of a build (e.g. buildbotBuild). It has various 'tag' fields
+// so that it can be queried by the various backend-agnostic views.
+type BuildSummary struct {
+ // _id for a BuildSummary is always 1
+ _ int64 `gae:"$id,1"`
+
+ // BuildKey will always point to the "real" build, i.e. a buildbotBuild or
+ // a buildbucketBuild. It is always the parent key for the BuildSummary.
+ BuildKey *datastore.Key `gae:"$parent"`
+
+ // Global identifier for the builder that this Build belongs to, i.e.:
+ // "buildbot/<mastername>/<buildername>"
+ // "buildbucket/<bucketname>/<buildername>"
+ BuilderID string
+
+ // KnownConsoleHash is used for backfilling and must always equal the raw
+ // value of:
+ //
+ // sha256(sorted(ConsoleEpochs.keys())
+ //
+ // This is used to identify BuildSummaries which haven't yet been included in
+ // some new Console definition (or which have been removed from a Console
+ // definition).
+ KnownConsoleHash []byte
+
+ // ConsoleEpochs is used for backfilling, and is a series of cmpbin tuples:
+ //
+ // (console_name[str], recorded_epoch[int])
+ //
+ // This maps which epoch (version) of a console definition this BuildSummary
+ // belongs to. Whenever a console definition changes, its epoch increases. The
+ // backfiller will then identify BuildSummary objects which are out of date
+ // and update them.
+ ConsoleEpochs [][]byte
+
+ // ConsoleTags contains query tags for the console view. These are cmpbin
+ // tuples which look like:
+ //
+ // (console_name[str], sort_criteria[tuple], sort_values[tuple])
+ //
+ // `sort_criteria` are defined by the console definition, and will likely look
+ // like (manifest_name[str], repo_url[str]), but other sort_criteria may be
+ // added later.
+ //
+ // `sort_values` are defined by the selected sort_criteria, and will likely
+ // look like (commit_revision[str],). In any event, this string is opaque and
+ // only to be used by the console itself.
+ ConsoleTags [][]byte
+
+ // Created is the time when the Build was first created. Due to pending
+ // queues, this may be substantially before Summary.Start.
+ Created time.Time
+
+ // Summary summarizes relevant bits about the overall build.
+ Summary Summary
+
+ // CurrentStep summarizes relevant bits about the currently running step (if
+ // any). Only expected to be set if !Summary.Status.Terminal().
+ CurrentStep Summary
+
+ // Manifests is a list of links to source manifests that this build reported.
+ Manifests []ManifestLink
+
+ // Patches is the list of patches which are associated with this build.
+ // We reserve the multi-patch case for advanced (multi-repo) tryjobs...
+ // Typically there will only be one patch associated with a build.
+ Patches []PatchInfo
+}
« no previous file with comments | « milo/appengine/buildbucket/common.go ('k') | milo/appengine/common/model/link.go » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698