Documentation ¶
Index ¶
- Constants
- Variables
- func AbortBuild(buildId string, caller string) error
- func AbortPatchesWithGithubPatchData(createdBefore time.Time, owner, repo string, prNumber int) error
- func AbortTask(taskId, caller string) error
- func AbortVersion(versionId, caller string) error
- func ActivateElapsedBuilds(v *version.Version) error
- func ActivatePreviousTask(taskId, caller string) error
- func AddNewBuilds(activated bool, v *version.Version, p *Project, tasks TaskVariantPairs, ...) error
- func AddNewBuildsForPatch(p *patch.Patch, patchVersion *version.Version, project *Project, ...) error
- func AddNewTasks(activated bool, v *version.Version, p *Project, pairs TaskVariantPairs, ...) error
- func AddNewTasksForPatch(p *patch.Patch, patchVersion *version.Version, project *Project, ...) error
- func AddTasksToBuild(b *build.Build, project *Project, v *version.Version, taskNames []string, ...) (*build.Build, error)
- func CalculateActualMakespan(tasks []task.Task) time.Duration
- func CancelPatch(p *patch.Patch, caller string) error
- func ClearAndResetStrandedTask(h *host.Host) error
- func ClearTaskQueue(distro string) error
- func CreateBuildFromVersion(project *Project, v *version.Version, taskIds TaskIdConfig, buildName string, ...) (string, error)
- func CreateTasksCache(tasks []task.Task) []build.TaskCache
- func DeactivatePreviousTasks(taskId, caller string) error
- func DeleteBuild(id string) error
- func DeleteTaskJSONTagFromTask(taskId, name string) error
- func DoProjectActivation(id string) error
- func FetchVersionsAndAssociatedBuilds(project *Project, skip int, numVersions int) ([]version.Version, map[string][]build.Build, error)
- func FinalizePatch(ctx context.Context, p *patch.Patch, requester string, githubOauthToken string) (*version.Version, error)
- func FindLastPassingVersionForBuildVariants(project *Project, buildVariantNames []string) (*version.Version, error)
- func FindMinimumQueuePositionForTask(taskId string) (int, error)
- func FindMostRecentLogMessages(taskId string, execution int, numMsgs int, severities []string, ...) ([]apimodels.LogMessage, error)
- func FindPredictedMakespan(tasks []task.Task) dependencyPath
- func FindTaskQueueGenerationTimes() (map[string]time.Time, error)
- func FindUserByID(id string) (*user.DBUser, error)
- func GetEstimatedStartTime(t task.Task) (time.Duration, error)
- func GetNewRevisionOrderNumber(projectId string) (int, error)
- func GetOrCreateUser(userId, displayName, email string) (*user.DBUser, error)
- func GetRawTaskLogChannel(taskId string, execution int, severities []string, msgTypes []string) (chan apimodels.LogMessage, error)
- func InsertNotificationRecord(...) error
- func InsertTaskJSON(t *task.Task, name string, data map[string]interface{}) error
- func LastNotificationsEventTime(projectName string) (time.Time, error)
- func LoadProjectInto(data []byte, identifier string, project *Project) error
- func MarkEnd(t *task.Task, caller string, finishTime time.Time, ...) error
- func MarkStart(t *task.Task, updates *StatusChanges) error
- func MarkTaskDispatched(t *task.Task, hostId, distroId string) error
- func MarkTaskUndispatched(t *task.Task) error
- func MarkVersionCompleted(versionId string, finishTime time.Time) error
- func MarkVersionStarted(versionId string, startTime time.Time) error
- func NewAxisSelectorEvaluator(axes []matrixAxis) *axisSelectorEvaluator
- func NewParserTaskSelectorEvaluator(tasks []parserTask) *taskSelectorEvaluator
- func NewQueue() estimatedTaskQueue
- func NewVariantSelectorEvaluator(variants []parserBV, ase *axisSelectorEvaluator) *variantSelectorEvaluator
- func RefreshTasksCache(buildId string) error
- func RemoveProjectAlias(id string) error
- func RestartBuild(buildId string, taskIds []string, abortInProgress bool, caller string) error
- func RestartBuildTasks(buildId string, caller string) error
- func RestartVersion(versionId string, taskIds []string, abortInProgress bool, caller string) error
- func SaveUserSettings(userId string, settings user.UserSettings) error
- func SetActiveState(taskId string, caller string, active bool) error
- func SetBuildActivation(buildId string, active bool, caller string) error
- func SetBuildPriority(buildId string, priority int64) error
- func SetLastNotificationsEventTime(projectName string, timeOfEvent time.Time) error
- func SetProcessRuntimeCompleted(processName string, runtime time.Duration) error
- func SetTaskJSONTagForTask(taskId, name, tag string) error
- func SetUserAPIKey(userId, newKey string) error
- func SetVersionActivation(versionId string, active bool, caller string) error
- func SetVersionPriority(versionId string, priority int64) error
- func TaskHistoryPickaxe(params PickaxeParams) ([]task.Task, error)
- func TryMarkPatchBuildFinished(b *build.Build, finishTime time.Time, updates *StatusChanges) error
- func TryResetTask(taskId, user, origin string, detail *apimodels.TaskEndDetail) error
- func UntrackStaleProjectRefs(activeProjects []string) error
- func UpdateBuildAndVersionStatusForTask(taskId string, updates *StatusChanges) error
- func UpdateLastRevision(projectId, revision string) error
- func UpdateOneNotification(query interface{}, update interface{}) error
- func UpdateStaticDistro(d distro.Distro) error
- func UpdateStaticHosts() error
- func UpsertOneProcessRuntime(query interface{}, update interface{}) error
- func ValidateHost(hostId string, r *http.Request) (*host.Host, int, error)
- func ValidateTVPairs(p *Project, in []TVPair) error
- func ValidateTask(taskId string, checkSecret bool, r *http.Request) (*task.Task, int, error)
- type AlertConfig
- type ArtifactInstructions
- type AverageTimeByDistroAndRequester
- type AverageTimes
- type AvgBucket
- type AvgBuckets
- type Bucket
- type BuildStatusDiff
- type BuildVariant
- type BuildVariantHistoryIterator
- type BuildVariantTaskUnit
- type BuildVariants
- type Context
- type DisplayTask
- type EmailAlertData
- type ExhaustedIterator
- type FrameBounds
- type GeneratedProject
- type GithubHook
- type HostTaskInconsistency
- type HostUtilizationBucket
- type KeyVal
- type Module
- type Note
- type NotificationHistory
- type PerfCommitInfo
- type PerfTaskForVersionId
- type PerfTaskInfo
- type PerfTasksForVersion
- type PerfVersionData
- type PickaxeParams
- type PluginCommandConf
- type ProcessRuntime
- func FindAllLateProcessRuntimes(cutoff time.Time) ([]ProcessRuntime, error)
- func FindAllProcessRuntimes(query interface{}, projection interface{}) ([]ProcessRuntime, error)
- func FindEveryProcessRuntime() ([]ProcessRuntime, error)
- func FindOneProcessRuntime(query interface{}, projection interface{}) (*ProcessRuntime, error)
- func FindProcessRuntime(id string) (*ProcessRuntime, error)
- type Project
- func FindProject(revision string, projectRef *ProjectRef) (*Project, error)
- func FindProjectFromTask(t *task.Task) (*Project, error)
- func FindProjectFromVersionID(versionStr string) (*Project, error)
- func MakePatchedConfig(ctx context.Context, p *patch.Patch, remoteConfigPath, projectConfig string) (*Project, error)
- func (p *Project) BuildProjectTVPairs(patchDoc *patch.Patch, alias string)
- func (p *Project) BuildProjectTVPairsWithAlias(alias string) ([]TVPair, []TVPair, error)
- func (p *Project) FindAllBuildVariantTasks() []BuildVariantTaskUnit
- func (p *Project) FindAllVariants() []string
- func (p *Project) FindBuildVariant(build string) *BuildVariant
- func (p *Project) FindDistroNameForTask(t *task.Task) (string, error)
- func (p *Project) FindProjectTask(name string) *ProjectTask
- func (p *Project) FindTaskForVariant(task, variant string) *BuildVariantTaskUnit
- func (p *Project) FindTaskGroup(name string) *TaskGroup
- func (p *Project) FindTasksForVariant(build string) []string
- func (p *Project) FindVariantsWithTask(task string) []string
- func (p *Project) GetModuleByName(name string) (*Module, error)
- func (p Project) GetSpecForTask(name string) ProjectTask
- func (p *Project) GetVariantMappings() map[string]string
- func (p *Project) GetVariantsWithTask(taskName string) []string
- func (p *Project) IgnoresAllFiles(files []string) bool
- func (p *Project) IsGenerateTask(taskName string) bool
- func (p *Project) TasksThatCallCommand(find string) map[string]int
- type ProjectAlias
- type ProjectNotificationTime
- type ProjectRef
- func FindAllProjectRefs() ([]ProjectRef, error)
- func FindAllTrackedProjectRefs() ([]ProjectRef, error)
- func FindFirstProjectRef() (*ProjectRef, error)
- func FindOneProjectRef(identifier string) (*ProjectRef, error)
- func FindOneProjectRefByRepoAndBranchWithPRTesting(owner, repo, branch string) (*ProjectRef, error)
- func FindProjectRefs(key string, limit int, sortDir int, isAuthenticated bool) ([]ProjectRef, error)
- func FindProjectRefsByRepoAndBranch(owner, repoName, branch string) ([]ProjectRef, error)
- func (p *ProjectRef) GetBatchTime(variant *BuildVariant) int
- func (projectRef *ProjectRef) HTTPLocation() (*url.URL, error)
- func (projectRef *ProjectRef) Insert() error
- func (p *ProjectRef) IsAdmin(userID string, settings evergreen.Settings) bool
- func (projectRef *ProjectRef) Location() (string, error)
- func (projectRef *ProjectRef) String() string
- func (projectRef *ProjectRef) Upsert() error
- type ProjectTask
- type ProjectVars
- type PushLog
- type Repository
- type RepositoryErrorDetails
- type ResourceInfo
- type RestartTaskOptions
- type RestartTaskResults
- type Revision
- type S3CopyRequest
- type Selector
- type StatusChanges
- type StatusDetailsDiff
- type StatusDiff
- type StuckHostInconsistency
- type TVPair
- type TVPairSet
- type TagContainer
- type TaskConfig
- type TaskDep
- type TaskDetails
- type TaskGroup
- type TaskHistory
- type TaskHistoryChunk
- type TaskHistoryIterator
- type TaskIdConfig
- type TaskIdTable
- func (tt TaskIdTable) AddId(variant, taskName, id string)
- func (tt TaskIdTable) GetId(variant, taskName string) string
- func (tt TaskIdTable) GetIdsForAllTasks(currentVariant, taskName string) []string
- func (tt TaskIdTable) GetIdsForAllVariants(taskName string) []string
- func (tt TaskIdTable) GetIdsForAllVariantsExcluding(taskName string, exclude TVPair) []string
- type TaskJSON
- func GetTaskJSONById(taskId, name string) (TaskJSON, error)
- func GetTaskJSONByName(version, buildId, taskName, name string) (TaskJSON, error)
- func GetTaskJSONByTag(projectId, tag, variant, taskName, name string) (*TaskJSON, error)
- func GetTaskJSONCommit(projectId, revision, variant, taskName, name string) (TaskJSON, error)
- func GetTaskJSONForVariant(version, variantId, taskName, name string) (TaskJSON, error)
- func GetTaskJSONHistory(t *task.Task, name string) ([]TaskJSON, error)
- func GetTaskJSONTagsForTask(project, buildVariant, taskName, name string) ([]TaskJSON, error)
- func PerfGetTasksForVersion(versionId, name string) ([]TaskJSON, error)
- type TaskJSONTag
- type TaskJSONTagMeta
- type TaskLog
- type TaskQueue
- type TaskQueueItem
- type TaskSpec
- type TaskStatusDiff
- type TaskUnitDependency
- type TaskUnitRequirement
- type TaskVariantPairs
- type TestHistoryParameters
- type TestHistoryResult
- type TestLog
- type TestStatusDiff
- type TestSuite
- type Timeout
- type YAMLCommandSet
Constants ¶
const ( AllDependencies = "*" AllVariants = "*" AllStatuses = "*" )
const ( SelectAll = "*" InvalidCriterionRunes = "!." )
const ( PushlogCollection = "pushes" PushLogSuccess = "success" PushLogFailed = "failed" )
const ( TaskTimeout = "timeout" TaskSystemFailure = "sysfail" TaskSetupFailure = "setup-fail" )
const ( TaskLogDB = "logs" TaskLogCollection = "task_logg" MessagesPerLog = 10 )
const ( ApiTaskKey apiTaskKey = 0 ApiHostKey apiHostKey = 0 ApiProjectKey apiProjectKey = 0 ApiProjectRefKey apiProjectRefKey = 0 )
const ( // DefaultCommandType is a system configuration option that is used to // differentiate between setup related commands and actual testing commands. DefaultCommandType = evergreen.CommandTypeTest )
const (
GithubHooksCollection = "github_hooks"
)
const (
GithubRepoType = "github"
)
const KeyValCollection = "keyval_plugin"
const NotesCollection = "build_baron_notes"
const (
NotifyHistoryCollection = "notify_history"
)
const (
NotifyTimesCollection = "notify_times"
)
const (
ProjectAliasCollection = "project_aliases"
)
const (
ProjectRefCollection = "project_ref"
)
const (
ProjectVarsCollection = "project_vars"
)
const (
RepositoriesCollection = "repo_revisions"
)
const (
RuntimesCollection = "process_runtimes"
)
const (
StaleVersionCutoff = 100
)
Maximum number of versions to consider for last_green, more than 100 revisions back considered "stale"
const (
TaskJSONCollection = "json"
)
const (
TaskQueuesCollection = "task_queues"
)
const TestLogCollection = "test_logs"
Variables ¶
var ( StuckHostKey = bsonutil.MustHaveTag(StuckHostInconsistency{}, "Host") StuckHostRunningTaskKey = bsonutil.MustHaveTag(StuckHostInconsistency{}, "RunningTask") StuckHostTaskStatusKey = bsonutil.MustHaveTag(StuckHostInconsistency{}, "TaskStatus") HostTaskKey = "task" )
var ( // bson fields for the notification history struct NHIdKey = bsonutil.MustHaveTag(NotificationHistory{}, "Id") NHPrevIdKey = bsonutil.MustHaveTag(NotificationHistory{}, "PrevNotificationId") NHCurrIdKey = bsonutil.MustHaveTag(NotificationHistory{}, "CurrNotificationId") NHNameKey = bsonutil.MustHaveTag(NotificationHistory{}, "NotificationName") NHTypeKey = bsonutil.MustHaveTag(NotificationHistory{}, "NotificationType") NHTimeKey = bsonutil.MustHaveTag(NotificationHistory{}, "NotificationTime") NHProjectKey = bsonutil.MustHaveTag(NotificationHistory{}, "NotificationProject") NHRequesterKey = bsonutil.MustHaveTag(NotificationHistory{}, "NotificationRequester") )
var ( PntProjectNameKey = bsonutil.MustHaveTag(ProjectNotificationTime{}, "ProjectName") PntLastEventTime = bsonutil.MustHaveTag(ProjectNotificationTime{}, "LastNotificationEventTime") )
var ( ProcRuntimeIdKey = bsonutil.MustHaveTag(ProcessRuntime{}, "Id") ProcRuntimeFinishedAtKey = bsonutil.MustHaveTag(ProcessRuntime{}, "FinishedAt") ProcRuntimeRuntimeKey = bsonutil.MustHaveTag(ProcessRuntime{}, "Runtime") )
var ( // bson fields for the project struct ProjectIdentifierKey = bsonutil.MustHaveTag(Project{}, "Identifier") ProjectPreKey = bsonutil.MustHaveTag(Project{}, "Pre") ProjectPostKey = bsonutil.MustHaveTag(Project{}, "Post") ProjectModulesKey = bsonutil.MustHaveTag(Project{}, "Modules") ProjectBuildVariantsKey = bsonutil.MustHaveTag(Project{}, "BuildVariants") ProjectFunctionsKey = bsonutil.MustHaveTag(Project{}, "Functions") ProjectStepbackKey = bsonutil.MustHaveTag(Project{}, "Stepback") ProjectTasksKey = bsonutil.MustHaveTag(Project{}, "Tasks") )
var ( // bson fields for the ProjectRef struct ProjectRefOwnerKey = bsonutil.MustHaveTag(ProjectRef{}, "Owner") ProjectRefRepoKey = bsonutil.MustHaveTag(ProjectRef{}, "Repo") ProjectRefBranchKey = bsonutil.MustHaveTag(ProjectRef{}, "Branch") ProjectRefRepoKindKey = bsonutil.MustHaveTag(ProjectRef{}, "RepoKind") ProjectRefEnabledKey = bsonutil.MustHaveTag(ProjectRef{}, "Enabled") ProjectRefPrivateKey = bsonutil.MustHaveTag(ProjectRef{}, "Private") ProjectRefBatchTimeKey = bsonutil.MustHaveTag(ProjectRef{}, "BatchTime") ProjectRefIdentifierKey = bsonutil.MustHaveTag(ProjectRef{}, "Identifier") ProjectRefDisplayNameKey = bsonutil.MustHaveTag(ProjectRef{}, "DisplayName") ProjectRefDeactivatePreviousKey = bsonutil.MustHaveTag(ProjectRef{}, "DeactivatePrevious") ProjectRefRemotePathKey = bsonutil.MustHaveTag(ProjectRef{}, "RemotePath") ProjectRefTrackedKey = bsonutil.MustHaveTag(ProjectRef{}, "Tracked") ProjectRefLocalConfig = bsonutil.MustHaveTag(ProjectRef{}, "LocalConfig") ProjectRefAlertsKey = bsonutil.MustHaveTag(ProjectRef{}, "Alerts") ProjectRefRepotrackerError = bsonutil.MustHaveTag(ProjectRef{}, "RepotrackerError") ProjectRefAdminsKey = bsonutil.MustHaveTag(ProjectRef{}, "Admins") )
var ( // bson fields for the push log struct PushLogIdKey = bsonutil.MustHaveTag(PushLog{}, "Id") PushLogLocationKey = bsonutil.MustHaveTag(PushLog{}, "Location") PushLogTaskIdKey = bsonutil.MustHaveTag(PushLog{}, "TaskId") PushLogCreateTimeKey = bsonutil.MustHaveTag(PushLog{}, "CreateTime") PushLogRevisionKey = bsonutil.MustHaveTag(PushLog{}, "Revision") PushLogStatusKey = bsonutil.MustHaveTag(PushLog{}, "Status") PushLogRonKey = bsonutil.MustHaveTag(PushLog{}, "RevisionOrderNumber") )
var ( // BSON fields for the Repository struct RepoProjectKey = bsonutil.MustHaveTag(Repository{}, "Project") RepoLastRevisionKey = bsonutil.MustHaveTag(Repository{}, "LastRevision") RepositoryOrderNumberKey = bsonutil.MustHaveTag(Repository{}, "RevisionOrderNumber") )
var ( TestFileKey = bsonutil.MustHaveTag(TestHistoryResult{}, "TestFile") TaskNameKey = bsonutil.MustHaveTag(TestHistoryResult{}, "TaskName") TaskStatusKey = bsonutil.MustHaveTag(TestHistoryResult{}, "TaskStatus") TestStatusKey = bsonutil.MustHaveTag(TestHistoryResult{}, "TestStatus") RevisionKey = bsonutil.MustHaveTag(TestHistoryResult{}, "Revision") ProjectKey = bsonutil.MustHaveTag(TestHistoryResult{}, "Project") TaskIdKey = bsonutil.MustHaveTag(TestHistoryResult{}, "TaskId") BuildVariantKey = bsonutil.MustHaveTag(TestHistoryResult{}, "BuildVariant") EndTimeKey = bsonutil.MustHaveTag(TestHistoryResult{}, "EndTime") StartTimeKey = bsonutil.MustHaveTag(TestHistoryResult{}, "StartTime") ExecutionKey = bsonutil.MustHaveTag(TestHistoryResult{}, "Execution") OldTaskIdKey = bsonutil.MustHaveTag(TestHistoryResult{}, "OldTaskId") UrlKey = bsonutil.MustHaveTag(TestHistoryResult{}, "Url") UrlRawKey = bsonutil.MustHaveTag(TestHistoryResult{}, "UrlRaw") TaskTimedOutKey = bsonutil.MustHaveTag(TestHistoryResult{}, "TaskTimedOut") TaskDetailsTypeKey = bsonutil.MustHaveTag(TestHistoryResult{}, "TaskDetailsType") LogIdKey = bsonutil.MustHaveTag(TestHistoryResult{}, "LogId") )
TestHistoryResult bson tags
var ( TaskJSONTagMetaCreatedKey = bsonutil.MustHaveTag(TaskJSONTagMeta{}, "Created") TaskJSONTagMetaRevisionKey = bsonutil.MustHaveTag(TaskJSONTagMeta{}, "Revision") TaskJSONTagMetaVersionIdKey = bsonutil.MustHaveTag(TaskJSONTagMeta{}, "VersionId") )
var ( TaskJSONTagNameKey = bsonutil.MustHaveTag(TaskJSONTag{}, "Name") TaskJSONTagObjKey = bsonutil.MustHaveTag(TaskJSONTag{}, "Obj") )
var ( // BSON fields for the TaskJSON struct TaskJSONNameKey = bsonutil.MustHaveTag(TaskJSON{}, "Name") TaskJSONTaskNameKey = bsonutil.MustHaveTag(TaskJSON{}, "TaskName") TaskJSONProjectIdKey = bsonutil.MustHaveTag(TaskJSON{}, "ProjectId") TaskJSONTaskIdKey = bsonutil.MustHaveTag(TaskJSON{}, "TaskId") TaskJSONBuildIdKey = bsonutil.MustHaveTag(TaskJSON{}, "BuildId") TaskJSONVariantKey = bsonutil.MustHaveTag(TaskJSON{}, "Variant") TaskJSONVersionIdKey = bsonutil.MustHaveTag(TaskJSON{}, "VersionId") TaskJSONCreateTimeKey = bsonutil.MustHaveTag(TaskJSON{}, "CreateTime") TaskJSONIsPatchKey = bsonutil.MustHaveTag(TaskJSON{}, "IsPatch") TaskJSONRevisionOrderNumberKey = bsonutil.MustHaveTag(TaskJSON{}, "RevisionOrderNumber") TaskJSONRevisionKey = bsonutil.MustHaveTag(TaskJSON{}, "Revision") TaskJSONDataKey = bsonutil.MustHaveTag(TaskJSON{}, "Data") TaskJSONTagKey = bsonutil.MustHaveTag(TaskJSON{}, "Tag") )
var ( // bson fields for the task log struct TaskLogIdKey = bsonutil.MustHaveTag(TaskLog{}, "Id") TaskLogTaskIdKey = bsonutil.MustHaveTag(TaskLog{}, "TaskId") TaskLogExecutionKey = bsonutil.MustHaveTag(TaskLog{}, "Execution") TaskLogTimestampKey = bsonutil.MustHaveTag(TaskLog{}, "Timestamp") TaskLogMessageCountKey = bsonutil.MustHaveTag(TaskLog{}, "MessageCount") TaskLogMessagesKey = bsonutil.MustHaveTag(TaskLog{}, "Messages") // bson fields for the log message struct LogMessageTypeKey = bsonutil.MustHaveTag(apimodels.LogMessage{}, "Type") LogMessageSeverityKey = bsonutil.MustHaveTag(apimodels.LogMessage{}, "Severity") LogMessageMessageKey = bsonutil.MustHaveTag(apimodels.LogMessage{}, "Message") LogMessageTimestampKey = bsonutil.MustHaveTag(apimodels.LogMessage{}, "Timestamp") )
var ( TestLogIdKey = bsonutil.MustHaveTag(TestLog{}, "Id") TestLogNameKey = bsonutil.MustHaveTag(TestLog{}, "Name") TestLogTaskKey = bsonutil.MustHaveTag(TestLog{}, "Task") TestLogTaskExecutionKey = bsonutil.MustHaveTag(TestLog{}, "TaskExecution") TestLogLinesKey = bsonutil.MustHaveTag(TestLog{}, "Lines") )
var EarliestDateToConsider time.Time
var NoteTaskIdKey = bsonutil.MustHaveTag(Note{}, "TaskId")
var (
TestLogPath = "/test_log/"
)
var (
ValidRepoTypes = []string{GithubRepoType}
)
valid repositories - currently only github supported
Functions ¶
func AbortBuild ¶
AbortBuild sets the abort flag on all tasks associated with the build which are in an abortable state, and marks the build as deactivated.
func AbortPatchesWithGithubPatchData ¶
func AbortPatchesWithGithubPatchData(createdBefore time.Time, owner, repo string, prNumber int) error
AbortPatchesWithGithubPatchData runs CancelPatch on patches created before the given time, with the same pr number, and base repository. Tasks which are abortable (see model/task.IsAbortable()) will be aborted, while dispatched/running/completed tasks will not be affected
func AbortVersion ¶
AbortVersion sets the abort flag on all tasks associated with the version which are in an abortable state
func ActivateElapsedBuilds ¶
Activates any builds if their BatchTimes have elapsed.
func ActivatePreviousTask ¶
ActivatePreviousTask will set the Active state for the first task with a revision order number less than the current task's revision order number.
func AddNewBuilds ¶
func AddNewBuilds(activated bool, v *version.Version, p *Project, tasks TaskVariantPairs, generatedBy string) error
Given a patch version and a list of variant/task pairs, creates the set of new builds that do not exist yet out of the set of pairs. No tasks are added for builds which already exist (see AddNewTasksForPatch).
func AddNewBuildsForPatch ¶
func AddNewBuildsForPatch(p *patch.Patch, patchVersion *version.Version, project *Project, tasks TaskVariantPairs) error
Given a patch version and a list of variant/task pairs, creates the set of new builds that do not exist yet out of the set of pairs. No tasks are added for builds which already exist (see AddNewTasksForPatch).
func AddNewTasks ¶
func AddNewTasks(activated bool, v *version.Version, p *Project, pairs TaskVariantPairs, generatedBy string) error
Given a version and set of variant/task pairs, creates any tasks that don't exist yet, within the set of already existing builds.
func AddNewTasksForPatch ¶
func AddNewTasksForPatch(p *patch.Patch, patchVersion *version.Version, project *Project, pairs TaskVariantPairs) error
Given a patch version and set of variant/task pairs, creates any tasks that don't exist yet, within the set of already existing builds.
func AddTasksToBuild ¶
func AddTasksToBuild(b *build.Build, project *Project, v *version.Version, taskNames []string, displayNames []string, generatedBy string) (*build.Build, error)
AddTasksToBuild creates the tasks for the given build of a project
func CalculateActualMakespan ¶
CalculateActualMakespan finds the amount of time it took for the build to complete from the first task start to the last task finishing.
func ClearTaskQueue ¶
func CreateBuildFromVersion ¶
func CreateBuildFromVersion(project *Project, v *version.Version, taskIds TaskIdConfig, buildName string, activated bool, taskNames []string, displayNames []string, generatedBy string) (string, error)
CreateBuildFromVersion creates a build given all of the necessary information from the corresponding version and project and a list of tasks.
func DeactivatePreviousTasks ¶
Deactivate any previously activated but undispatched tasks for the same build variant + display name + project combination as the task.
func DeleteBuild ¶
DeleteBuild removes any record of the build by removing it and all of the tasks that are a part of it from the database.
func DoProjectActivation ¶
func FetchVersionsAndAssociatedBuilds ¶
func FetchVersionsAndAssociatedBuilds(project *Project, skip int, numVersions int) ([]version.Version, map[string][]build.Build, error)
FetchVersionsAndAssociatedBuilds is a helper function to fetch a group of versions and their associated builds. Returns the versions themselves, as well as a map of version id -> the builds that are a part of the version (unsorted).
func FinalizePatch ¶
func FinalizePatch(ctx context.Context, p *patch.Patch, requester string, githubOauthToken string) (*version.Version, error)
Finalizes a patch: Patches a remote project's configuration file if needed. Creates a version for this patch and links it. Creates builds based on the version.
func FindLastPassingVersionForBuildVariants ¶
func FindLastPassingVersionForBuildVariants(project *Project, buildVariantNames []string) (*version.Version, error)
Given a project name and a list of build variants, return the latest version on which all the given build variants succeeded. Gives up after 100 versions.
func FindMinimumQueuePositionForTask ¶
FindMinimumQueuePositionForTask finds the position of a task in the many task queues where its position is the lowest. It returns an error if the aggregation it runs fails.
func FindMostRecentLogMessages ¶
func FindMostRecentLogMessages(taskId string, execution int, numMsgs int, severities []string, msgTypes []string) ([]apimodels.LogMessage, error)
note: to ignore severity or type filtering, pass in empty slices
func FindPredictedMakespan ¶
FindPredictedMakespan, given a list of tasks that have been completed, finds the optimal makespan of that build.
func GetEstimatedStartTime ¶
GetEstimatedStartTime returns the estimated start time for a task
func GetNewRevisionOrderNumber ¶
GetNewRevisionOrderNumber gets a new revision order number for a project.
func GetOrCreateUser ¶
GetOrCreateUser fetches a user with the given userId and returns it. If no document exists for that userId, inserts it along with the provided display name and email.
func GetRawTaskLogChannel ¶
func InsertTaskJSON ¶
InsertTask creates a TaskJSON document in the plugin's collection.
func LoadProjectInto ¶
LoadProjectInto loads the raw data from the config file into project and sets the project's identifier field to identifier. Tags are evaluateed.
func MarkEnd ¶
func MarkEnd(t *task.Task, caller string, finishTime time.Time, detail *apimodels.TaskEndDetail, deactivatePrevious bool, updates *StatusChanges) error
MarkEnd updates the task as being finished, performs a stepback if necessary, and updates the build status
func MarkStart ¶
func MarkStart(t *task.Task, updates *StatusChanges) error
MarkStart updates the task, build, version and if necessary, patch documents with the task start time
func MarkTaskUndispatched ¶
func MarkVersionCompleted ¶
MarkVersionCompleted updates the status of a completed version to reflect its correct state by checking the status of its individual builds.
func NewAxisSelectorEvaluator ¶
func NewAxisSelectorEvaluator(axes []matrixAxis) *axisSelectorEvaluator
func NewParserTaskSelectorEvaluator ¶
func NewParserTaskSelectorEvaluator(tasks []parserTask) *taskSelectorEvaluator
NewParserTaskSelectorEvaluator returns a new taskSelectorEvaluator.
func NewVariantSelectorEvaluator ¶
func NewVariantSelectorEvaluator(variants []parserBV, ase *axisSelectorEvaluator) *variantSelectorEvaluator
NewVariantSelectorEvaluator returns a new taskSelectorEvaluator.
func RefreshTasksCache ¶
RefreshTasksCache updates a build document so that the tasks cache reflects the correct current state of the tasks it represents.
func RemoveProjectAlias ¶
RemoveProjectAlias removes a project alias with the given document ID from the database.
func RestartBuild ¶
RestartBuild restarts completed tasks associated with a given buildId. If abortInProgress is true, it also sets the abort flag on any in-progress tasks.
func RestartBuildTasks ¶
RestartBuildTasks restarts all the tasks associated with a given build.
func RestartVersion ¶
RestartVersion restarts completed tasks associated with a given versionId. If abortInProgress is true, it also sets the abort flag on any in-progress tasks.
func SaveUserSettings ¶
func SaveUserSettings(userId string, settings user.UserSettings) error
SaveUserSettings updates the settings stored for the given user id.
func SetBuildActivation ¶
SetBuildActivation updates the "active" state of this build and all associated tasks. It also updates the task cache for the build document.
func SetBuildPriority ¶
SetBuildPriority updates the priority field of all tasks associated with the given build id.
func SetLastNotificationsEventTime ¶
Record the last-notification time for a given project.
func SetProcessRuntimeCompleted ¶
Updates a process runtime to set recent_success to the current time. If no process with the given name exists, create it. Parameter "processName" should be a constant "mci package" name from globals.go
func SetTaskJSONTagForTask ¶
func SetUserAPIKey ¶
SetUserAPIKey updates the API key stored with a user.
func SetVersionActivation ¶
SetVersionActivation updates the "active" state of all builds and tasks associated with a version to the given setting. It also updates the task cache for all builds affected.
func SetVersionPriority ¶
func TaskHistoryPickaxe ¶
func TaskHistoryPickaxe(params PickaxeParams) ([]task.Task, error)
func TryMarkPatchBuildFinished ¶
TryMarkPatchBuildFinished attempts to mark a patch as finished if all the builds for the patch are finished as well
func TryResetTask ¶
func TryResetTask(taskId, user, origin string, detail *apimodels.TaskEndDetail) error
TryResetTask resets a task
func UntrackStaleProjectRefs ¶
UntrackStaleProjectRefs sets all project_refs in the db not in the array of project identifiers to "untracked."
func UpdateBuildAndVersionStatusForTask ¶
func UpdateBuildAndVersionStatusForTask(taskId string, updates *StatusChanges) error
UpdateBuildStatusForTask finds all the builds for a task and updates the status of the build based on the task's status.
func UpdateLastRevision ¶
UpdateLastRevision updates the last created revision of a project.
func UpdateOneNotification ¶
func UpdateOneNotification(query interface{}, update interface{}) error
func UpdateStaticDistro ¶
func UpdateStaticHosts ¶
func UpdateStaticHosts() error
func UpsertOneProcessRuntime ¶
func UpsertOneProcessRuntime(query interface{}, update interface{}) error
func ValidateHost ¶
ValidateHost ensures that the host exists in the database and that, if a secret is provided, it matches the secret in the database. If a task ID is provided, it ensures that the host should be running this task. It returns a host, http status code, and error.
func ValidateTVPairs ¶
ValidateTVPairs checks that all of a set of variant/task pairs exist in a given project.
func ValidateTask ¶
ValidateTask ensures that a task ID is set and corresponds to a task in the database. If checkSecret is true, it also validates the task's secret. It returns a task, http status code, and error.
Types ¶
type AlertConfig ¶
type AlertConfig struct { Provider string `bson:"provider" json:"provider"` //e.g. e-mail, flowdock, SMS // Data contains provider-specific on how a notification should be delivered. // Typed as bson.M so that the appropriate provider can parse out necessary details Settings bson.M `bson:"settings" json:"settings"` }
func (AlertConfig) GetSettingsMap ¶
func (a AlertConfig) GetSettingsMap() map[string]string
type ArtifactInstructions ¶
type AverageTimeByDistroAndRequester ¶
type AverageTimeByDistroAndRequester struct { Distro string `bson:"distro" json:"distro"` Requester string `bson:"requester" json:"requester"` AverageTime time.Duration `bson:"average_time" json:"average_time"` }
AverageTimeByDistroAndRequester is the average time of a task.
type AverageTimes ¶
type AverageTimes struct { Times []AverageTimeByDistroAndRequester `json:"times"` message.Base `json:"metadata,omitempty"` // contains filtered or unexported fields }
AverageTimes implements message.Composer.
func AverageTaskLatency ¶
func AverageTaskLatency(since time.Duration) (*AverageTimes, error)
AverageTaskLatency finds the average task latency by distro and requester.
func (*AverageTimes) Loggable ¶
func (a *AverageTimes) Loggable() bool
func (*AverageTimes) Raw ¶
func (a *AverageTimes) Raw() interface{}
func (*AverageTimes) String ¶
func (a *AverageTimes) String() string
type AvgBucket ¶
type AvgBucket struct { Id int `bson:"_id" json:"index" csv:"index"` AverageTime time.Duration `bson:"a" json:"avg" csv:"avg_time"` NumberTasks int `bson:"n" json:"number_tasks" csv:"number_tasks"` Start time.Time `json:"start_time" csv:"start_time"` End time.Time `json:"end_time" csv:"end_time"` }
AvgBucket is one element in the results of a list of buckets that are created from the agg query.
type AvgBuckets ¶
type AvgBuckets []AvgBucket
func AverageStatistics ¶
func AverageStatistics(distroId string, bounds FrameBounds) (AvgBuckets, error)
AverageStatistics uses an agg pipeline that creates buckets given a time frame and finds the average scheduled -> start time for that time frame. One thing to note is that the average time is in milliseconds, not nanoseconds and must be converted.
type Bucket ¶
type Bucket struct { TotalTime time.Duration `json:"total_time"` Resources []ResourceInfo `json:"resources"` }
Bucket stores the total amount of time in a given bucket and a list of the resources that are in that bucket
func CreateHostBuckets ¶
func CreateHostBuckets(hosts []host.Host, bounds FrameBounds) ([]Bucket, []error)
CreateHostBuckets takes in a list of hosts with their creation and termination times and returns durations bucketed based on a start time, number of buckets and the size of each bucket
func CreateTaskBuckets ¶
func CreateTaskBuckets(tasks []task.Task, oldTasks []task.Task, bounds FrameBounds) ([]Bucket, []error)
CreateTaskBuckets takes in a list of tasks with their start and finish times and returns durations bucketed based on a start time, number of buckets and the size of each bucket
type BuildStatusDiff ¶
type BuildStatusDiff struct { Name string `json:"name"` Diff StatusDiff `json:"diff"` Tasks []TaskStatusDiff `json:"tasks"` }
BuildStatusDiff stores a diff of two build statuses.
func StatusDiffBuilds ¶
func StatusDiffBuilds(original, patch *build.Build) BuildStatusDiff
StatusDiffBuilds takes two builds and returns a diff of their results for easy comparison and analysis.
type BuildVariant ¶
type BuildVariant struct { Name string `yaml:"name,omitempty" bson:"name"` DisplayName string `yaml:"display_name,omitempty" bson:"display_name"` Expansions map[string]string `yaml:"expansions,omitempty" bson:"expansions"` Modules []string `yaml:"modules,omitempty" bson:"modules"` Disabled bool `yaml:"disabled,omitempty" bson:"disabled"` Tags []string `yaml:"tags,omitempty" bson:"tags"` Push bool `yaml:"push,omitempty" bson:"push"` // Use a *int for 2 possible states // nil - not overriding the project setting // non-nil - overriding the project setting with this BatchTime BatchTime *int `yaml:"batchtime,omitempty" bson:"batchtime,omitempty"` // Use a *bool so that there are 3 possible states: // 1. nil = not overriding the project setting (default) // 2. true = overriding the project setting with true // 3. false = overriding the project setting with false Stepback *bool `yaml:"stepback,omitempty" bson:"stepback,omitempty"` // the default distros. will be used to run a task if no distro field is // provided for the task RunOn []string `yaml:"run_on,omitempty" bson:"run_on"` // all of the tasks/groups to be run on the build variant, compile through tests. Tasks []BuildVariantTaskUnit `yaml:"tasks,omitempty" bson:"tasks"` DisplayTasks []DisplayTask `yaml:"display_tasks,omitempty" bson:"display_tasks,omitempty"` }
func (BuildVariant) Get ¶
func (b BuildVariant) Get(name string) (BuildVariantTaskUnit, error)
func (*BuildVariant) GetDisplayTaskNamek ¶
func (bv *BuildVariant) GetDisplayTaskNamek(execTask string) string
type BuildVariantHistoryIterator ¶
type BuildVariantHistoryIterator interface {
GetItems(beforeCommit *version.Version, numCommits int) ([]bson.M, []version.Version, error)
}
Interface around getting task and version history for a given build variant in a given project.
func NewBuildVariantHistoryIterator ¶
func NewBuildVariantHistoryIterator(buildVariantInTask string, buildVariantInVersion string, projectName string) BuildVariantHistoryIterator
Since version currently uses build variant display name and task uses build variant name, we need both.
type BuildVariantTaskUnit ¶
type BuildVariantTaskUnit struct { // Name has to match the name field of one of the tasks or groups specified at // the project level, or an error will be thrown Name string `yaml:"name,omitempty" bson:"name"` IsGroup bool `yaml:"-" bson:"-"` GroupName string `yaml:"-" bson:"-"` // fields to overwrite ProjectTask settings. Patchable *bool `yaml:"patchable,omitempty" bson:"patchable,omitempty"` Priority int64 `yaml:"priority,omitempty" bson:"priority"` DependsOn []TaskUnitDependency `yaml:"depends_on,omitempty" bson:"depends_on"` Requires []TaskUnitRequirement `yaml:"requires,omitempty" bson:"requires"` // the distros that the task can be run on Distros []string `yaml:"distros,omitempty" bson:"distros"` // currently unsupported (TODO EVG-578) ExecTimeoutSecs int `yaml:"exec_timeout_secs,omitempty" bson:"exec_timeout_secs"` Stepback *bool `yaml:"stepback,omitempty" bson:"stepback,omitempty"` }
Unmarshalled from the "tasks" list in an individual build variant. Can be either a task or task group
func CreateTasksFromGroup ¶
func CreateTasksFromGroup(in BuildVariantTaskUnit, proj *Project) []BuildVariantTaskUnit
func (*BuildVariantTaskUnit) Populate ¶
func (bvt *BuildVariantTaskUnit) Populate(pt ProjectTask)
Populate updates the base fields of the BuildVariantTaskUnit with fields from the project task definition.
func (*BuildVariantTaskUnit) UnmarshalYAML ¶
func (bvt *BuildVariantTaskUnit) UnmarshalYAML(unmarshal func(interface{}) error) error
UnmarshalYAML allows tasks to be referenced as single selector strings. This works by first attempting to unmarshal the YAML into a string and then falling back to the BuildVariantTaskUnit struct.
type BuildVariants ¶
type BuildVariants []BuildVariant
func (BuildVariants) Get ¶
func (b BuildVariants) Get(name string) (BuildVariant, error)
func (BuildVariants) Len ¶
func (b BuildVariants) Len() int
func (BuildVariants) Less ¶
func (b BuildVariants) Less(i, j int) bool
func (BuildVariants) Swap ¶
func (b BuildVariants) Swap(i, j int)
type Context ¶
type Context struct { Task *task.Task Build *build.Build Version *version.Version Patch *patch.Patch ProjectRef *ProjectRef // contains filtered or unexported fields }
Context is the set of all the related entities in a task/build/version/project hierarchy. Using the LoadContext function, all the other applicable fields in the Context can inferred and populated from the id of any one of the fields.
func LoadContext ¶
LoadContext builds a Context from the set of given resource ID's by inferring all the relationships between them - for example, e.g. loading a project based on the the task, or the version based on the patch, etc.
func (*Context) GetProject ¶
GetProject returns the project associated with the Context.
type DisplayTask ¶
type EmailAlertData ¶
type EmailAlertData struct {
Recipients []string `bson:"recipients"`
}
type ExhaustedIterator ¶
type ExhaustedIterator struct {
Before, After bool
}
type FrameBounds ¶
type FrameBounds struct { StartTime time.Time EndTime time.Time BucketSize time.Duration NumberBuckets int }
FrameBounds is a set of information about the inputs of buckets
func CalculateBounds ¶
func CalculateBounds(daysBack, granularity int) FrameBounds
CalculateBounds takes in a daysBack and granularity and returns the start time, end time, bucket size, and number of buckets
type GeneratedProject ¶
type GeneratedProject struct { BuildVariants []parserBV `yaml:"buildvariants"` Tasks []parserTask `yaml:"tasks"` Functions map[string]*YAMLCommandSet `yaml:"functions"` TaskGroups []parserTaskGroup `yaml:"task_groups"` TaskID string }
GeneratedProject is a subset of the Project type, and is generated from the JSON from a `generate.tasks` command.
func MergeGeneratedProjects ¶
func MergeGeneratedProjects(projects []GeneratedProject) *GeneratedProject
MergeGeneratedProjects takes a slice of generated projects and returns a single, deduplicated project.
func ParseProjectFromJSON ¶
func ParseProjectFromJSON(data []byte) (GeneratedProject, error)
ParseProjectFromJSON returns a GeneratedTasks type from JSON. We use the YAML parser instead of the JSON parser because the JSON parser will not properly unmarshal into a struct with multiple fields as options, like the YAMLCommandSet.
func (*GeneratedProject) NewVersion ¶
func (g *GeneratedProject) NewVersion() (*Project, *version.Version, *task.Task, *projectMaps, error)
NewVersion adds the buildvariants, tasks, and functions from a generated project config to a project.
type GithubHook ¶
type GithubHook struct { HookID int `bson:"hook_id"` Owner string `bson:"owner"` Repo string `bson:"repo"` }
func FindGithubHook ¶
func FindGithubHook(owner, repo string) (*GithubHook, error)
func (*GithubHook) Insert ¶
func (h *GithubHook) Insert() error
type HostTaskInconsistency ¶
type HostTaskInconsistency struct { Host string HostTaskCache string Task string TaskHostCache string }
HostTaskInconsistency represents a mismatch between task and host documents. It contains both the host and task's view of their relationship. Implements the Error interface, which returns a full string describing the nature of the mismatch.
func AuditHostTaskConsistency ¶
func AuditHostTaskConsistency() ([]HostTaskInconsistency, error)
AuditHostTaskConsistency finds all running tasks and running hosts and compares their caches of what host/task they are assigned to. Returns a slice of any mappings that are not 1:1 and any errors that occur.
NOTE: the error returned ONLY represents issues communicating with the database. HostTaskInconsistency implements the error interface, but it is up to the caller to cast the inconsistencies into an error type if they desire.
func (HostTaskInconsistency) Error ¶
func (i HostTaskInconsistency) Error() string
Error returns a human-readible explanation of a HostTaskInconsistency.
type HostUtilizationBucket ¶
type HostUtilizationBucket struct { StaticHost time.Duration `json:"static_host" csv:"static_host"` DynamicHost time.Duration `json:"dynamic_host" csv:"dynamic_host"` Task time.Duration `json:"task" csv:"task"` StartTime time.Time `json:"start_time" csv:"start_time"` EndTime time.Time `json:"end_time" csv:"end_time"` }
HostUtilizationBucket represents an aggregate view of the hosts and tasks Bucket for a given time frame.
func CreateAllHostUtilizationBuckets ¶
func CreateAllHostUtilizationBuckets(daysBack, granularity int) ([]HostUtilizationBucket, error)
CreateAllHostUtilizationBuckets aggregates each bucket by creating a time frame given the number of days back and the granularity wanted (ie. days, minutes, seconds, hours) all in seconds. It returns a list of Host utilization information for each bucket.
type Module ¶
type Module struct { Name string `yaml:"name,omitempty" bson:"name"` Branch string `yaml:"branch,omitempty" bson:"branch"` Repo string `yaml:"repo,omitempty" bson:"repo"` Prefix string `yaml:"prefix,omitempty" bson:"prefix"` Ref string `yaml:"ref,omitempty" bson:"ref"` }
func (*Module) GetRepoOwnerAndName ¶
type Note ¶
type Note struct { TaskId string `bson:"_id" json:"-"` UnixNanoTime int64 `bson:"time" json:"time"` Content string `bson:"content" json:"content"` }
Note contains arbitrary information entered by an Evergreen user, scope to a task.
func NoteForTask ¶
NoteForTask returns the note for the given task Id, if it exists.
type NotificationHistory ¶
type NotificationHistory struct { Id bson.ObjectId `bson:"_id,omitempty"` PrevNotificationId string `bson:"p_nid"` CurrNotificationId string `bson:"c_nid"` NotificationName string `bson:"n_name"` NotificationType string `bson:"n_type"` NotificationTime time.Time `bson:"n_time"` NotificationProject string `bson:"n_branch"` NotificationRequester string `bson:"n_requester"` }
func FindNotificationRecord ¶
func FindNotificationRecord(notificationId, notificationName, notificationType, notificationProject, notificationRequester string) (*NotificationHistory, error)
func FindOneNotification ¶
func FindOneNotification(query interface{}, projection interface{}) (*NotificationHistory, error)
func (*NotificationHistory) Insert ¶
func (self *NotificationHistory) Insert() error
type PerfCommitInfo ¶
type PerfCommitInfo struct { Author string `json:"author"` Message string `json:"message"` CreateTime time.Time `json:"create_time"` Revision string `json:"revision"` VersionId string `json:"version_id"` }
CommitInfo represents the information about the commit associated with the version of a given project. This is displayed at the top of each header for each project.
type PerfTaskForVersionId ¶
type PerfTaskForVersionId struct { VersionId string `bson:"vid"` RevisionOrderNumber int `bson:"r"` }
TaskForVersionId contains the id information about the group of tasks including the version id and the revision order number.
type PerfTaskInfo ¶
type PerfTaskInfo struct { TaskId string `bson:"t_id" json:"task_id"` TaskName string `bson:"tn" json:"task_name"` Variant string `bson:"var" json:"variant"` Data interface{} `bson:"d" json:"data"` }
TaskInfo contains the relevant TaskJSON information the tasks associated with a version.
type PerfTasksForVersion ¶
type PerfTasksForVersion struct { Id PerfTaskForVersionId `bson:"_id" json:"id"` Tasks []PerfTaskInfo `bson:"t" json:"tasks"` }
TasksForVersion is a list of tasks that are associated with a given version id.
type PerfVersionData ¶
type PerfVersionData struct { JSONTasks []PerfTaskInfo `json:"json_tasks"` Commit PerfCommitInfo `json:"commit_info"` LastRevision bool `json:"last_revision"` }
VersionData includes the TaskInfo, and Commit information for a given version.
func PerfGetTasksForLatestVersion ¶
func PerfGetTasksForLatestVersion(project, name string, skip int) (*PerfVersionData, error)
getTasksForLatestVersion sends back the TaskJSON data associated with the latest version.
type PickaxeParams ¶
type PluginCommandConf ¶
type PluginCommandConf struct { Function string `yaml:"func,omitempty" bson:"func"` // Type is used to differentiate between setup related commands and actual // testing commands. Type string `yaml:"type,omitempty" bson:"type"` // DisplayName is a human readable description of the function of a given // command. DisplayName string `yaml:"display_name,omitempty" bson:"display_name"` // Command is a unique identifier for the command configuration. It consists of a // plugin name and a command name. Command string `yaml:"command,omitempty" bson:"command"` // Variants is used to enumerate the particular sets of buildvariants to run // this command configuration on. If it is empty, it is run on all defined // variants. Variants []string `yaml:"variants,omitempty" bson:"variants"` // TimeoutSecs indicates the maximum duration the command is allowed to run for. TimeoutSecs int `yaml:"timeout_secs,omitempty" bson:"timeout_secs"` // Params are used to supply configuratiion specific information. Params map[string]interface{} `yaml:"params,omitempty" bson:"params"` // Vars defines variables that can be used within commands. Vars map[string]string `yaml:"vars,omitempty" bson:"vars"` }
func (PluginCommandConf) GetDisplayName ¶
func (p PluginCommandConf) GetDisplayName() string
GetDisplayName returns the display name of the plugin command. If none is defined, it returns the command's identifier.
func (PluginCommandConf) GetType ¶
func (p PluginCommandConf) GetType(prj *Project) string
GetType returns the type of this command if one is explicitly specified. If no type is specified, it checks the default command type of the project. If one is specified, it returns that, if not, it returns the DefaultCommandType.
func (PluginCommandConf) RunOnVariant ¶
func (p PluginCommandConf) RunOnVariant(variant string) bool
RunOnVariant returns true if the plugin command should run on variant; returns false otherwise
type ProcessRuntime ¶
type ProcessRuntime struct { Id string `bson:"_id" json:"id"` FinishedAt time.Time `bson:"finished_at" json:"finished_at"` Runtime time.Duration `bson:"runtime" json:"runtime"` }
ProcessRuntime tracks the most recent success ping by a given MCI process by storing it in mongodb. Id is a package name (see globals.go), FinishedAt is a time representing the most recent completion of that process, and Runtime is the duration of time the process took to run
func FindAllLateProcessRuntimes ¶
func FindAllLateProcessRuntimes(cutoff time.Time) ([]ProcessRuntime, error)
Finds all runtimes that were updated before (less than) given time.
func FindAllProcessRuntimes ¶
func FindAllProcessRuntimes(query interface{}, projection interface{}) ([]ProcessRuntime, error)
func FindEveryProcessRuntime ¶
func FindEveryProcessRuntime() ([]ProcessRuntime, error)
Returns list of all process runtime entries
func FindOneProcessRuntime ¶
func FindOneProcessRuntime(query interface{}, projection interface{}) (*ProcessRuntime, error)
func FindProcessRuntime ¶
func FindProcessRuntime(id string) (*ProcessRuntime, error)
Finds a process runtime by Id
type Project ¶
type Project struct { Enabled bool `yaml:"enabled,omitempty" bson:"enabled"` Stepback bool `yaml:"stepback,omitempty" bson:"stepback"` BatchTime int `yaml:"batchtime,omitempty" bson:"batch_time"` Owner string `yaml:"owner,omitempty" bson:"owner_name"` Repo string `yaml:"repo,omitempty" bson:"repo_name"` RemotePath string `yaml:"remote_path,omitempty" bson:"remote_path"` RepoKind string `yaml:"repokind,omitempty" bson:"repo_kind"` Branch string `yaml:"branch,omitempty" bson:"branch_name"` Identifier string `yaml:"identifier,omitempty" bson:"identifier"` DisplayName string `yaml:"display_name,omitempty" bson:"display_name"` CommandType string `yaml:"command_type,omitempty" bson:"command_type"` Ignore []string `yaml:"ignore,omitempty" bson:"ignore"` Pre *YAMLCommandSet `yaml:"pre,omitempty" bson:"pre"` Post *YAMLCommandSet `yaml:"post,omitempty" bson:"post"` Timeout *YAMLCommandSet `yaml:"timeout,omitempty" bson:"timeout"` CallbackTimeout int `yaml:"callback_timeout_secs,omitempty" bson:"callback_timeout_secs"` Modules []Module `yaml:"modules,omitempty" bson:"modules"` BuildVariants BuildVariants `yaml:"buildvariants,omitempty" bson:"build_variants"` Functions map[string]*YAMLCommandSet `yaml:"functions,omitempty" bson:"functions"` TaskGroups []TaskGroup `yaml:"task_groups,omitempty" bson:"task_groups"` Tasks []ProjectTask `yaml:"tasks,omitempty" bson:"tasks"` ExecTimeoutSecs int `yaml:"exec_timeout_secs,omitempty" bson:"exec_timeout_secs"` // Flag that indicates a project as requiring user authentication Private bool `yaml:"private,omitempty" bson:"private"` }
func FindProject ¶
func FindProject(revision string, projectRef *ProjectRef) (*Project, error)
func MakePatchedConfig ¶
func MakePatchedConfig(ctx context.Context, p *patch.Patch, remoteConfigPath, projectConfig string) ( *Project, error)
MakePatchedConfig takes in the path to a remote configuration a stringified version of the current project and returns an unmarshalled version of the project with the patch applied
func (*Project) BuildProjectTVPairs ¶
func (*Project) BuildProjectTVPairsWithAlias ¶
BuildProjectTVPairsWithAlias returns variants and tasks for a project alias.
func (*Project) FindAllBuildVariantTasks ¶
func (p *Project) FindAllBuildVariantTasks() []BuildVariantTaskUnit
FindAllBuildVariantTasks returns every BuildVariantTaskUnit, fully populated, for all variants of a project.
func (*Project) FindAllVariants ¶
func (*Project) FindBuildVariant ¶
func (p *Project) FindBuildVariant(build string) *BuildVariant
func (*Project) FindDistroNameForTask ¶
func (*Project) FindProjectTask ¶
func (p *Project) FindProjectTask(name string) *ProjectTask
func (*Project) FindTaskForVariant ¶
func (p *Project) FindTaskForVariant(task, variant string) *BuildVariantTaskUnit
func (*Project) FindTaskGroup ¶
FindTaskGroup returns a specific task group from a project
func (*Project) FindTasksForVariant ¶
func (*Project) FindVariantsWithTask ¶
FindVariantsWithTask returns the name of each variant containing the given task name.
func (Project) GetSpecForTask ¶
func (p Project) GetSpecForTask(name string) ProjectTask
GetSpecForTask returns a ProjectTask spec for the given name. Returns an empty ProjectTask if none exists.
func (*Project) GetVariantMappings ¶
func (*Project) GetVariantsWithTask ¶
GetVariantsWithTask returns the names of all buildvariants that contain a certain task. Searches tasks, task groups, and display tasks
func (*Project) IgnoresAllFiles ¶
IgnoresAllFiles takes in a slice of filepaths and checks to see if all files are matched by the project's Ignore regular expressions.
func (*Project) IsGenerateTask ¶
IsGenerateTask indicates that the task generates other tasks, which the scheduler will use to prioritize this task.
type ProjectAlias ¶
type ProjectAlias struct { ID bson.ObjectId `bson:"_id" json:"_id"` ProjectID string `bson:"project_id" json:"project_id"` Alias string `bson:"alias" json:"alias"` Variant string `bson:"variant" json:"variant"` Task string `bson:"task,omitempty" json:"task"` Tags []string `bson:"tags,omitempty" json:"tags"` }
ProjectAlias defines a single alias mapping an alias name to two regexes which define the variants and tasks for the alias. Users can use these aliases for operations within the system.
For example, a user can specify that alias with the CLI tool so that a project admin can define a set of default builders for patch builds. Pull request testing uses a special alias, "__github" to determine the default variants and tasks to run in a patch build.
An alias can be specified multiple times. The resulting variant/task combinations are the union of the aliases. For example, a user might set the following:
ALIAS VARIANTS TASKS __github .*linux.* .*test.* __github ^ubuntu1604.*$ ^compile.*$
This will cause a GitHub pull request to create and finalize a patch which runs all tasks containing the string “test” on all variants containing the string “linux”; and to run all tasks beginning with the string “compile” to run on all variants beginning with the string “ubuntu1604”.
func FindAliasInProject ¶
func FindAliasInProject(projectID, alias string) ([]ProjectAlias, error)
FindAliasInProject finds all aliases with a given name for a project.
func FindAliasesForProject ¶
func FindAliasesForProject(projectID string) ([]ProjectAlias, error)
FindAliasesForProject fetches all aliases for a given project
func (*ProjectAlias) Upsert ¶
func (p *ProjectAlias) Upsert() error
type ProjectNotificationTime ¶
type ProjectRef ¶
type ProjectRef struct { Owner string `bson:"owner_name" json:"owner_name" yaml:"owner"` Repo string `bson:"repo_name" json:"repo_name" yaml:"repo"` Branch string `bson:"branch_name" json:"branch_name" yaml:"branch"` RepoKind string `bson:"repo_kind" json:"repo_kind" yaml:"repokind"` Enabled bool `bson:"enabled" json:"enabled" yaml:"enabled"` Private bool `bson:"private" json:"private" yaml:"private"` BatchTime int `bson:"batch_time" json:"batch_time" yaml:"batchtime"` RemotePath string `bson:"remote_path" json:"remote_path" yaml:"remote_path"` Identifier string `bson:"identifier" json:"identifier" yaml:"identifier"` DisplayName string `bson:"display_name" json:"display_name" yaml:"display_name"` LocalConfig string `bson:"local_config" json:"local_config" yaml:"local_config"` DeactivatePrevious bool `bson:"deactivate_previous" json:"deactivate_previous" yaml:"deactivate_previous"` // TracksPushEvents, if true indicates that Repotracker is triggered by // Github PushEvents for this project, instead of the Repotracker runner TracksPushEvents bool `bson:"tracks_push_events" json:"tracks_push_events" yaml:"tracks_push_events"` PRTestingEnabled bool `bson:"pr_testing_enabled" json:"pr_testing_enabled" yaml:"pr_testing_enabled"` //Tracked determines whether or not the project is discoverable in the UI Tracked bool `bson:"tracked" json:"tracked"` PatchingDisabled bool `bson:"patching_disabled" json:"patching_disabled"` // Admins contain a list of users who are able to access the projects page. Admins []string `bson:"admins" json:"admins"` // The "Alerts" field is a map of trigger (e.g. 'task-failed') to // the set of alert deliveries to be processed for that trigger. Alerts map[string][]AlertConfig `bson:"alert_settings" json:"alert_config,omitempty"` // TODO: remove the alerts field above NotifyOnBuildFailure bool `bson:"notify_on_failure" json:"notify_on_failure"` // RepoDetails contain the details of the status of the consistency // between what is in GitHub and what is in Evergreen RepotrackerError *RepositoryErrorDetails `bson:"repotracker_error" json:"repotracker_error"` }
The ProjectRef struct contains general information, independent of any revision control system, needed to track a given project
func FindAllProjectRefs ¶
func FindAllProjectRefs() ([]ProjectRef, error)
FindAllProjectRefs returns all project refs in the db
func FindAllTrackedProjectRefs ¶
func FindAllTrackedProjectRefs() ([]ProjectRef, error)
FindAllTrackedProjectRefs returns all project refs in the db that are currently being tracked (i.e. their project files still exist)
func FindFirstProjectRef ¶
func FindFirstProjectRef() (*ProjectRef, error)
func FindOneProjectRef ¶
func FindOneProjectRef(identifier string) (*ProjectRef, error)
FindOneProjectRef gets a project ref given the owner name, the repo name and the project name
func FindOneProjectRefByRepoAndBranchWithPRTesting ¶
func FindOneProjectRefByRepoAndBranchWithPRTesting(owner, repo, branch string) (*ProjectRef, error)
FindOneProjectRefByRepoAndBranch finds a signle ProjectRef with matching repo/branch that is enabled and setup for PR testing. If more than one is found, an error is returned
func FindProjectRefs ¶
func FindProjectRefs(key string, limit int, sortDir int, isAuthenticated bool) ([]ProjectRef, error)
FindProjectRefs returns limit refs starting at project identifier key in the sortDir direction
func FindProjectRefsByRepoAndBranch ¶
func FindProjectRefsByRepoAndBranch(owner, repoName, branch string) ([]ProjectRef, error)
FindProjectRefsByRepoAndBranch finds ProjectRefs with matching repo/branch that are enabled and setup for PR testing
func (*ProjectRef) GetBatchTime ¶
func (p *ProjectRef) GetBatchTime(variant *BuildVariant) int
GetBatchTime returns the Batch Time of the ProjectRef
func (*ProjectRef) HTTPLocation ¶
func (projectRef *ProjectRef) HTTPLocation() (*url.URL, error)
HTTPLocation creates a url.URL for HTTPS checkout of a Github repository
func (*ProjectRef) Insert ¶
func (projectRef *ProjectRef) Insert() error
func (*ProjectRef) IsAdmin ¶
func (p *ProjectRef) IsAdmin(userID string, settings evergreen.Settings) bool
func (*ProjectRef) Location ¶
func (projectRef *ProjectRef) Location() (string, error)
Location generates and returns the ssh hostname and path to the repo.
func (*ProjectRef) String ¶
func (projectRef *ProjectRef) String() string
ProjectRef returns a string representation of a ProjectRef
func (*ProjectRef) Upsert ¶
func (projectRef *ProjectRef) Upsert() error
Upsert updates the project ref in the db if an entry already exists, overwriting the existing ref. If no project ref exists, one is created
type ProjectTask ¶
type ProjectTask struct { Name string `yaml:"name,omitempty" bson:"name"` Priority int64 `yaml:"priority,omitempty" bson:"priority"` ExecTimeoutSecs int `yaml:"exec_timeout_secs,omitempty" bson:"exec_timeout_secs"` DependsOn []TaskUnitDependency `yaml:"depends_on,omitempty" bson:"depends_on"` Requires []TaskUnitRequirement `yaml:"requires,omitempty" bson:"requires"` Commands []PluginCommandConf `yaml:"commands,omitempty" bson:"commands"` Tags []string `yaml:"tags,omitempty" bson:"tags"` // Use a *bool so that there are 3 possible states: // 1. nil = not overriding the project setting (default) // 2. true = overriding the project setting with true // 3. false = overriding the project setting with false Patchable *bool `yaml:"patchable,omitempty" bson:"patchable,omitempty"` Stepback *bool `yaml:"stepback,omitempty" bson:"stepback,omitempty"` }
Unmarshalled from the "tasks" list in the project file
type ProjectVars ¶
type ProjectVars struct { //Should match the identifier of the project it refers to Id string `bson:"_id" json:"_id"` //The actual mapping of variables for this project Vars map[string]string `bson:"vars" json:"vars"` //PrivateVars keeps track of which variables are private and should therefore not //be returned to the UI server. PrivateVars map[string]bool `bson:"private_vars" json:"private_vars"` }
ProjectVars holds a map of variables specific to a given project. They can be fetched at run time by the agent, so that settings which are sensitive or subject to frequent change don't need to be hard-coded into yml files.
func FindOneProjectVars ¶
func FindOneProjectVars(projectId string) (*ProjectVars, error)
func (*ProjectVars) Insert ¶
func (projectVars *ProjectVars) Insert() error
func (*ProjectVars) RedactPrivateVars ¶
func (projectVars *ProjectVars) RedactPrivateVars()
func (*ProjectVars) Upsert ¶
func (projectVars *ProjectVars) Upsert() (*mgo.ChangeInfo, error)
type PushLog ¶
type PushLog struct { Id bson.ObjectId `bson:"_id,omitempty"` //the permanent location of the pushed file. Location string `bson:"location"` //the task id of the push stage TaskId string `bson:"task_id"` CreateTime time.Time `bson:"create_time"` Revision string `bson:"githash"` Status string `bson:"status"` //copied from version for the task RevisionOrderNumber int `bson:"order"` }
func FindOnePushLog ¶
func FindPushLogAfter ¶
FindNewerPushLog returns a PushLog item if there is a file pushed from this version or a newer one, or one already in progress.
func (*PushLog) UpdateStatus ¶
type Repository ¶
type Repository struct { Project string `bson:"_id"` LastRevision string `bson:"last_revision"` RevisionOrderNumber int `bson:"last_commit_number"` }
Repository contains fields used to track projects.
func FindRepository ¶
func FindRepository(projectId string) (*Repository, error)
FindRepository gets the repository object of a project.
type RepositoryErrorDetails ¶
type RepositoryErrorDetails struct { Exists bool `bson:"exists" json:"exists"` InvalidRevision string `bson:"invalid_revision" json:"invalid_revision"` MergeBaseRevision string `bson:"merge_base_revision" json:"merge_base_revision"` }
RepositoryErrorDetails indicates whether or not there is an invalid revision and if there is one, what the guessed merge base revision is.
type ResourceInfo ¶
type ResourceInfo struct { Id string `json:"id"` Start time.Time `json:"start"` End time.Time `json:"end"` Data interface{} `json:"data"` }
ResourceInfo contains the meta data about a given resource This includes the id of the resource, the overall start and finish time and any extra data that should be included about the resource.
type RestartTaskOptions ¶
type RestartTaskOptions struct { DryRun bool `bson:"dry_run" json:"dry_run" yaml:"dry_run"` OnlyRed bool `bson:"only_red" json:"only_red" yaml:"only_red"` OnlyPurple bool `bson:"only_purple" json:"only_purple" yaml:"only_purple"` StartTime time.Time `bson:"start_time" json:"start_time" yaml:"start_time"` EndTime time.Time `bson:"end_time" json:"end_time" yaml:"end_time"` User string `bson:"user" json:"user" yaml:"user"` }
type RestartTaskResults ¶
func RestartFailedTasks ¶
func RestartFailedTasks(opts RestartTaskOptions) (RestartTaskResults, error)
RestartFailedTasks attempts to restart failed tasks that started between 2 times It returns a slice of task IDs that were successfully restarted as well as a slice of task IDs that failed to restart opts.dryRun will return the tasks that will be restarted if sent true opts.red and opts.purple will only restart tasks that were failed due to the test or due to the system, respectively
type S3CopyRequest ¶
type S3CopyRequest struct { AwsKey string `json:"aws_key"` AwsSecret string `json:"aws_secret"` S3SourceBucket string `json:"s3_source_bucket"` S3SourcePath string `json:"s3_source_path"` S3DestinationBucket string `json:"s3_destination_bucket"` S3DestinationPath string `json:"s3_destination_path"` S3DisplayName string `json:"display_name"` }
S3CopyRequest holds information necessary for the API server to complete an S3 copy request; namely, an S3 key/secret, a source and a destination path
type Selector ¶
type Selector []selectCriterion
Selector holds the information necessary to build a set of elements based on name and tag combinations.
func ParseSelector ¶
ParseSelector reads in a set of selection criteria defined as a string. This function only parses; it does not evaluate. Returns nil on an empty selection string.
type StatusChanges ¶
type StatusDetailsDiff ¶
type StatusDetailsDiff struct { Original apimodels.TaskEndDetail `json:"original"` Patch apimodels.TaskEndDetail `json:"patch"` }
StatusDetailsDiff stores a pairing of status details for easy visualization/aggregation later.
type StatusDiff ¶
StatusDiff stores a pairing of status strings for easy visualization/aggregation later.
type StuckHostInconsistency ¶
type StuckHostInconsistency struct { Host string `bson:"host_id"` RunningTask string `bson:"running_task"` TaskStatus string `bson:"task_status"` }
StuckHostInconsistncy represents hosts that have running tasks but the tasks have been marked as completed.
func CheckStuckHosts ¶
func CheckStuckHosts() ([]StuckHostInconsistency, error)
CheckStuckHosts queries for hosts that tasks that are completed but that still have them as a running task
func (StuckHostInconsistency) Error ¶
func (shi StuckHostInconsistency) Error() string
type TVPair ¶
TVPair is a helper type for mapping bv/task pairs to ids.
func IncludePatchDependencies ¶
IncludePatchDependencies takes a project and a slice of variant/task pairs names and returns the expanded set of variant/task pairs to include all the dependencies/requirements for the given set of tasks. If any dependency is cross-variant, it will include the variant and task for that dependency.
type TVPairSet ¶
type TVPairSet []TVPair
type TagContainer ¶
type TagContainer struct {
Tag string `bson:"_id" json:"tag"`
}
func GetTaskJSONTags ¶
func GetTaskJSONTags(taskId string) ([]TagContainer, error)
GetTags finds TaskJSONs that have tags in the project associated with a given task.
type TaskConfig ¶
type TaskConfig struct { Distro *distro.Distro Version *version.Version ProjectRef *ProjectRef Project *Project Task *task.Task BuildVariant *BuildVariant Expansions *util.Expansions Redacted map[string]bool WorkDir string GithubPatchData patch.GithubPatch Timeout *Timeout // contains filtered or unexported fields }
func NewTaskConfig ¶
func (*TaskConfig) GetExecTimeout ¶
func (t *TaskConfig) GetExecTimeout() int
func (*TaskConfig) GetIdleTimeout ¶
func (t *TaskConfig) GetIdleTimeout() int
func (*TaskConfig) GetWorkingDirectory ¶
func (c *TaskConfig) GetWorkingDirectory(dir string) (string, error)
func (*TaskConfig) SetExecTimeout ¶
func (t *TaskConfig) SetExecTimeout(timeout int)
func (*TaskConfig) SetIdleTimeout ¶
func (t *TaskConfig) SetIdleTimeout(timeout int)
type TaskDetails ¶
type TaskGroup ¶
type TaskGroup struct { Name string `yaml:"name" bson:"name"` // data about the task group MaxHosts int `yaml:"max_hosts" bson:"max_hosts"` SetupGroup *YAMLCommandSet `yaml:"setup_group" bson:"setup_group"` TeardownGroup *YAMLCommandSet `yaml:"teardown_group" bson:"teardown_group"` SetupTask *YAMLCommandSet `yaml:"setup_task" bson:"setup_task"` TeardownTask *YAMLCommandSet `yaml:"teardown_task" bson:"teardown_task"` Timeout *YAMLCommandSet `yaml:"timeout,omitempty" bson:"timeout"` Tasks []string `yaml:"tasks" bson:"tasks"` Tags []string `yaml:"tags,omitempty" bson:"tags"` ShareProcs bool `yaml:"share_processes" bson:"share_processes"` }
func GetTaskGroup ¶
func GetTaskGroup(taskGroup string, tc *TaskConfig) (*TaskGroup, error)
GetTaskGroup returns the task group for a given task from its project
type TaskHistory ¶
type TaskHistoryChunk ¶
type TaskHistoryChunk struct { Tasks []bson.M Versions []version.Version FailedTests map[string][]task.TestResult Exhausted ExhaustedIterator }
type TaskHistoryIterator ¶
type TaskHistoryIterator interface { GetChunk(version *version.Version, numBefore, numAfter int, include bool) (TaskHistoryChunk, error) GetDistinctTestNames(numCommits int) ([]string, error) }
func NewTaskHistoryIterator ¶
func NewTaskHistoryIterator(name string, buildVariants []string, projectName string) TaskHistoryIterator
type TaskIdConfig ¶
type TaskIdConfig struct { ExecutionTasks TaskIdTable DisplayTasks TaskIdTable }
func NewPatchTaskIdTable ¶
func NewPatchTaskIdTable(proj *Project, v *version.Version, tasks TaskVariantPairs) TaskIdConfig
NewPatchTaskIdTable constructs a new TaskIdTable (map of [variant, task display name]->[task id])
func NewTaskIdTable ¶
func NewTaskIdTable(p *Project, v *version.Version) TaskIdConfig
TaskIdTable builds a TaskIdTable for the given version and project
type TaskIdTable ¶
TaskIdTable is a map of [variant, task display name]->[task id].
func (TaskIdTable) AddId ¶
func (tt TaskIdTable) AddId(variant, taskName, id string)
AddId adds the Id for the task/variant combination to the table.
func (TaskIdTable) GetId ¶
func (tt TaskIdTable) GetId(variant, taskName string) string
GetId returns the Id for the given task on the given variant. Returns the empty string if the task/variant does not exist.
func (TaskIdTable) GetIdsForAllTasks ¶
func (tt TaskIdTable) GetIdsForAllTasks(currentVariant, taskName string) []string
GetIdsForTasks returns all task Ids for tasks on all variants != the current task. The current variant and task must be passed in to avoid cycle generation.
func (TaskIdTable) GetIdsForAllVariants ¶
func (tt TaskIdTable) GetIdsForAllVariants(taskName string) []string
GetIdsForAllVariants returns all task Ids for taskName on all variants.
func (TaskIdTable) GetIdsForAllVariantsExcluding ¶
func (tt TaskIdTable) GetIdsForAllVariantsExcluding(taskName string, exclude TVPair) []string
GetIdsForAllVariants returns all task Ids for taskName on all variants, excluding the specific task denoted by the task/variant pair.
type TaskJSON ¶
type TaskJSON struct { Name string `bson:"name" json:"name"` TaskName string `bson:"task_name" json:"task_name"` ProjectId string `bson:"project_id" json:"project_id"` TaskId string `bson:"task_id" json:"task_id"` BuildId string `bson:"build_id" json:"build_id"` Variant string `bson:"variant" json:"variant"` VersionId string `bson:"version_id" json:"version_id"` CreateTime time.Time `bson:"create_time" json:"create_time"` IsPatch bool `bson:"is_patch" json:"is_patch"` RevisionOrderNumber int `bson:"order" json:"order"` Revision string `bson:"revision" json:"revision"` Data map[string]interface{} `bson:"data" json:"data"` Tag string `bson:"tag" json:"tag"` }
func GetTaskJSONById ¶
GetTaskById fetches a JSONTask with the corresponding task id.
func GetTaskJSONByName ¶
GetTaskByName finds a taskdata document by using the name of the task and other identifying information.
func GetTaskJSONByTag ¶
GetTaskJSONByTag finds a TaskJSON by a tag
func GetTaskJSONCommit ¶
GetTaskJSONCommit gets the task data associated with a particular task by using the commit hash to find the data. FIXME Given set of parameters is not specific enough
it drops all other results which matches condition (due to findOne)
func GetTaskJSONForVariant ¶
GetTaskJSONForVariant finds a task by name and variant and finds the document in the json collection associated with that task's id.
func GetTaskJSONTagsForTask ¶
GetTagsForTask gets all of the tasks with tags for the given task name and build variant.
func PerfGetTasksForVersion ¶
getTasksForVersion sends back the list of TaskJSON documents associated with a version id.
type TaskJSONTag ¶
type TaskJSONTag struct { Name string `bson:"_id" json:"name"` Obj TaskJSONTagMeta `bson:"obj" json:"obj"` }
func GetDistinctTagNames ¶
func GetDistinctTagNames(projectId string) ([]TaskJSONTag, error)
Returns distinct list of all tags for given `projectId`
type TaskJSONTagMeta ¶
type TaskLog ¶
type TaskLog struct { Id bson.ObjectId `bson:"_id,omitempty" json:"_id,omitempty"` TaskId string `bson:"t_id" json:"t_id"` Execution int `bson:"e" json:"e"` Timestamp time.Time `bson:"ts" json:"ts"` MessageCount int `bson:"c" json:"c"` Messages []apimodels.LogMessage `bson:"m" json:"m"` }
a single chunk of a task log
func FindMostRecentTaskLogs ¶
func FindTaskLogsBeforeTime ¶
func (*TaskLog) AddLogMessage ¶
func (self *TaskLog) AddLogMessage(msg apimodels.LogMessage) error
type TaskQueue ¶
type TaskQueue struct { Id bson.ObjectId `bson:"_id,omitempty" json:"_id"` Distro string `bson:"distro" json:"distro"` GeneratedAt time.Time `bson:"generated_at" json:"generated_at"` Queue []TaskQueueItem `bson:"queue" json:"queue"` }
represents the next n tasks to be run on hosts of the distro
func FindAllTaskQueues ¶
func LoadTaskQueue ¶
func NewTaskQueue ¶
func NewTaskQueue(distro string, queue []TaskQueueItem) *TaskQueue
func (*TaskQueue) DequeueTask ¶
pull out the task with the specified id from both the in-memory and db versions of the task queue
func (*TaskQueue) FindNextTask ¶
func (self *TaskQueue) FindNextTask(spec TaskSpec) *TaskQueueItem
func (*TaskQueue) NextTask ¶
func (self *TaskQueue) NextTask() *TaskQueueItem
type TaskQueueItem ¶
type TaskQueueItem struct { Id string `bson:"_id" json:"_id"` DisplayName string `bson:"display_name" json:"display_name"` Group string `bson:"group_name" json:"group_name"` GroupMaxHosts int `bson:"group_max_hosts,omitempty" json:"group_max_hosts,omitempty"` Version string `bson:"version" json:"version"` BuildVariant string `bson:"build_variant" json:"build_variant"` RevisionOrderNumber int `bson:"order" json:"order"` Requester string `bson:"requester" json:"requester"` Revision string `bson:"gitspec" json:"gitspec"` Project string `bson:"project" json:"project"` ExpectedDuration time.Duration `bson:"exp_dur" json:"exp_dur"` Priority int64 `bson:"priority" json:"priority"` }
type TaskSpec ¶
type TaskSpec struct { Group string BuildVariant string ProjectID string Version string GroupMaxHosts int }
TaskSpec is an argument structure to formalize the way that callers may query/select a task from an existing task queue to support out-of-order task execution for the purpose of task-groups.
type TaskStatusDiff ¶
type TaskStatusDiff struct { Name string `json:"name"` Diff StatusDetailsDiff `json:"diff"` Tests []TestStatusDiff `json:"tests"` Original string `json:"original"` Patch string `json:"patch"` BuildVariant string `json:"build_variant"` }
TaskStatusDiff stores a diff of two task statuses.
func StatusDiffTasks ¶
func StatusDiffTasks(original *task.Task, patch *task.Task) TaskStatusDiff
StatusDiffTasks takes two tasks and returns a diff of their results for easy comparison and analysis.
type TaskUnitDependency ¶
type TaskUnitDependency struct { Name string `yaml:"name,omitempty" bson:"name"` Variant string `yaml:"variant,omitempty" bson:"variant,omitempty"` Status string `yaml:"status,omitempty" bson:"status,omitempty"` PatchOptional bool `yaml:"patch_optional,omitempty" bson:"patch_optional,omitempty"` }
TaskUnitDependency holds configuration information about a task/group that must finish before the task/group that contains the dependency can run.
func (*TaskUnitDependency) UnmarshalYAML ¶
func (td *TaskUnitDependency) UnmarshalYAML(unmarshal func(interface{}) error) error
UnmarshalYAML allows tasks to be referenced as single selector strings. This works by first attempting to unmarshal the YAML into a string and then falling back to the TaskUnitDependency struct.
type TaskUnitRequirement ¶
type TaskUnitRequirement struct { Name string `yaml:"name,omitempty" bson:"name"` Variant string `yaml:"variant,omitempty" bson:"variant,omitempty"` }
TaskUnitRequirement represents tasks/groups that must exist along with the requirement's holder. This is only used when configuring patches.
type TaskVariantPairs ¶
func VariantTasksToTVPairs ¶
func VariantTasksToTVPairs(in []patch.VariantTasks) TaskVariantPairs
VariantTasksToTVPairs takes a set of variants and tasks (from both the old and new request formats) and builds a universal set of pairs that can be used to expand the dependency tree.
func (*TaskVariantPairs) TVPairsToVariantTasks ¶
func (tvp *TaskVariantPairs) TVPairsToVariantTasks() []patch.VariantTasks
TVPairsToVariantTasks takes a list of TVPairs (task/variant pairs), groups the tasks for the same variant together under a single list, and return all the variant groups as a set of patch.VariantTasks.
type TestHistoryParameters ¶
type TestHistoryParameters struct { Sort int `json:"sort"` Limit int `json:"limit"` // task parameters Project string `json:"project"` TaskNames []string `json:"task_names"` BuildVariants []string `json:"variants"` TaskStatuses []string `json:"task_statuses"` BeforeRevision string `json:"before_revision"` AfterRevision string `json:"after_revision"` TaskRequestType string `json:"task_request"` BeforeDate time.Time `json:"before_date"` AfterDate time.Time `json:"after_date"` // test result parameters TestNames []string `json:"test_names"` TestStatuses []string `json:"test_statuses"` }
TestHistoryParameters are the parameters that are used to retrieve Test Results.
func (TestHistoryParameters) QueryString ¶
func (t TestHistoryParameters) QueryString() string
func (*TestHistoryParameters) SetDefaultsAndValidate ¶
func (thp *TestHistoryParameters) SetDefaultsAndValidate() error
setDefaultsAndValidate sets the default for test history parameters that do not have values and validates the test parameters.
type TestHistoryResult ¶
type TestHistoryResult struct { TestFile string `bson:"tf"` TaskName string `bson:"tn"` TaskStatus string `bson:"task_status"` TestStatus string `bson:"test_status"` Revision string `bson:"r"` Project string `bson:"p"` TaskId string `bson:"tid"` BuildVariant string `bson:"bv"` StartTime float64 `bson:"st"` EndTime float64 `bson:"et"` Execution int `bson:"ex"` Url string `bson:"url"` UrlRaw string `bson:"url_r"` OldTaskId string `bson:"otid"` TaskTimedOut bool `bson:"to"` TaskDetailsType string `bson:"tdt"` LogId string `bson:"lid"` Order int `bson:"order"` }
TestHistoryResult represents what is returned by the aggregation
func GetTestHistory ¶
func GetTestHistory(testHistoryParameters *TestHistoryParameters) ([]TestHistoryResult, error)
GetTestHistory takes in test history parameters, validates them, and returns the test results according to those parameters. It sets tasks failed and tests failed as default statuses if none are provided, and defaults to all tasks, tests, and variants if those are not set.
func GetTestHistoryV2 ¶
func GetTestHistoryV2(testHistoryParameters *TestHistoryParameters) ([]TestHistoryResult, error)
type TestLog ¶
type TestLog struct { Id string `bson:"_id" json:"_id"` Name string `json:"name" bson:"name"` Task string `json:"task" bson:"task"` TaskExecution int `json:"execution" bson:"execution"` Lines []string `json:"lines" bson:"lines"` }
func FindOneTestLog ¶
FindOneTestLog returns a TestLog, given the test's name, task id, and execution.
func FindOneTestLogById ¶
type TestStatusDiff ¶
type TestStatusDiff struct { Name string `json:"name"` Diff StatusDiff `json:"diff"` Original string `json:"original"` Patch string `json:"patch"` }
TestStatusDiff stores a diff of two test results.
type YAMLCommandSet ¶
type YAMLCommandSet struct { SingleCommand *PluginCommandConf MultiCommand []PluginCommandConf }
func (*YAMLCommandSet) List ¶
func (c *YAMLCommandSet) List() []PluginCommandConf
func (*YAMLCommandSet) MarshalYAML ¶
func (c *YAMLCommandSet) MarshalYAML() (interface{}, error)
func (*YAMLCommandSet) UnmarshalYAML ¶
func (c *YAMLCommandSet) UnmarshalYAML(unmarshal func(interface{}) error) error
Source Files ¶
- audit.go
- build_variant_history.go
- context.go
- generate.go
- github_hook.go
- host_manipulation.go
- keyval.go
- lifecycle.go
- note.go
- notify_history.go
- notify_times.go
- patch_dependencies.go
- patch_lifecycle.go
- process_runtime.go
- project.go
- project_aliases.go
- project_matrix.go
- project_parser.go
- project_ref.go
- project_selector.go
- project_vars.go
- push.go
- repository.go
- s3copy.go
- scheduler_stats.go
- status_diff.go
- task_config.go
- task_history.go
- task_json.go
- task_json_api.go
- task_lifecycle.go
- task_log.go
- task_queue.go
- task_start_estimation.go
- test_log.go
- user_lifecycle.go
- validate.go
- version_activation.go
- version_history.go