Documentation ¶
Overview ¶
Package build models a build, a set of tasks that run on a variant. A variant is typically an operating system and some metadata. For example, it could run lint tasks on a Linux distribution.
Index ¶
- Constants
- Variables
- func ByAfterRevision(project, buildVariant string, revision int) db.Q
- func ByBeforeRevision(project, buildVariant string, revision int) 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 ByRecentlySuccessfulForProjectAndVariant(revision int, project, variant string) db.Q
- func ByRevisionAndVariant(revision, variant string) db.Q
- func ByRevisionWithSystemVersionRequester(revision string) db.Q
- func ByVersion(version string) db.Q
- func ByVersionAndVariant(version, bv string) db.Q
- func ByVersions(vIds []string) db.Q
- func FindProjectForBuild(buildID string) (string, error)
- func SetBuildStartedForTasks(tasks []task.Task, caller string) error
- func SetTasksCache(buildId string, tasks []TaskCache) error
- func TryMarkStarted(buildId string, startTime time.Time) error
- func UpdateActivation(buildIds []string, active bool, caller string) error
- func UpdateAllBuilds(query interface{}, update interface{}) error
- func UpdateOne(query interface{}, update interface{}) error
- type Build
- func (b *Build) AllUnblockedTasksFinished(tasks []task.Task) (bool, string, error)
- func (b *Build) FindBuildOnBaseCommit() (*Build, error)
- func (b *Build) GetPRNotificationDescription(tasks []task.Task) string
- func (b *Build) GetTimeSpent() (time.Duration, time.Duration, error)
- func (b *Build) GetURL(uiBase string) string
- func (b *Build) Insert() error
- func (b *Build) IsFinished() bool
- func (b *Build) MarkFinished(status string, finishTime time.Time) error
- func (b *Build) MarshalBSON() ([]byte, error)
- func (b *Build) PreviousSuccessful() (*Build, error)
- func (b *Build) SetAborted(aborted bool) error
- func (b *Build) SetActivated(activated bool) error
- func (b *Build) SetAllTasksBlocked(blocked bool) error
- func (b *Build) SetHasUnfinishedEssentialTask(hasUnfinishedEssentialTask bool) error
- func (b *Build) SetIsGithubCheck() error
- func (b *Build) UnmarshalBSON(in []byte) error
- func (b *Build) UpdateGithubCheckStatus(status string) error
- func (b *Build) UpdateMakespans(predictedMakespan, actualMakespan time.Duration) error
- func (b *Build) UpdateStatus(status string) error
- type Builds
- 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") StatusKey = bsonutil.MustHaveTag(Build{}, "Status") GithubCheckStatusKey = bsonutil.MustHaveTag(Build{}, "GithubCheckStatus") 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") IsGithubCheckKey = bsonutil.MustHaveTag(Build{}, "IsGithubCheck") AbortedKey = bsonutil.MustHaveTag(Build{}, "Aborted") AllTasksBlockedKey = bsonutil.MustHaveTag(Build{}, "AllTasksBlocked") HasUnfinishedEssentialTaskKey = bsonutil.MustHaveTag(Build{}, "HasUnfinishedEssentialTask") TaskCacheIdKey = bsonutil.MustHaveTag(TaskCache{}, "Id") )
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 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 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 ByRevisionAndVariant ¶
ByRevisionAndVariant creates a query that returns the non-patch build for a revision + buildvariant combination.
func ByRevisionWithSystemVersionRequester ¶
ByRevisionWithSystemVersionRequester creates a query that returns all builds for a revision.
func ByVersionAndVariant ¶
ByVersionAndVariant creates a query that finds all builds in a version for a given variant.
func ByVersions ¶
ByVersions creates a query that finds all builds with the given version ids.
func FindProjectForBuild ¶
func SetBuildStartedForTasks ¶
SetBuildStartedForTasks sets tasks' builds status to started and activates them
func SetTasksCache ¶
SetTasksCache updates one build with the given id to contain the given task caches.
func TryMarkStarted ¶
TryMarkStarted attempts to mark a build as started if it isn't already marked as such
func UpdateActivation ¶
UpdateActivation updates builds with the given ids to the given activation setting.
func UpdateAllBuilds ¶
func UpdateAllBuilds(query interface{}, update interface{}) error
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"` 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"` Aborted bool `bson:"aborted" json:"aborted,omitempty"` // Tags that describe the variant Tags []string `bson:"tags,omitempty" json:"tags,omitempty"` // The status of the subset of the build that's used for github checks GithubCheckStatus string `bson:"github_check_status,omitempty" json:"github_check_status,omitempty"` // does the build contain tasks considered for mainline github checks IsGithubCheck bool `bson:"is_github_check,omitempty" json:"is_github_check,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"` // builds that are part of a child patch will store the id and number of the parent patch ParentPatchID string `bson:"parent_patch_id,omitempty" json:"parent_patch_id,omitempty"` ParentPatchNumber int `bson:"parent_patch_number,omitempty" json:"parent_patch_number,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"` // Set to true if all tasks in the build are blocked. // Should not be exposed, only for internal use. AllTasksBlocked bool `bson:"all_tasks_blocked"` // HasUnfinishedEssentialTask tracks whether or not this build has at least // one unfinished essential task. The build cannot be in a finished state // until all of its essential tasks have finished. HasUnfinishedEssentialTask bool `bson:"has_unfinished_essential_task"` }
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 FindBuildsByVersions ¶
FindBuildsByVersions finds builds matching the version. This only populates a subset of the build fields.
func FindBuildsForTasks ¶
FindBuildsForTasks returns all builds that cover the given tasks
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 BuildSucceeded. 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) GetPRNotificationDescription ¶
GetPRNotificationDescription returns a GitHub PR status description based on the statuses of tasks in the build, to be used by jobs and notification processing.
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) MarkFinished ¶
MarkFinished sets the build to finished status in the database (this does not update task or version data).
func (*Build) MarshalBSON ¶
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) SetAborted ¶
SetAborted sets the build aborted field to the given boolean.
func (*Build) SetActivated ¶
SetActivated sets the build activated field to the given boolean.
func (*Build) SetAllTasksBlocked ¶
SetAllTasksBlocked sets the build AllTasksBlocked field to the given boolean.
func (*Build) SetHasUnfinishedEssentialTask ¶
SetHasUnfinishedEssentialTask sets whether or not the build has at least one unfinished essential task.
func (*Build) SetIsGithubCheck ¶
func (*Build) UnmarshalBSON ¶
func (*Build) UpdateGithubCheckStatus ¶
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.