Documentation ¶
Index ¶
- Constants
- Variables
- func ByAfterRevision(project, buildVariant string, revision int) db.Q
- func ByBeforeRevision(project, buildVariant string, revision int) db.Q
- func ByBetweenBuilds(current, previous *Build) db.Q
- func ByFinishedAfter(finishTime time.Time, project string, requester string) db.Q
- func ById(id string) db.Q
- func ByIds(ids []string) db.Q
- func ByProject(proj string) db.Q
- func ByProjectAndVariant(project, variant, requester string, statuses []string) db.Q
- func ByRecentlyActivatedForProjectAndVariant(revision int, project, variant, requester string) db.Q
- func ByRecentlyFinishedWithMakespans(limit int) db.Q
- func ByRecentlySuccessfulForProjectAndVariant(revision int, project, variant string) db.Q
- func ByRevision(revision string) db.Q
- func ByRevisionAndVariant(revision, variant string) db.Q
- func ByVariant(bv string) db.Q
- func ByVersion(version string) db.Q
- func ByVersions(vIds []string) db.Q
- func Remove(id string) error
- func ResetCachedTask(buildId, taskId string) error
- func SetCachedTaskActivated(buildId, taskId string, active bool) error
- func SetCachedTaskDispatched(buildId, taskId string) error
- func SetCachedTaskFinished(buildId, taskId, status string, detail *apimodels.TaskEndDetail, ...) error
- func SetCachedTaskStarted(buildId, taskId string, startTime time.Time) error
- func SetCachedTaskUndispatched(buildId, taskId string) error
- func SetTasksCache(buildId string, tasks []TaskCache) error
- func TryMarkStarted(buildId string, startTime time.Time) error
- func UpdateActivation(buildId string, active bool, caller string) error
- func UpdateAllBuilds(query interface{}, update interface{}) (*adb.ChangeInfo, error)
- func UpdateCachedTask(t *task.Task, timeTaken time.Duration) error
- func UpdateOne(query interface{}, update interface{}) error
- type Build
- func (b *Build) AllUnblockedTasksFinished(tasksWithDeps []task.Task) (bool, string, error)
- func (b *Build) FindBuildOnBaseCommit() (*Build, error)
- func (b *Build) FindIntermediateBuilds(previous *Build) ([]Build, error)
- func (b *Build) Insert() error
- func (b *Build) IsActive() bool
- func (b *Build) IsFinished() bool
- func (b *Build) IsPatchBuild() bool
- func (b *Build) MarkFinished(status string, finishTime time.Time) error
- func (b *Build) MarshalBSON() ([]byte, error)
- func (b *Build) PreviousActivated(project string, requester string) (*Build, error)
- func (b *Build) PreviousSuccessful() (*Build, error)
- func (b *Build) SetCachedTaskFinished(taskID, status string, detail *apimodels.TaskEndDetail, ...) error
- func (b *Build) UnmarshalBSON(in []byte) error
- func (b *Build) UpdateMakespans(predictedMakespan, actualMakespan time.Duration) error
- func (b *Build) UpdateStatus(status string) error
- type TaskCache
Constants ¶
const Collection = "builds"
The MongoDB collection for build documents.
const IdTimeLayout = "06_01_02_15_04_05"
IdTimeLayout is used time time.Time.Format() to produce timestamps for our ids.
Variables ¶
var ( // bson fields for the build struct IdKey = bsonutil.MustHaveTag(Build{}, "Id") CreateTimeKey = bsonutil.MustHaveTag(Build{}, "CreateTime") StartTimeKey = bsonutil.MustHaveTag(Build{}, "StartTime") FinishTimeKey = bsonutil.MustHaveTag(Build{}, "FinishTime") VersionKey = bsonutil.MustHaveTag(Build{}, "Version") ProjectKey = bsonutil.MustHaveTag(Build{}, "Project") RevisionKey = bsonutil.MustHaveTag(Build{}, "Revision") BuildVariantKey = bsonutil.MustHaveTag(Build{}, "BuildVariant") BuildNumberKey = bsonutil.MustHaveTag(Build{}, "BuildNumber") StatusKey = bsonutil.MustHaveTag(Build{}, "Status") ActivatedKey = bsonutil.MustHaveTag(Build{}, "Activated") ActivatedByKey = bsonutil.MustHaveTag(Build{}, "ActivatedBy") ActivatedTimeKey = bsonutil.MustHaveTag(Build{}, "ActivatedTime") RevisionOrderNumberKey = bsonutil.MustHaveTag(Build{}, "RevisionOrderNumber") TasksKey = bsonutil.MustHaveTag(Build{}, "Tasks") TimeTakenKey = bsonutil.MustHaveTag(Build{}, "TimeTaken") DisplayNameKey = bsonutil.MustHaveTag(Build{}, "DisplayName") RequesterKey = bsonutil.MustHaveTag(Build{}, "Requester") PredictedMakespanKey = bsonutil.MustHaveTag(Build{}, "PredictedMakespan") ActualMakespanKey = bsonutil.MustHaveTag(Build{}, "ActualMakespan") // bson fields for the task caches TaskCacheIdKey = bsonutil.MustHaveTag(TaskCache{}, "Id") TaskCacheDisplayNameKey = bsonutil.MustHaveTag(TaskCache{}, "DisplayName") TaskCacheStatusKey = bsonutil.MustHaveTag(TaskCache{}, "Status") TaskCacheStatusDetailsKey = bsonutil.MustHaveTag(TaskCache{}, "StatusDetails") TaskCacheStartTimeKey = bsonutil.MustHaveTag(TaskCache{}, "StartTime") TaskCacheTimeTakenKey = bsonutil.MustHaveTag(TaskCache{}, "TimeTaken") TaskCacheActivatedKey = bsonutil.MustHaveTag(TaskCache{}, "Activated") )
var All = db.Query(nil)
All returns all builds.
var CompletedStatuses = []string{evergreen.BuildSucceeded, evergreen.BuildFailed}
Functions ¶
func ByAfterRevision ¶
ByAfterRevision builds a query that returns all builds that happened at or after the given revision for the project/variant. Results are sorted by revision order, ascending.
func ByBeforeRevision ¶
ByBeforeRevision builds a query that returns all builds that happened before the given revision for the project/variant. Results are sorted by revision order, descending.
func ByBetweenBuilds ¶
ByBetweenBuilds returns all builds that happened between the current and previous build.
func ByFinishedAfter ¶
ByFinishedAfter creates a query that returns all builds for a project/requester that were finished after the given time.
func ByProjectAndVariant ¶
ByProjectAndVariant creates a query that finds all completed builds for a given project and variant, while also specifying a requester
func ByRecentlyActivatedForProjectAndVariant ¶
ByRecentlyActivatedForProjectAndVariant builds a query that returns all builds before a given revision that were activated for a project + variant. Builds are sorted from most to least recent.
func ByRecentlyFinishedWithMakespans ¶
ByRecentlyFinished builds a query that returns all builds for a given project that are versions (not patches), that have finished and have non-zero makespans.
func ByRecentlySuccessfulForProjectAndVariant ¶
ByRecentlySuccessfulForProjectAndVariant builds a query that returns all builds before a given revision that were successful for a project + variant. Builds are sorted from most to least recent.
func ByRevision ¶
ByRevision creates a query that returns all builds for a revision.
func ByRevisionAndVariant ¶
ByRevisionAndVariant creates a query that returns the non-patch build for a revision + buildvariant combionation.
func ByVersions ¶
ByVersions creates a query that finds all builds with the given version ids.
func ResetCachedTask ¶
ResetCachedTask resets the given task in the cache of the given build.
func SetCachedTaskActivated ¶
SetCachedTaskActivated sets the given task to active or inactive in the cache of the given build.
func SetCachedTaskDispatched ¶
SetCachedTaskDispatched sets the given task to "dispatched" in the cache of the given build.
func SetCachedTaskFinished ¶
func SetCachedTaskFinished(buildId, taskId, status string, detail *apimodels.TaskEndDetail, timeTaken time.Duration) error
SetCachedTaskFinished sets the given task to "finished" along with a time taken in the cache of the given build.
func SetCachedTaskStarted ¶
SetCachedTaskStarted sets the given task to "started" in the cache of the given build.
func SetCachedTaskUndispatched ¶
SetCachedTaskUndispatched sets the given task to "undispatched" in the cache of the given build.
func SetTasksCache ¶
SetTasksCache updates one build with the given id to contain the given task caches.
func TryMarkStarted ¶
TryMarkBuildStarted attempts to mark a b as started if it isn't already marked as such
func UpdateActivation ¶
UpdateActivation updates one build with the given id to the given activation setting.
func UpdateAllBuilds ¶
func UpdateAllBuilds(query interface{}, update interface{}) (*adb.ChangeInfo, error)
func UpdateCachedTask ¶
UpdateCachedTask sets the status and increments the time taken for a task in the build cache. It is intended for use with display tasks
Types ¶
type Build ¶
type Build struct { Id string `bson:"_id" json:"_id"` CreateTime time.Time `bson:"create_time" json:"create_time,omitempty"` StartTime time.Time `bson:"start_time" json:"start_time,omitempty"` FinishTime time.Time `bson:"finish_time" json:"finish_time,omitempty"` Version string `bson:"version" json:"version,omitempty"` Project string `bson:"branch" json:"branch,omitempty"` Revision string `bson:"gitspec" json:"gitspec,omitempty"` BuildVariant string `bson:"build_variant" json:"build_variant,omitempty"` BuildNumber string `bson:"build_number" json:"build_number,omitempty"` Status string `bson:"status" json:"status,omitempty"` Activated bool `bson:"activated" json:"activated,omitempty"` ActivatedBy string `bson:"activated_by" json:"activated_by,omitempty"` ActivatedTime time.Time `bson:"activated_time" json:"activated_time,omitempty"` RevisionOrderNumber int `bson:"order,omitempty" json:"order,omitempty"` Tasks []TaskCache `bson:"tasks" json:"tasks"` TimeTaken time.Duration `bson:"time_taken" json:"time_taken,omitempty"` DisplayName string `bson:"display_name" json:"display_name,omitempty"` PredictedMakespan time.Duration `bson:"predicted_makespan" json:"predicted_makespan,omitempty"` ActualMakespan time.Duration `bson:"actual_makespan" json:"actual_makespan,omitempty"` // build requester - this is used to help tell the // reason this build was created. e.g. it could be // because the repotracker requested it (via tracking the // repository) or it was triggered by a developer // patch request Requester string `bson:"r" json:"r,omitempty"` // Fields set if triggered by an upstream build TriggerID string `bson:"trigger_id,omitempty" json:"trigger_id,omitempty"` TriggerType string `bson:"trigger_type,omitempty" json:"trigger_type,omitempty"` TriggerEvent string `bson:"trigger_event,omitempty" json:"trigger_event,omitempty"` }
Build represents a set of tasks on one variant of a Project
e.g. one build might be "Ubuntu with Python 2.4" and another might be "OSX with Python 3.0", etc.
func (*Build) AllUnblockedTasksFinished ¶
AllUnblockedTasksOrCompileFinished returns true when all activated tasks in the build have one of the statuses in IsFinishedTaskStatus or the task is considered blocked
returns boolean to indicate if tasks are complete, string with either BuildFailed or BuildSucceded. The string is only valid when the boolean is true
func (*Build) FindBuildOnBaseCommit ¶
FindBuildOnBaseCommit returns the build that a patch build is based on.
func (*Build) FindIntermediateBuilds ¶
Find all builds on the same project + variant + requester between the current b and the specified previous build.
func (*Build) IsFinished ¶
Returns whether or not the build has finished, based on its status. In spite of the name, a build with status BuildFailed may still be in progress; use AllCachedTasksFinished
func (*Build) IsPatchBuild ¶
func (*Build) MarkFinished ¶
MarkFinished sets the build to finished status in the database (this does not update task or version data).
func (*Build) MarshalBSON ¶
func (*Build) PreviousActivated ¶
Find the most recent activated build with the same variant + requester + project as the current build.
func (*Build) PreviousSuccessful ¶
Find the most recent b on with the same build variant + requester + project as the current build, with any of the specified statuses.
func (*Build) SetCachedTaskFinished ¶
func (*Build) UnmarshalBSON ¶
func (*Build) UpdateMakespans ¶
UpdateMakespans sets the builds predicted and actual makespans to given durations
func (*Build) UpdateStatus ¶
UpdateStatus sets the build status to the given string.
type TaskCache ¶
type TaskCache struct { Id string `bson:"id" json:"id"` DisplayName string `bson:"d" json:"display_name"` Status string `bson:"s" json:"status"` StatusDetails apimodels.TaskEndDetail `bson:"ed" json:"task_end_details"` StartTime time.Time `bson:"st" json:"start_time"` TimeTaken time.Duration `bson:"tt" json:"time_taken"` Activated bool `bson:"a" json:"activated"` }
TaskCache represents some duped information about tasks, mainly for ui purposes.