OLD | NEW |
| (Empty) |
1 // Copyright 2017 The LUCI Authors. All rights reserved. | |
2 // Use of this source code is governed under the Apache License, Version 2.0 | |
3 // that can be found in the LICENSE file. | |
4 | |
5 package model | |
6 | |
7 import ( | |
8 "time" | |
9 | |
10 "github.com/luci/gae/service/datastore" | |
11 ) | |
12 | |
13 // BuildSummary is a datastore model which is used for storing staandardized | |
14 // summarized build data, and is used for backend-agnostic views (i.e. builders, | |
15 // console). It contains only data that: | |
16 // * is necessary to render these simplified views | |
17 // * is present in all implementations (buildbot, buildbucket) | |
18 // | |
19 // This entity will live as a child of the various implementation's | |
20 // representations of a build (e.g. buildbotBuild). It has various 'tag' fields | |
21 // so that it can be queried by the various backend-agnostic views. | |
22 type BuildSummary struct { | |
23 // _id for a BuildSummary is always 1 | |
24 _ int64 `gae:"$id,1"` | |
25 | |
26 // BuildKey will always point to the "real" build, i.e. a buildbotBuild
or | |
27 // a buildbucketBuild. It is always the parent key for the BuildSummary. | |
28 BuildKey *datastore.Key `gae:"$parent"` | |
29 | |
30 // Global identifier for the builder that this Build belongs to, i.e.: | |
31 // "buildbot/<mastername>/<buildername>" | |
32 // "buildbucket/<bucketname>/<buildername>" | |
33 BuilderID string | |
34 | |
35 // KnownConsoleHash is used for backfilling and must always equal the ra
w | |
36 // value of: | |
37 // | |
38 // sha256(sorted(ConsoleEpochs.keys()) | |
39 // | |
40 // This is used to identify BuildSummaries which haven't yet been includ
ed in | |
41 // some new Console definition (or which have been removed from a Consol
e | |
42 // definition). | |
43 KnownConsoleHash []byte | |
44 | |
45 // ConsoleEpochs is used for backfilling, and is a series of cmpbin tupl
es: | |
46 // | |
47 // (console_name[str], recorded_epoch[int]) | |
48 // | |
49 // This maps which epoch (version) of a console definition this BuildSum
mary | |
50 // belongs to. Whenever a console definition changes, its epoch increase
s. The | |
51 // backfiller will then identify BuildSummary objects which are out of d
ate | |
52 // and update them. | |
53 ConsoleEpochs [][]byte | |
54 | |
55 // ConsoleTags contains query tags for the console view. These are cmpbi
n | |
56 // tuples which look like: | |
57 // | |
58 // (console_name[str], sort_criteria[tuple], sort_values[tuple]) | |
59 // | |
60 // `sort_criteria` are defined by the console definition, and will likel
y look | |
61 // like (manifest_name[str], repo_url[str]), but other sort_criteria may
be | |
62 // added later. | |
63 // | |
64 // `sort_values` are defined by the selected sort_criteria, and will lik
ely | |
65 // look like (commit_revision[str],). In any event, this string is opaqu
e and | |
66 // only to be used by the console itself. | |
67 ConsoleTags [][]byte | |
68 | |
69 // Created is the time when the Build was first created. Due to pending | |
70 // queues, this may be substantially before Summary.Start. | |
71 Created time.Time | |
72 | |
73 // Summary summarizes relevant bits about the overall build. | |
74 Summary Summary | |
75 | |
76 // CurrentStep summarizes relevant bits about the currently running step
(if | |
77 // any). Only expected to be set if !Summary.Status.Terminal(). | |
78 CurrentStep Summary | |
79 | |
80 // Manifests is a list of links to source manifests that this build repo
rted. | |
81 Manifests []ManifestLink | |
82 | |
83 // Patches is the list of patches which are associated with this build. | |
84 // We reserve the multi-patch case for advanced (multi-repo) tryjobs... | |
85 // Typically there will only be one patch associated with a build. | |
86 Patches []PatchInfo | |
87 } | |
OLD | NEW |