Documentation
¶
Overview ¶
Package model defines Evergreen's data model. See subpackages for specific documentation.
Index ¶
- Constants
- Variables
- func AbortBuild(ctx context.Context, buildId string, caller string) error
- func AbortPatchesWithGithubPatchData(ctx context.Context, createdBefore time.Time, closed bool, ...) error
- func AbortTask(ctx context.Context, taskId, caller string) error
- func ActivateBuildsAndTasks(ctx context.Context, buildIds []string, active bool, caller string) error
- func ActivateElapsedBuildsAndTasks(ctx context.Context, v *Version) (bool, error)
- func ActivateVersions(ctx context.Context, versionIds []string) error
- func AddGitTag(ctx context.Context, versionId string, tag GitTag) error
- func AddSatisfiedTrigger(ctx context.Context, versionID, definitionID string) error
- func BaseVersionByProjectIdAndRevision(projectId, revision string) db.Q
- func BbGetTask(ctx context.Context, taskId string, executionString string) (*task.Task, error)
- func CalculateActualMakespan(tasks []task.Task) time.Duration
- func CancelPatch(ctx context.Context, p *patch.Patch, reason task.AbortInfo) error
- func ClearAndResetStrandedContainerTask(ctx context.Context, settings *evergreen.Settings, p *pod.Pod) error
- func ClearAndResetStrandedHostTask(ctx context.Context, settings *evergreen.Settings, h *host.Host) error
- func ClearTaskQueue(ctx context.Context, distroId string) error
- func ConfigurePatch(ctx context.Context, settings *evergreen.Settings, p *patch.Patch, ...) (int, error)
- func CopyProjectAliases(ctx context.Context, oldProjectId, newProjectId string) error
- func CopyProjectVars(ctx context.Context, oldProjectId, newProjectId string) error
- func CountProjectRefsWithIdentifier(ctx context.Context, identifier string) (int, error)
- func CreateBuildFromVersionNoInsert(ctx context.Context, creationInfo TaskCreationInfo) (*build.Build, task.Tasks, error)
- func CreateManifest(ctx context.Context, v *Version, modules ModuleList, projectRef *ProjectRef) (*manifest.Manifest, error)
- func CreateTasksCache(tasks []task.Task) []build.TaskCache
- func DeactivatePreviousTasks(ctx context.Context, t *task.Task, caller string) error
- func DefaultGithubAppCredentialsToRepo(ctx context.Context, projectId string) error
- func DefaultSectionToRepo(ctx context.Context, projectId string, section ProjectPageSection, ...) error
- func DisableStaleContainerTasks(ctx context.Context, caller string) error
- func DisableTasks(ctx context.Context, caller string, tasks ...task.Task) error
- func DoProjectActivation(ctx context.Context, projectRef *ProjectRef, ts time.Time) ([]string, error)
- func FindAndTranslateProjectForPatch(ctx context.Context, settings *evergreen.Settings, p *patch.Patch) (*Project, *ParserProject, error)
- func FindAndTranslateProjectForVersion(ctx context.Context, settings *evergreen.Settings, v *Version, ...) (*Project, *ParserProject, error)
- func FindLatestRevisionAndAuthorForProject(ctx context.Context, projectId string) (string, string, error)
- func FindLatestVersionWithValidProject(ctx context.Context, projectId string, preGeneration bool) (*Version, *Project, *ParserProject, error)
- func FindMinimumQueuePositionForTask(ctx context.Context, taskId string) (int, error)
- func FindPredictedMakespan(tasks []task.Task) dependencyPath
- func FindProjectForVersion(ctx context.Context, versionID string) (string, error)
- func FindTasksForHistory(ctx context.Context, opts FindTaskHistoryOptions) ([]task.Task, error)
- func FixStaleTask(ctx context.Context, settings *evergreen.Settings, t *task.Task) error
- func GetAndLogProjectModified(ctx context.Context, id, userId string, isRepo bool, before *ProjectSettings) error
- func GetAndLogProjectRepoAttachment(ctx context.Context, id, userId, attachmentType string, isRepo bool, ...) error
- func GetBuildBaronSettings(ctx context.Context, projectId string, version string) (evergreen.BuildBaronSettings, bool)
- func GetEstimatedStartTime(ctx context.Context, t task.Task) (time.Duration, error)
- func GetIdForProject(ctx context.Context, identifier string) (string, error)
- func GetIdentifierForProject(ctx context.Context, id string) (string, error)
- func GetLatestMainlineTask(ctx context.Context, opts FindTaskHistoryOptions) (*task.Task, error)
- func GetNewRevisionOrderNumber(ctx context.Context, projectId string) (int, error)
- func GetNextCronTime(baseTime time.Time, cronBatchTime string) (time.Time, error)
- func GetNumberOfEnabledProjects(ctx context.Context) (int, error)
- func GetNumberOfEnabledProjectsForOwnerRepo(ctx context.Context, owner, repo string) (int, error)
- func GetOffsetVersionOrderByDate(ctx context.Context, date time.Time, projectId string) (int, error)
- func GetOffsetVersionOrderByRevision(ctx context.Context, revision string, projectId string, limit int) (int, error)
- func GetOldestMainlineTask(ctx context.Context, opts FindTaskHistoryOptions) (*task.Task, error)
- func GetPatchedProject(ctx context.Context, settings *evergreen.Settings, p *patch.Patch) (*Project, *PatchConfig, error)
- func GetPatchedProjectConfig(ctx context.Context, p *patch.Patch) (string, error)
- func GetPreviousPageCommitOrderNumber(ctx context.Context, projectId string, order int, limit int, ...) (*int, error)
- func GetProjectAdminRole(projectId string) string
- func GetRepoAdminRole(repoId string) string
- func GetRepoAdminScope(repoId string) string
- func GetSearchReturnInfo(ctx context.Context, taskId string, exec string) (*thirdparty.SearchReturnInfo, buildBaronConfig, error)
- func GetSetupScriptForTask(ctx context.Context, taskId string) (string, error)
- func GetTaskOrderByDate(ctx context.Context, date time.Time, opts FindTaskHistoryOptions) (int, error)
- func GetTasksWithOptions(ctx context.Context, projectName string, taskName string, ...) ([]task.Task, error)
- func GetUnrestrictedBranchProjectsScope(repoId string) string
- func GetUpstreamProjectName(ctx context.Context, triggerID, triggerType string) (string, error)
- func GetVariantsWithMatrices(ase *axisSelectorEvaluator, axes []matrixAxis, bvs []parserBV) ([]parserBV, []error)
- func GetVarsParameterPath(projectID string) string
- func GetVersionAuthorID(ctx context.Context, versionID string) (string, error)
- func HandleEndTaskForGithubMergeQueueTask(ctx context.Context, t *task.Task, status string) error
- func HasMatchingGitTagAliasAndRemotePath(ctx context.Context, projectId, tag string) (bool, string, error)
- func IsAdminRepoOrProjectRole(roleID string) bool
- func IsPatchAlias(alias string) bool
- func IsPerfEnabledForProject(ctx context.Context, projectId string) bool
- func IsValidId(id string) bool
- func IsWebhookConfigured(ctx context.Context, project string, version string) (evergreen.WebHook, bool, error)
- func LogProjectAdded(ctx context.Context, projectId, username string) error
- func LogProjectEvent(ctx context.Context, eventType string, projectId string, ...) error
- func LogProjectModified(ctx context.Context, projectId, username string, ...) error
- func LogProjectRepoAttachment(ctx context.Context, projectId, username, attachmentType string, ...) error
- func MakePatchedConfig(ctx context.Context, opts GetProjectOpts, projectConfig string) ([]byte, error)
- func MarkEnd(ctx context.Context, settings *evergreen.Settings, t *task.Task, caller string, ...) error
- func MarkHostTaskDispatched(ctx context.Context, t *task.Task, h *host.Host) error
- func MarkOneTaskReset(ctx context.Context, t *task.Task, caller string) error
- func MarkStart(ctx context.Context, t *task.Task, updates *StatusChanges) error
- func MarkTasksReset(ctx context.Context, taskIds []string, caller string) error
- func MarkUnallocatableContainerTasksSystemFailed(ctx context.Context, settings *evergreen.Settings, candidateTaskIDs []string) error
- func ModifyVersion(ctx context.Context, version Version, user user.DBUser, ...) (int, error)
- func NewAxisSelectorEvaluator(axes []matrixAxis) *axisSelectorEvaluator
- func NewId(id string) mgobson.ObjectId
- func NewParserTaskSelectorEvaluator(tasks []parserTask) *taskSelectorEvaluator
- func NewQueue() estimatedTaskQueue
- func NewVariantSelectorEvaluator(variants []parserBV, ase *axisSelectorEvaluator) *variantSelectorEvaluator
- func ParserProjectUpsertOne(ctx context.Context, settings *evergreen.Settings, ...) error
- func ParserProjectUpsertOneWithS3Fallback(ctx context.Context, settings *evergreen.Settings, ...) (evergreen.ParserProjectStorageMethod, error)
- func PopulateExpansions(ctx context.Context, t *task.Task, h *host.Host, knownHosts string) (util.Expansions, error)
- func ProjectCanDispatchTask(pRef *ProjectRef, t *task.Task) (canDispatch bool, reason string)
- func RecomputeNumDependents(ctx context.Context, t task.Task) error
- func RefreshTasksCache(ctx context.Context, buildId string) error
- func RemoveAdminFromProjects(ctx context.Context, toDelete string) error
- func RemoveGitTagFromVersions(ctx context.Context, owner, repo string, tag GitTag) error
- func RemoveProjectAlias(ctx context.Context, id string) error
- func RemoveTaskQueues(ctx context.Context, distroID string) error
- func ResetTaskOrDisplayTask(ctx context.Context, settings *evergreen.Settings, t *task.Task, ...) error
- func RestartBuild(ctx context.Context, b *build.Build, taskIDs []string, abortInProgress bool, ...) error
- func RestartVersion(ctx context.Context, versionID string, taskIDs []string, abortInProgress bool, ...) error
- func RestartVersions(ctx context.Context, versionsToRestart []*VersionToRestart, ...) error
- func SaveProjectPageForSection(ctx context.Context, projectId string, p *ProjectRef, ...) (bool, error)
- func SetAWSKeyForProject(ctx context.Context, projectId string, ssh *AWSSSHKey) error
- func SetActiveState(ctx context.Context, caller string, active bool, tasks ...task.Task) error
- func SetActiveStateById(ctx context.Context, id, user string, active bool) error
- func SetBuildPriority(ctx context.Context, buildId string, priority int64, caller string) error
- func SetNumDependents(tasks []*task.Task)
- func SetTaskPriority(ctx context.Context, t task.Task, priority int64, caller string) error
- func SetTracksPushEvents(ctx context.Context, projectRef *ProjectRef) (bool, error)
- func SetVersionActivated(ctx context.Context, versionId string, activated bool) error
- func SetVersionActivation(ctx context.Context, versionId string, active bool, caller string) error
- func SetVersionsPriority(ctx context.Context, versionIds []string, priority int64, caller string) error
- func SubscribeOnParentOutcome(ctx context.Context, parentStatus string, childPatchId string, ...) error
- func TryMarkVersionStarted(ctx context.Context, versionId string, startTime time.Time) error
- func TryResetTask(ctx context.Context, settings *evergreen.Settings, taskId, user, origin string, ...) error
- func UpdateAdminRoles(ctx context.Context, project *ProjectRef, toAdd, toDelete []string) error
- func UpdateBlockedDependencies(ctx context.Context, dependencies []task.Task, ...) error
- func UpdateBuildAndVersionStatusForTask(ctx context.Context, t *task.Task) error
- func UpdateDisplayTaskForTask(ctx context.Context, t *task.Task) error
- func UpdateLastRevision(ctx context.Context, projectId, revision string) error
- func UpdateNextPeriodicBuild(ctx context.Context, projectId string, definition *PeriodicBuildDefinition) error
- func UpdateOtelMetadata(ctx context.Context, t *task.Task, diskDevices []string, traceID string)
- func UpdateProjectRevision(ctx context.Context, projectID, revision string) error
- func UpdateUnblockedDependencies(ctx context.Context, dependencies []task.Task) error
- func UpdateVersionAndPatchStatusForBuilds(ctx context.Context, buildIds []string) error
- func UpdateVersionMessage(ctx context.Context, versionId, message string) error
- func UpsertAliasesForProject(ctx context.Context, aliases []ProjectAlias, projectId string) error
- func UserHasRepoViewPermission(ctx context.Context, u *user.DBUser, repoRefId string) (bool, error)
- func ValidateBbProject(ctx context.Context, projName string, proj evergreen.BuildBaronSettings, ...) error
- func ValidateContainers(ctx context.Context, ecsConf evergreen.ECSConfig, pRef *ProjectRef, ...) error
- func ValidateEnabledProjectsLimit(ctx context.Context, config *evergreen.Settings, ...) (int, error)
- func ValidateHost(hostId string, r *http.Request) (*host.Host, int, error)
- func ValidateProjectAliases(aliases []ProjectAlias, aliasType string) []string
- func ValidateTVPairs(p *Project, in []TVPair) error
- func ValidateTask(ctx context.Context, taskId string, checkSecret bool, r *http.Request) (*task.Task, int, error)
- func ValidateTriggerDefinition(ctx context.Context, definition patch.PatchTriggerDefinition, ...) (patch.PatchTriggerDefinition, error)
- func VersionById(id string) db.Q
- func VersionByIds(ids []string) db.Q
- func VersionByLastTaskActivation(projectId, variant, taskName string) db.Q
- func VersionByLastVariantActivation(projectId, variant string) db.Q
- func VersionByMostRecentActivated(projectId string, ts time.Time) db.Q
- func VersionByMostRecentNonIgnored(projectId string, ts time.Time) db.Q
- func VersionByMostRecentSystemRequester(projectId string) db.Q
- func VersionByProjectAndTrigger(projectID string, includeTriggered bool) db.Q
- func VersionByProjectIdAndCreateTime(projectId string, createTime time.Time) db.Q
- func VersionByProjectIdAndOrder(projectId string, revisionOrderNumber int) db.Q
- func VersionByProjectIdAndRevisionPrefix(projectId, revisionPrefix string) db.Q
- func VersionBySuccessfulBeforeRevision(project string, beforeRevision int) db.Q
- func VersionBySystemRequesterOrdered(projectId string, startOrder int) db.Q
- func VersionCount(ctx context.Context, query db.Q) (int, error)
- func VersionUpdateOne(ctx context.Context, query any, update any) error
- func VersionsAllUnactivatedNonIgnored(projectId string, ts time.Time, limit int) db.Q
- func VersionsUnactivatedSinceLastActivated(projectId string, ts time.Time, lastActivatedOrderNum, limit int) db.Q
- type AWSSSHKey
- type ActivationStatus
- type BatchTimeTaskStatus
- type BuildStatusDiff
- type BuildVariant
- type BuildVariantHistoryIterator
- type BuildVariantTaskUnit
- func (bvt *BuildVariantTaskUnit) HasCheckRun() bool
- func (bvt *BuildVariantTaskUnit) HasSpecificActivation() bool
- func (bvt *BuildVariantTaskUnit) IsDisabled() bool
- func (bvt *BuildVariantTaskUnit) Populate(pt ProjectTask, bv BuildVariant)
- func (bvt *BuildVariantTaskUnit) SkipOnGitTagBuild() bool
- func (bvt *BuildVariantTaskUnit) SkipOnNonGitTagBuild() bool
- func (bvt *BuildVariantTaskUnit) SkipOnNonPatchBuild() bool
- func (bvt *BuildVariantTaskUnit) SkipOnPatchBuild() bool
- func (bvt *BuildVariantTaskUnit) SkipOnRequester(requester string) bool
- func (bvt *BuildVariantTaskUnit) ToTVPair() TVPair
- func (bvt *BuildVariantTaskUnit) UnmarshalYAML(unmarshal func(any) error) error
- type BuildVariants
- type BuildVariantsByName
- type CachedDispatcher
- type CheckRun
- type CommitQueueParams
- type Container
- type ContainerResources
- type ContainerSecret
- type ContainerSecretCache
- type ContainerSecretType
- type ContainerSystem
- type ContainerTaskQueue
- type Context
- type DistroQueueInfo
- type DuplicateEnqueuedTasksResult
- type DuplicateVersions
- type DuplicateVersionsID
- type EmailAlertData
- type ExternalLink
- type FeedbackSubmission
- type FindTaskHistoryOptions
- type GeneratedProject
- func (g *GeneratedProject) CheckForCycles(ctx context.Context, v *Version, p *Project, projectRef *ProjectRef) error
- func (g *GeneratedProject) GetNewTasksAndActivationInfo(ctx context.Context, v *Version, p *Project) (*TaskVariantPairs, *specificActivationInfo)
- func (g *GeneratedProject) NewVersion(ctx context.Context, p *Project, pp *ParserProject, v *Version) (*Project, *ParserProject, *Version, error)
- func (g *GeneratedProject) Save(ctx context.Context, settings *evergreen.Settings, p *Project, ...) error
- type GetProjectOpts
- type GetProjectTasksOpts
- type GetVersionsOptions
- type GitHubDynamicTokenPermissionGroup
- type GitTag
- type GitTags
- type GithubProjectConflicts
- type JiraSuggest
- type KeyVal
- type MainlineCommitVersionOptions
- type ModifyVersionsOptions
- type Module
- type ModuleList
- type MultiSourceSuggest
- type Note
- type ParameterInfo
- type ParameterMapping
- type ParameterMappings
- func (pm ParameterMappings) Len() int
- func (pm ParameterMappings) Less(i, j int) bool
- func (pm ParameterMappings) NameMap() map[string]ParameterMapping
- func (pm ParameterMappings) Names() []string
- func (pm ParameterMappings) ParameterNameMap() map[string]ParameterMapping
- func (pm ParameterMappings) ParameterNames() []string
- func (pm ParameterMappings) Swap(i, j int)
- type ParserProject
- func (pp *ParserProject) AddBuildVariant(name, displayName, runOn string, batchTime *int, tasks []string)
- func (pp *ParserProject) AddTask(name string, commands []PluginCommandConf)
- func (pp *ParserProject) GetParameters() []patch.Parameter
- func (pp *ParserProject) Init(id string, createdAt time.Time)
- func (pp *ParserProject) Insert(ctx context.Context) error
- func (pp *ParserProject) MarshalBSON() ([]byte, error)
- func (pp *ParserProject) MarshalYAML() (any, error)
- type ParserProjectDBStorage
- func (s ParserProjectDBStorage) FindOneByID(ctx context.Context, id string) (*ParserProject, error)
- func (s ParserProjectDBStorage) FindOneByIDWithFields(ctx context.Context, id string, fields ...string) (*ParserProject, error)
- func (s ParserProjectDBStorage) UpsertOne(ctx context.Context, pp *ParserProject) error
- type ParserProjectS3Storage
- func (s *ParserProjectS3Storage) FindOneByID(ctx context.Context, id string) (*ParserProject, error)
- func (s *ParserProjectS3Storage) FindOneByIDWithFields(ctx context.Context, id string, _ ...string) (*ParserProject, error)
- func (s *ParserProjectS3Storage) UpsertOne(ctx context.Context, pp *ParserProject) error
- func (s *ParserProjectS3Storage) UpsertOneBSON(ctx context.Context, id string, bsonPP []byte) error
- type ParserProjectStorage
- type PatchConfig
- type PatchOpts
- type PatchUpdate
- type PeriodicBuildDefinition
- type PluginCommandConf
- func (p PluginCommandConf) GetDisplayName() string
- func (p PluginCommandConf) GetType(prj *Project) string
- func (p PluginCommandConf) RunOnVariant(variant string) bool
- func (c *PluginCommandConf) UnmarshalBSON(in []byte) error
- func (c *PluginCommandConf) UnmarshalYAML(unmarshal func(any) error) error
- type Project
- func (p *Project) BuildProjectTVPairs(ctx context.Context, patchDoc *patch.Patch, alias string)
- func (p *Project) BuildProjectTVPairsWithAlias(aliases []ProjectAlias, requester string) (TaskVariantPairs, error)
- func (p *Project) DependencyGraph() task.DependencyGraph
- func (p *Project) FindAllBuildVariantTasks() []BuildVariantTaskUnit
- func (p *Project) FindAllTasksMap() map[string]ProjectTask
- func (p *Project) FindAllVariants() []string
- func (p *Project) FindBuildVariant(build string) *BuildVariant
- func (p *Project) FindBuildVariantTaskUnit(bv, task string) *BuildVariantTaskUnit
- func (p *Project) FindDisplayTasksForVariant(build string) []string
- 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) FindTaskGroupForTask(bvName, taskName string) *TaskGroup
- func (p *Project) FindTasksForVariant(build string) []string
- func (p *Project) FindVariantsWithTask(task string) []string
- func (p *Project) GetAllVariantTasks() []patch.VariantTasks
- func (p *Project) GetDisplayTask(variant, name string) *patch.DisplayTask
- func (p *Project) GetModuleByName(name string) (*Module, error)
- func (p *Project) GetNumCheckRunsFromTaskVariantPairs(variantTasks *TaskVariantPairs) int
- func (p *Project) GetNumCheckRunsFromVariantTasks(variantTasks []patch.VariantTasks) int
- func (p *Project) GetParameters() []patch.Parameter
- func (p *Project) GetTaskNameAndTags(bvt BuildVariantTaskUnit) (string, []string, bool)
- func (p *Project) GetVariantMappings() map[string]string
- func (p *Project) IgnoresAllFiles(files []string) bool
- func (p *Project) IsGenerateTask(taskName string) bool
- func (p *Project) ResolvePatchVTs(ctx context.Context, patchDoc *patch.Patch, requester, alias string, ...) (resolvedBVs []string, resolvedTasks []string, vts []patch.VariantTasks)
- func (p *Project) TasksThatCallCommand(find string) map[string]int
- func (p *Project) VariantTasksForSelectors(ctx context.Context, definitions []patch.PatchTriggerDefinition, ...) ([]patch.VariantTasks, error)
- type ProjectAlias
- func ConstructMergedAliasesByPrecedence(ctx context.Context, projectRef *ProjectRef, projectConfig *ProjectConfig, ...) ([]ProjectAlias, error)
- func FindAliasInProjectRepoOrConfig(ctx context.Context, projectID, alias string) ([]ProjectAlias, error)
- func FindAliasInProjectRepoOrProjectConfig(ctx context.Context, projectID, alias string, projectConfig *ProjectConfig) ([]ProjectAlias, error)
- func FindAliasesForProjectFromDb(ctx context.Context, projectID string) ([]ProjectAlias, error)
- func FindAliasesForRepo(ctx context.Context, repoId string) ([]ProjectAlias, error)
- func FindMatchingGitTagAliasesInProject(ctx context.Context, projectID, tag string) ([]ProjectAlias, error)
- type ProjectAliases
- type ProjectBanner
- type ProjectChangeEvent
- type ProjectChangeEventEntry
- type ProjectChangeEvents
- type ProjectConfig
- func CreateProjectConfig(yml []byte, identifier string) (*ProjectConfig, error)
- func FindLastKnownGoodProjectConfig(ctx context.Context, projectId string) (*ProjectConfig, error)
- func FindProjectConfigById(ctx context.Context, id string) (*ProjectConfig, error)
- func FindProjectConfigForProjectOrVersion(ctx context.Context, projectId, id string) (*ProjectConfig, error)
- func ProjectConfigFindOne(ctx context.Context, query db.Q) (*ProjectConfig, error)
- type ProjectConfigFields
- type ProjectEventGitHubAppAuth
- type ProjectEventVars
- type ProjectHealthView
- type ProjectInfo
- type ProjectPageSection
- type ProjectRef
- func FindAllMergedEnabledTrackedProjectRefs(ctx context.Context) ([]ProjectRef, error)
- func FindAllMergedProjectRefs(ctx context.Context) ([]ProjectRef, error)
- func FindAllMergedTrackedProjectRefs(ctx context.Context) ([]ProjectRef, error)
- func FindAllProjectRefs(ctx context.Context) ([]ProjectRef, error)
- func FindAnyRestrictedProjectRef(ctx context.Context) (*ProjectRef, error)
- func FindBranchProjectRef(ctx context.Context, identifier string) (*ProjectRef, error)
- func FindDownstreamProjects(ctx context.Context, project string) ([]ProjectRef, error)
- func FindHiddenProjectRefByOwnerRepoAndBranch(ctx context.Context, owner, repo, branch string) (*ProjectRef, error)
- func FindMergedEnabledProjectRefsByIds(ctx context.Context, ids ...string) ([]ProjectRef, error)
- func FindMergedEnabledProjectRefsByOwnerAndRepo(ctx context.Context, owner, repo string) ([]ProjectRef, error)
- func FindMergedEnabledProjectRefsByRepoAndBranch(ctx context.Context, owner, repoName, branch string) ([]ProjectRef, error)
- func FindMergedProjectRef(ctx context.Context, identifier string, version string, ...) (*ProjectRef, error)
- func FindMergedProjectRefsByIds(ctx context.Context, ids ...string) ([]ProjectRef, error)
- func FindMergedProjectRefsForRepo(ctx context.Context, repoRef *RepoRef) ([]ProjectRef, error)
- func FindMergedProjectRefsThatUseRepoSettingsByRepoAndBranch(ctx context.Context, owner, repoName, branch string) ([]ProjectRef, error)
- func FindNonHiddenProjects(ctx context.Context, key string, limit int, sortDir int, ...) ([]ProjectRef, error)
- func FindOneProjectRefByRepoAndBranchWithPRTesting(ctx context.Context, owner, repo, branch, calledBy string) (*ProjectRef, error)
- func FindOneProjectRefWithCommitQueueByOwnerRepoAndBranch(ctx context.Context, owner, repo, branch string) (*ProjectRef, error)
- func FindPeriodicProjects(ctx context.Context) ([]ProjectRef, error)
- func FindProjectAndRepoRefsUsingGitHubAppForAPI(ctx context.Context) ([]ProjectRef, error)
- func FindProjectRefsByIds(ctx context.Context, ids ...string) ([]ProjectRef, error)
- func GetProjectRefForTask(ctx context.Context, taskId string) (*ProjectRef, error)
- func GetProjectRefMergedWithRepo(ctx context.Context, pRef ProjectRef) (*ProjectRef, error)
- func (p *ProjectRef) Add(ctx context.Context, creator *user.DBUser) error
- func (p *ProjectRef) AddToRepoScope(ctx context.Context, u *user.DBUser) error
- func (p *ProjectRef) AliasesNeeded() bool
- func (p *ProjectRef) AttachToNewRepo(ctx context.Context, u *user.DBUser) error
- func (p *ProjectRef) AttachToRepo(ctx context.Context, u *user.DBUser) error
- func (p *ProjectRef) AuthorizedForGitTag(ctx context.Context, githubUser, owner, repo string) bool
- func (p *ProjectRef) CanEnableCommitQueue(ctx context.Context) (bool, error)
- func (p *ProjectRef) CheckAndUpdateAutoRestartLimit(ctx context.Context, maxDailyAutoRestarts int) error
- func (p *ProjectRef) CommitQueueIsOn() error
- func (p *ProjectRef) DetachFromRepo(ctx context.Context, u *user.DBUser) error
- func (p *ProjectRef) DoesTrackPushEvents() bool
- func (p *ProjectRef) GetActivationTimeForTask(ctx context.Context, t *BuildVariantTaskUnit, versionCreateTime time.Time, ...) (time.Time, error)
- func (p *ProjectRef) GetActivationTimeForVariant(ctx context.Context, variant *BuildVariant, variantPathsFiltered bool, ...) (time.Time, error)
- func (p *ProjectRef) GetGitHubAppAuth(ctx context.Context) (*githubapp.GithubAppAuth, error)
- func (p *ProjectRef) GetGitHubAppAuthForAPI(ctx context.Context) (*githubapp.GithubAppAuth, error)
- func (p *ProjectRef) GetGitHubPermissionGroup(requester string) (GitHubDynamicTokenPermissionGroup, bool)
- func (p *ProjectRef) GetGithubProjectConflicts(ctx context.Context) (GithubProjectConflicts, error)
- func (p *ProjectRef) GetPatchTriggerAlias(aliasName string) (patch.PatchTriggerDefinition, bool)
- func (p *ProjectRef) GetProjectSetupCommands(opts apimodels.WorkstationSetupCommandOptions) ([]*jasper.Command, error)
- func (projectRef *ProjectRef) Insert(ctx context.Context) error
- func (p *ProjectRef) IsAutoPRTestingEnabled() bool
- func (p *ProjectRef) IsDeactivatePreviousDisabled() bool
- func (p *ProjectRef) IsDebugSpawnHostsEnabled() bool
- func (p *ProjectRef) IsDispatchingDisabled() bool
- func (p *ProjectRef) IsGitTagVersionsEnabled() bool
- func (p *ProjectRef) IsGithubChecksEnabled() bool
- func (p *ProjectRef) IsHidden() bool
- func (p *ProjectRef) IsManualPRTestingEnabled() bool
- func (p *ProjectRef) IsPRTestingEnabled() bool
- func (p *ProjectRef) IsPRTestingEnabledByCaller(caller string) bool
- func (p *ProjectRef) IsPatchingDisabled() bool
- func (p *ProjectRef) IsPerfEnabled() bool
- func (p *ProjectRef) IsRepotrackerDisabled() bool
- func (p *ProjectRef) IsRestricted() bool
- func (p *ProjectRef) IsStatsCacheDisabled() bool
- func (p *ProjectRef) IsStepbackBisect() bool
- func (p *ProjectRef) IsStepbackDisabled() bool
- func (p *ProjectRef) IsTestSelectionAllowed() bool
- func (p *ProjectRef) IsTestSelectionDefaultEnabled() bool
- func (p *ProjectRef) IsUntracked() bool
- func (p *ProjectRef) IsVersionControlEnabled() bool
- func (p *ProjectRef) MakeRestricted(ctx context.Context) error
- func (p *ProjectRef) MakeUnrestricted(ctx context.Context) error
- func (p *ProjectRef) MergeWithProjectConfig(ctx context.Context, version string) (err error)
- func (p *ProjectRef) RemoveFromRepoScope(ctx context.Context) error
- func (p *ProjectRef) Replace(ctx context.Context) error
- func (p *ProjectRef) SetContainerSecrets(ctx context.Context, secrets []ContainerSecret) error
- func (p *ProjectRef) SetGithubAppCredentials(ctx context.Context, appID int64, privateKey []byte) error
- func (p *ProjectRef) SetRepotrackerError(ctx context.Context, d *RepositoryErrorDetails) error
- func (p *ProjectRef) ShouldDeactivatePrevious() bool
- func (p *ProjectRef) ShouldNotifyOnBuildFailure() bool
- func (p *ProjectRef) UpdateAdminRoles(ctx context.Context, toAdd, toRemove []string) (bool, error)
- func (p *ProjectRef) UseRepoSettings() bool
- func (p *ProjectRef) ValidateEnabledRepotracker() error
- func (p *ProjectRef) ValidateGitHubPermissionGroups() error
- func (p *ProjectRef) ValidateGitHubPermissionGroupsByRequester() error
- func (p *ProjectRef) ValidateIdentifier(ctx context.Context) error
- func (p *ProjectRef) ValidateOwnerAndRepo(validOrgs []string) error
- type ProjectSettings
- type ProjectSettingsEvent
- type ProjectTask
- type ProjectTasksByName
- type ProjectVars
- func (projectVars *ProjectVars) Clear(ctx context.Context) error
- func (projectVars *ProjectVars) FindAndModify(ctx context.Context, varsToDelete []string) (*adb.ChangeInfo, error)
- func (projectVars *ProjectVars) GetVars(ctx context.Context, t *task.Task) map[string]string
- func (projectVars *ProjectVars) Insert(ctx context.Context) error
- func (projectVars *ProjectVars) MergeWithRepoVars(repoVars *ProjectVars)
- func (projectVars *ProjectVars) RedactPrivateVars() *ProjectVars
- func (projectVars *ProjectVars) Upsert(ctx context.Context) (*adb.ChangeInfo, error)
- type PushLog
- type QuestionAnswer
- type RepoRef
- func (r *RepoRef) Add(ctx context.Context, creator *user.DBUser) error
- func (r *RepoRef) Insert(_ context.Context) error
- func (r *RepoRef) MakeRestricted(ctx context.Context, branchProjects []ProjectRef) error
- func (r *RepoRef) MakeUnrestricted(ctx context.Context, branchProjects []ProjectRef) error
- func (r *RepoRef) Replace(ctx context.Context) error
- func (r *RepoRef) UpdateAdminRoles(ctx context.Context, toAdd, toRemove []string) error
- type Repository
- type RepositoryErrorDetails
- type RestartOptions
- type RestartResults
- type Revision
- type Selector
- type StatusChanges
- type StatusDetailsDiff
- type StatusDiff
- type Suggester
- type TVPair
- type TVPairSet
- type TaskCreationInfo
- type TaskDep
- type TaskGroup
- type TaskGroupInfo
- type TaskGroupsByName
- type TaskIdConfig
- type TaskIdTable
- func (tt TaskIdTable) AddId(variant, taskName, id string)
- func (tt TaskIdTable) GetId(variant, taskName string) string
- func (tt TaskIdTable) GetIdsForAllTasks() []string
- func (tt TaskIdTable) GetIdsForAllTasksInVariant(variantName string) []string
- func (tt TaskIdTable) GetIdsForTaskInAllVariants(taskName string) []string
- type TaskQueue
- func FindAllTaskQueues(ctx context.Context) ([]TaskQueue, error)
- func FindDistroSecondaryTaskQueue(ctx context.Context, distroID string) (TaskQueue, error)
- func FindDistroTaskQueue(ctx context.Context, distroID string) (TaskQueue, error)
- func LoadDistroSecondaryTaskQueue(ctx context.Context, distroID string) (*TaskQueue, error)
- func LoadTaskQueue(ctx context.Context, distro string) (*TaskQueue, error)
- func NewTaskQueue(distroID string, queue []TaskQueueItem, distroQueueInfo DistroQueueInfo) *TaskQueue
- type TaskQueueItem
- type TaskQueueItemDispatcher
- type TaskSpec
- type TaskStatusDiff
- type TaskUnitDependency
- type TaskVariantPairs
- type TestSelectionParams
- type TestSelectionSettings
- type TestStatusDiff
- type TriggerDefinition
- type VariantsAndTasksFromProject
- type Version
- func FetchVersionsBuildsAndTasks(ctx context.Context, project *Project, skip int, numVersions int, ...) ([]Version, map[string][]build.Build, map[string][]task.Task, error)
- func FinalizePatch(ctx context.Context, p *patch.Patch, requester string) (*Version, error)
- func FindBaseVersionForVersion(ctx context.Context, versionID string) (*Version, error)
- func FindLastPassingVersionForBuildVariants(ctx context.Context, project *Project, buildVariantNames []string) (*Version, error)
- func FindLastPeriodicBuild(ctx context.Context, projectID, definitionID string) (*Version, error)
- func FindVersionByLastKnownGoodConfig(ctx context.Context, projectId string, revisionOrderNumber int) (*Version, error)
- func GetActiveVersionsByTaskFilters(ctx context.Context, projectId string, opts WaterfallOptions, searchOffset int) ([]Version, error)
- func GetActiveWaterfallVersions(ctx context.Context, projectId string, opts WaterfallOptions) ([]Version, error)
- func GetAllWaterfallVersions(ctx context.Context, projectId string, minOrder int, maxOrder int) ([]Version, error)
- func GetMainlineCommitVersionsWithOptions(ctx context.Context, projectId string, opts MainlineCommitVersionOptions) ([]Version, error)
- func GetMostRecentWaterfallVersion(ctx context.Context, projectId string) (*Version, error)
- func GetNewerActiveWaterfallVersion(ctx context.Context, projectId string, version Version) (*Version, error)
- func GetOlderActiveWaterfallVersion(ctx context.Context, projectId string, version Version) (*Version, error)
- func GetVersionsToModify(ctx context.Context, projectName string, opts ModifyVersionsOptions, ...) ([]Version, error)
- func GetVersionsWithOptions(ctx context.Context, projectName string, opts GetVersionsOptions) ([]Version, error)
- func VersionFind(ctx context.Context, query db.Q) ([]Version, error)
- func VersionFindOne(ctx context.Context, query db.Q) (*Version, error)
- func VersionFindOneId(ctx context.Context, id string) (*Version, error)
- func VersionFindOneIdWithBuildVariants(ctx context.Context, id string) (*Version, error)
- func (v *Version) ActivateAndSetBuildVariants(ctx context.Context) error
- func (v *Version) AddSatisfiedTrigger(ctx context.Context, definitionID string) error
- func (v *Version) GetBuildVariants(ctx context.Context) ([]VersionBuildStatus, error)
- func (v *Version) GetTimeSpent(ctx context.Context) (time.Duration, time.Duration, error)
- func (v *Version) Insert(ctx context.Context) error
- func (v *Version) IsChild() bool
- func (v *Version) IsFinished() bool
- func (v *Version) LastSuccessful(ctx context.Context) (*Version, error)
- func (v *Version) MarshalBSON() ([]byte, error)
- func (v *Version) SetAborted(ctx context.Context, aborted bool) error
- func (v *Version) SetActivated(ctx context.Context, activated bool) error
- func (v *Version) UnmarshalBSON(in []byte) error
- func (v *Version) UpdateAggregateTaskCosts(ctx context.Context) error
- func (v *Version) UpdatePreGenerationProjectStorageMethod(ctx context.Context, method evergreen.ParserProjectStorageMethod) error
- func (v *Version) UpdateProjectStorageMethod(ctx context.Context, method evergreen.ParserProjectStorageMethod) error
- func (v *Version) UpdateStatus(ctx context.Context, newStatus string) (modified bool, err error)
- type VersionBuildStatus
- type VersionMetadata
- type VersionModification
- type VersionToRestart
- type VersionsByCreateTime
- type WaterfallBuild
- type WaterfallBuildVariant
- type WaterfallOptions
- type WaterfallTask
- type WorkstationConfig
- type WorkstationSetupCommand
- type YAMLCommandSet
Constants ¶
const ( AllDependencies = "*" AllVariants = "*" AllStatuses = "*" )
const ( AliasSourceProject = "project" AliasSourceConfig = "config" AliasSourceRepo = "repo" )
const ( ReadFromGithub = "github" ReadFromLocal = "local" ReadFromPatch = "patch" ReadFromPatchDiff = "patch_diff" )
const ( ProjectRefCollection = "project_ref" ProjectTriggerLevelTask = "task" ProjectTriggerLevelBuild = "build" ProjectTriggerLevelPush = "push" )
const ( ProjectPageGeneralSection = "GENERAL" ProjectPageAccessSection = "ACCESS" ProjectPageVariablesSection = "VARIABLES" ProjectPageNotificationsSection = "NOTIFICATIONS" ProjectPagePatchAliasSection = "PATCH_ALIASES" ProjectPageWorkstationsSection = "WORKSTATION" ProjectPageTriggersSection = "TRIGGERS" ProjectPagePeriodicBuildsSection = "PERIODIC_BUILDS" ProjectPagePluginSection = "PLUGINS" ProjectPageContainerSection = "CONTAINERS" ProjectPageViewsAndFiltersSection = "VIEWS_AND_FILTERS" ProjectPageTestSelectionSection = "TEST_SELECTION" ProjectPageGithubAndCQSection = "GITHUB_AND_COMMIT_QUEUE" ProjectPageGithubAppSettingsSection = "GITHUB_APP_SETTINGS" ProjectPageGithubPermissionsSection = "GITHUB_PERMISSIONS" )
These values must remain consistent with the GraphQL enum ProjectSettingsSection.
const ( SelectAll = "*" InvalidCriterionRunes = "!." )
const ( ProjectVarsCollection = "project_vars" ProjectAWSSSHKeyName = "__project_aws_ssh_key_name" ProjectAWSSSHKeyValue = "__project_aws_ssh_key_value" )
const ( TaskQueuesCollection = "task_queues" TaskSecondaryQueuesCollection = "task_alias_queues" )
const ( ApiTaskKey apiTaskKey = 0 ApiProjectKey apiProjectKey = 0 )
const ( DefaultMainlineCommitVersionLimit = 7 MaxMainlineCommitVersionLimit = 300 )
const ( DefaultWaterfallVersionLimit = 5 MaxWaterfallVersionLimit = 300 )
const ContainerSecretTag = "evergreen-tracked"
ContainerSecretTag is the tag used to track container secrets.
const CronActiveRange = 5 * time.Minute
const (
DAGDispatcher = "DAG-task-dispatcher"
)
const ( // DefaultCommandType is a system configuration option that is used to // differentiate between setup related commands and actual testing commands. DefaultCommandType = evergreen.CommandTypeTest )
const EmptyConfigurationError = "received empty configuration file"
const (
EvergreenLogSender = "evergreen"
)
const FeedbackCollection = "feedback"
const KeyValCollection = "keyval_plugin"
const LoadProjectError = "load project error(s)"
const MaxConfigSetPriority = 50
MaxConfigSetPriority represents the highest value for a task's priority a user can set in theit config YAML.
const MergeProjectConfigError = "error merging project configs"
const NotesCollection = "build_baron_notes"
const (
ParserProjectCollection = "parser_projects"
)
const (
ProjectAliasCollection = "project_aliases"
)
const (
ProjectConfigCollection = "project_configs"
)
const PushlogCollection = "pushes"
const RepoRefCollection = "repo_ref"
const (
RepositoriesCollection = "repo_revisions"
)
const (
StaleVersionCutoff = 100
)
Maximum number of versions to consider for last_green, more than 100 revisions back considered "stale"
const TranslateProjectConfigError = "unmarshalling project config from YAML"
const TranslateProjectError = "error translating project"
const (
VersionCollection = "versions"
)
Variables ¶
var ( ProjectConfigIdKey = bsonutil.MustHaveTag(ProjectConfig{}, "Id") ProjectConfigProjectKey = bsonutil.MustHaveTag(ProjectConfig{}, "Project") ProjectConfigCreateTimeKey = bsonutil.MustHaveTag(ProjectConfig{}, "CreateTime") )
var ( ParserProjectIdKey = bsonutil.MustHaveTag(ParserProject{}, "Id") ParserProjectStepbackKey = bsonutil.MustHaveTag(ParserProject{}, "Stepback") ParserProjectPreErrorFailsTaskKey = bsonutil.MustHaveTag(ParserProject{}, "PreErrorFailsTask") ParserProjectOomTracker = bsonutil.MustHaveTag(ParserProject{}, "OomTracker") ParserProjectOwnerKey = bsonutil.MustHaveTag(ParserProject{}, "Owner") ParserProjectRepoKey = bsonutil.MustHaveTag(ParserProject{}, "Repo") ParserProjectRemotePathKey = bsonutil.MustHaveTag(ParserProject{}, "RemotePath") ParserProjectBranchKey = bsonutil.MustHaveTag(ParserProject{}, "Branch") ParserProjectIdentifierKey = bsonutil.MustHaveTag(ParserProject{}, "Identifier") ParserProjectDisplayNameKey = bsonutil.MustHaveTag(ParserProject{}, "DisplayName") ParserProjectCommandTypeKey = bsonutil.MustHaveTag(ParserProject{}, "CommandType") ParserProjectIgnoreKey = bsonutil.MustHaveTag(ParserProject{}, "Ignore") ParserProjectParametersKey = bsonutil.MustHaveTag(ParserProject{}, "Parameters") ParserProjectPreKey = bsonutil.MustHaveTag(ParserProject{}, "Pre") ParserProjectPostKey = bsonutil.MustHaveTag(ParserProject{}, "Post") ParserProjectTimeoutKey = bsonutil.MustHaveTag(ParserProject{}, "Timeout") ParserProjectCallbackTimeoutKey = bsonutil.MustHaveTag(ParserProject{}, "CallbackTimeout") ParserProjectModulesKey = bsonutil.MustHaveTag(ParserProject{}, "Modules") ParserProjectContainersKey = bsonutil.MustHaveTag(ParserProject{}, "Containers") ParserProjectBuildVariantsKey = bsonutil.MustHaveTag(ParserProject{}, "BuildVariants") )
var ( // bson fields for the ProjectRef struct ProjectRefIdKey = bsonutil.MustHaveTag(ProjectRef{}, "Id") ProjectRefOwnerKey = bsonutil.MustHaveTag(ProjectRef{}, "Owner") ProjectRefRepoKey = bsonutil.MustHaveTag(ProjectRef{}, "Repo") ProjectRefBranchKey = bsonutil.MustHaveTag(ProjectRef{}, "Branch") ProjectRefEnabledKey = bsonutil.MustHaveTag(ProjectRef{}, "Enabled") ProjectRefRestrictedKey = bsonutil.MustHaveTag(ProjectRef{}, "Restricted") ProjectRefBatchTimeKey = bsonutil.MustHaveTag(ProjectRef{}, "BatchTime") ProjectRefIdentifierKey = bsonutil.MustHaveTag(ProjectRef{}, "Identifier") ProjectRefRepoRefIdKey = bsonutil.MustHaveTag(ProjectRef{}, "RepoRefId") ProjectRefDisplayNameKey = bsonutil.MustHaveTag(ProjectRef{}, "DisplayName") ProjectRefDeactivatePreviousKey = bsonutil.MustHaveTag(ProjectRef{}, "DeactivatePrevious") ProjectRefRemotePathKey = bsonutil.MustHaveTag(ProjectRef{}, "RemotePath") ProjectRefHiddenKey = bsonutil.MustHaveTag(ProjectRef{}, "Hidden") ProjectRefRepotrackerErrorKey = bsonutil.MustHaveTag(ProjectRef{}, "RepotrackerError") ProjectRefDisabledStatsCacheKey = bsonutil.MustHaveTag(ProjectRef{}, "DisabledStatsCache") ProjectRefAdminsKey = bsonutil.MustHaveTag(ProjectRef{}, "Admins") ProjectRefGitTagAuthorizedUsersKey = bsonutil.MustHaveTag(ProjectRef{}, "GitTagAuthorizedUsers") ProjectRefGitTagAuthorizedTeamsKey = bsonutil.MustHaveTag(ProjectRef{}, "GitTagAuthorizedTeams") ProjectRefTracksPushEventsKey = bsonutil.MustHaveTag(ProjectRef{}, "TracksPushEvents") )
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 RepoRef struct RepoRefIdKey = bsonutil.MustHaveTag(RepoRef{}, "Id") RepoRefOwnerKey = bsonutil.MustHaveTag(RepoRef{}, "Owner") RepoRefRepoKey = bsonutil.MustHaveTag(RepoRef{}, "Repo") RepoRefAdminsKey = bsonutil.MustHaveTag(RepoRef{}, "Admins") RepoRefPeriodicBuildsKey = bsonutil.MustHaveTag(RepoRef{}, "PeriodicBuilds") RepoRefTriggersKey = bsonutil.MustHaveTag(RepoRef{}, "Triggers") )
var ( // BSON fields for the Repository struct RepoProjectKey = bsonutil.MustHaveTag(Repository{}, "Project") RepoLastRevisionKey = bsonutil.MustHaveTag(Repository{}, "LastRevision") RepositoryOrderNumberKey = bsonutil.MustHaveTag(Repository{}, "RevisionOrderNumber") )
var ( VersionBuildStatusIdKey = bsonutil.MustHaveTag(VersionBuildStatus{}, "BuildId") VersionBuildStatusDisplayNameKey = bsonutil.MustHaveTag(VersionBuildStatus{}, "DisplayName") VersionBuildStatusVariantKey = bsonutil.MustHaveTag(VersionBuildStatus{}, "BuildVariant") VersionBuildStatusActivatedKey = bsonutil.MustHaveTag(VersionBuildStatus{}, "Activated") VersionBuildStatusBatchTimeTasksKey = bsonutil.MustHaveTag(VersionBuildStatus{}, "BatchTimeTasks") BatchTimeTaskStatusTaskNameKey = bsonutil.MustHaveTag(BatchTimeTaskStatus{}, "TaskName") BatchTimeTaskStatusActivatedKey = bsonutil.MustHaveTag(BatchTimeTaskStatus{}, "Activated") )
var ( // bson fields for the version struct VersionIdKey = bsonutil.MustHaveTag(Version{}, "Id") VersionCreateTimeKey = bsonutil.MustHaveTag(Version{}, "CreateTime") VersionStartTimeKey = bsonutil.MustHaveTag(Version{}, "StartTime") VersionFinishTimeKey = bsonutil.MustHaveTag(Version{}, "FinishTime") VersionRevisionKey = bsonutil.MustHaveTag(Version{}, "Revision") VersionAuthorKey = bsonutil.MustHaveTag(Version{}, "Author") VersionAuthorEmailKey = bsonutil.MustHaveTag(Version{}, "AuthorEmail") VersionMessageKey = bsonutil.MustHaveTag(Version{}, "Message") VersionStatusKey = bsonutil.MustHaveTag(Version{}, "Status") VersionParametersKey = bsonutil.MustHaveTag(Version{}, "Parameters") VersionBuildIdsKey = bsonutil.MustHaveTag(Version{}, "BuildIds") // VersionBuildVariantsKey can be a large array. Prefer to exclude it from // queries unless it's needed. Otherwise, use (Version).GetBuildVariants to // fetch the build variants lazily when needed. VersionBuildVariantsKey = bsonutil.MustHaveTag(Version{}, "BuildVariants") VersionRevisionOrderNumberKey = bsonutil.MustHaveTag(Version{}, "RevisionOrderNumber") VersionRequesterKey = bsonutil.MustHaveTag(Version{}, "Requester") VersionGitTagsKey = bsonutil.MustHaveTag(Version{}, "GitTags") VersionIgnoredKey = bsonutil.MustHaveTag(Version{}, "Ignored") VersionOwnerNameKey = bsonutil.MustHaveTag(Version{}, "Owner") VersionRepoKey = bsonutil.MustHaveTag(Version{}, "Repo") VersionBranchKey = bsonutil.MustHaveTag(Version{}, "Branch") VersionErrorsKey = bsonutil.MustHaveTag(Version{}, "Errors") VersionWarningsKey = bsonutil.MustHaveTag(Version{}, "Warnings") VersionIdentifierKey = bsonutil.MustHaveTag(Version{}, "Identifier") VersionRemoteKey = bsonutil.MustHaveTag(Version{}, "Remote") VersionRemoteURLKey = bsonutil.MustHaveTag(Version{}, "RemotePath") VersionTriggerIDKey = bsonutil.MustHaveTag(Version{}, "TriggerID") VersionTriggerTypeKey = bsonutil.MustHaveTag(Version{}, "TriggerType") VersionSatisfiedTriggersKey = bsonutil.MustHaveTag(Version{}, "SatisfiedTriggers") VersionPeriodicBuildIDKey = bsonutil.MustHaveTag(Version{}, "PeriodicBuildID") VersionActivatedKey = bsonutil.MustHaveTag(Version{}, "Activated") VersionAbortedKey = bsonutil.MustHaveTag(Version{}, "Aborted") VersionAuthorIDKey = bsonutil.MustHaveTag(Version{}, "AuthorID") VersionProjectStorageMethodKey = bsonutil.MustHaveTag(Version{}, "ProjectStorageMethod") VersionPreGenerationProjectStorageMethodKey = bsonutil.MustHaveTag(Version{}, "PreGenerationProjectStorageMethod") VersionGitTagsTagKey = bsonutil.MustHaveTag(GitTag{}, "Tag") VersionCostKey = bsonutil.MustHaveTag(Version{}, "Cost") VersionPredictedCostKey = bsonutil.MustHaveTag(Version{}, "PredictedCost") )
var DependencyCycleError = errors.New("adding dependencies creates a dependency cycle")
var (
FeedbackTypeKey = bsonutil.MustHaveTag(FeedbackSubmission{}, "Type")
)
var NoteTaskIdKey = bsonutil.MustHaveTag(Note{}, "TaskId")
var TaskHistoryIndex = bson.D{ {Key: task.ProjectKey, Value: 1}, {Key: task.BuildVariantKey, Value: 1}, {Key: task.DisplayNameKey, Value: 1}, {Key: task.StatusKey, Value: 1}, {Key: task.RequesterKey, Value: 1}, {Key: task.ActivatedKey, Value: 1}, {Key: task.RevisionOrderNumberKey, Value: 1}, }
The index `branch_1_build_variant_1_display_name_1_status_1_r_1_activated_1_order_1` is a good index for GetLatestMainlineTask & GetOldestMainlineTask, but the query planner does not detect this. Using this index as a hint allows these queries to run efficiently.
var VersionAll = db.Query(bson.D{})
All is a query for all versions.
Functions ¶
func AbortBuild ¶
AbortBuild marks the build as deactivated and sets the abort flag on all tasks associated with the build which are in an abortable state.
func AbortPatchesWithGithubPatchData ¶
func AbortPatchesWithGithubPatchData(ctx context.Context, createdBefore time.Time, closed bool, newPatch, owner, repo string, prNumber int) error
AbortPatchesWithGithubPatchData aborts patches created before the given time, with the same PR number, and base repository. Tasks which are abortable will be aborted, while completed tasks will not be affected.
func ActivateBuildsAndTasks ¶
func ActivateBuildsAndTasks(ctx context.Context, buildIds []string, active bool, caller string) error
ActivateBuildsAndTasks updates the "active" state of this build and all associated tasks. It also updates the task cache for the build document.
func ActivateElapsedBuildsAndTasks ¶
ActivateElapsedBuildsAndTasks activates any builds/tasks if their BatchTimes have elapsed.
func AddSatisfiedTrigger ¶
func BaseVersionByProjectIdAndRevision ¶
BaseVersionByProjectIdAndRevision finds a base version for the given project and revision.
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 CancelPatch ¶
CancelPatch aborts all of a patch's in-progress tasks and deactivates its undispatched tasks.
func ClearAndResetStrandedContainerTask ¶
func ClearAndResetStrandedContainerTask(ctx context.Context, settings *evergreen.Settings, p *pod.Pod) error
ClearAndResetStrandedContainerTask clears the container task dispatched to a pod. It also resets the task so that the current task execution is marked as finished and, if necessary, a new execution is created to restart the task. TODO (PM-2618): should probably block single-container task groups once they're supported.
func ClearAndResetStrandedHostTask ¶
func ClearAndResetStrandedHostTask(ctx context.Context, settings *evergreen.Settings, h *host.Host) error
ClearAndResetStrandedHostTask clears the host task dispatched to the host due to being stranded on a bad host (e.g. one that has been terminated). It also marks the current task execution as finished and, if possible, a new execution is created to restart the task.
func ClearTaskQueue ¶
ClearTaskQueue removes all tasks from task queue by updating them with a blank queue, and modifies the queue info. This is in contrast to RemoveTaskQueues, which simply deletes these documents.
func ConfigurePatch ¶
func ConfigurePatch(ctx context.Context, settings *evergreen.Settings, p *patch.Patch, version *Version, proj *ProjectRef, patchUpdateReq PatchUpdate) (int, error)
ConfigurePatch validates and creates the updated tasks/variants if given, and updates description if needed. Returns an http status code and error.
func CopyProjectAliases ¶
CopyProjectAliases finds the aliases for a given project and inserts them for the new project.
func CopyProjectVars ¶
CopyProjectVars copies the variables for the first project to the second
func CreateBuildFromVersionNoInsert ¶
func CreateBuildFromVersionNoInsert(ctx context.Context, creationInfo TaskCreationInfo) (*build.Build, task.Tasks, error)
CreateBuildFromVersionNoInsert creates a build given all of the necessary information from the corresponding version and project and a list of tasks. Note that the caller is responsible for inserting the created build and task documents
func CreateManifest ¶
func CreateManifest(ctx context.Context, v *Version, modules ModuleList, projectRef *ProjectRef) (*manifest.Manifest, error)
CreateManifest inserts a newly constructed manifest into the DB.
func DeactivatePreviousTasks ¶
DeactivatePreviousTasks deactivates any previously activated but undispatched tasks for the same build variant + display name + project combination as the task, provided nothing is waiting on it.
func DefaultGithubAppCredentialsToRepo ¶
DefaultGithubAppCredentialsToRepo defaults the app credentials to the repo by removing the GithubAppAuth entry for the project.
func DefaultSectionToRepo ¶
func DefaultSectionToRepo(ctx context.Context, projectId string, section ProjectPageSection, userId string) error
DefaultSectionToRepo modifies a subset of the project ref to use the repo values instead. This subset is based on the pages used in Spruce. If project settings aren't given, we should assume we're defaulting to repo and we need to create our own project settings event after completing the update.
func DisableStaleContainerTasks ¶
DisableStaleContainerTasks disables all container tasks that have been scheduled to run for a long time without actually dispatching the task.
func DoProjectActivation ¶
func FindAndTranslateProjectForPatch ¶
func FindAndTranslateProjectForPatch(ctx context.Context, settings *evergreen.Settings, p *patch.Patch) (*Project, *ParserProject, error)
FindAndTranslateProjectForPatch translates a parser project for a patch into a project. This assumes that the version may not exist yet (i.e. the patch is unfinalized); otherwise FindAndTranslateProjectForVersion is equivalent.
func FindAndTranslateProjectForVersion ¶
func FindAndTranslateProjectForVersion(ctx context.Context, settings *evergreen.Settings, v *Version, preGeneration bool) (*Project, *ParserProject, error)
FindAndTranslateProjectForVersion translates a parser project for a version into a Project. Also sets the project ID. If the preGeneration flag is true, this function will attempt to fetch and translate the parser project from before it was modified by generate.tasks
func FindLatestRevisionAndAuthorForProject ¶
func FindLatestRevisionAndAuthorForProject(ctx context.Context, projectId string) (string, string, error)
FindLatestRevisionAndAuthorForProject returns the latest revision and author ID for the project, and returns an error if it's not found.
func FindLatestVersionWithValidProject ¶
func FindLatestVersionWithValidProject(ctx context.Context, projectId string, preGeneration bool) (*Version, *Project, *ParserProject, error)
FindLatestVersionWithValidProject returns the latest mainline version that has a valid project configuration. It also returns the intermediate and final project configurations. If the preGeneration flag is set, this will retrieve a cached version of this version's parser project from before it was modified by generate.tasks, which is required for child patches.
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 FindPredictedMakespan ¶
FindPredictedMakespan, given a list of tasks that have been completed, finds the optimal makespan of that build. While it's possible for tasks to depend on tasks outside its build, this function does not take that into account because it is meant to compute the optimal makespan for a single build
func FindProjectForVersion ¶
func FindTasksForHistory ¶
FindTasksForHistory finds tasks with the given task name, build variant, and project ID between the specified bounds. The result is sorted by order numbers, descending (e.g. 100, 99, 98, 97, ...).
func FixStaleTask ¶
FixStaleTask fixes a task that has exceeded the heartbeat timeout. The current task execution is marked as finished and, if the task was not aborted, the task is reset. If the task was aborted, we do not reset the task and it is just marked as failed alongside other necessary updates to finish the task.
func GetAndLogProjectModified ¶
func GetAndLogProjectModified(ctx context.Context, id, userId string, isRepo bool, before *ProjectSettings) error
GetAndLogProjectModified retrieves the project settings before and after some change, and logs an event for the modification.
func GetAndLogProjectRepoAttachment ¶
func GetAndLogProjectRepoAttachment(ctx context.Context, id, userId, attachmentType string, isRepo bool, before *ProjectSettings) error
GetAndLogProjectRepoAttachment retrieves the project settings before and after the change, and logs the modification as a repo attachment/detachment event.
func GetBuildBaronSettings ¶
func GetBuildBaronSettings(ctx context.Context, projectId string, version string) (evergreen.BuildBaronSettings, bool)
GetBuildBaronSettings retrieves build baron settings from project settings. Project page settings takes precedence, otherwise fallback to project config yaml. Returns build baron settings and ok if found.
func GetEstimatedStartTime ¶
GetEstimatedStartTime returns the estimated start time for a task
func GetIdentifierForProject ¶
func GetLatestMainlineTask ¶
GetLatestMainlineTask returns the most recent task matching the given parameters, activated or unactivated, on the waterfall.
func GetNewRevisionOrderNumber ¶
GetNewRevisionOrderNumber gets a new revision order number for a project.
func GetNextCronTime ¶
GetNextCronTime returns the next valid batch time
func GetNumberOfEnabledProjects ¶
GetNumberOfEnabledProjects returns the current number of enabled projects on evergreen.
func GetNumberOfEnabledProjectsForOwnerRepo ¶
GetNumberOfEnabledProjectsForOwnerRepo returns the number of enabled projects for a given owner/repo.
func GetOffsetVersionOrderByDate ¶
func GetOffsetVersionOrderByDate(ctx context.Context, date time.Time, projectId string) (int, error)
GetOffsetVersionOrderByDate returns the revision order of a system-requested version created on or before the given date, incremented by 1 to account for the Waterfall query being non-inclusive.
func GetOffsetVersionOrderByRevision ¶
func GetOffsetVersionOrderByRevision(ctx context.Context, revision string, projectId string, limit int) (int, error)
GetOffsetVersionOrderByRevision returns the revision order of a system-requested version within close range of the given githash revision. Notably, it does NOT return the revision order of the version with that githash revision. This is because we want the target commit to be shown in the center of the page.
func GetOldestMainlineTask ¶
GetOldestMainlineTask returns the oldest task matching the given parameters, activated or unactivated, on the waterfall. Note that we cannot assume that the oldest task has an order of 1, because new tasks can be introduced over time, and because the task TTL deletes old tasks.
func GetPatchedProject ¶
func GetPatchedProject(ctx context.Context, settings *evergreen.Settings, p *patch.Patch) (*Project, *PatchConfig, error)
GetPatchedProject creates and validates a project by fetching latest commit information from GitHub and applying the patch to the latest remote configuration. Also returns the condensed yaml string for storage. The error returned can be a validation error.
func GetPatchedProjectConfig ¶
GetPatchedProjectConfig returns the project configuration by fetching the latest commit information from GitHub and applying the patch to the latest remote configuration. The error returned can be a validation error.
func GetPreviousPageCommitOrderNumber ¶
func GetPreviousPageCommitOrderNumber(ctx context.Context, projectId string, order int, limit int, requesters []string) (*int, error)
GetPreviousPageCommitOrderNumber returns the first mainline commit that is LIMIT activated versions more recent than the specified commit
func GetProjectAdminRole ¶
GetProjectAdminRole returns the project admin role ID for the given project.
func GetRepoAdminRole ¶
GetRepoAdminRole returns the repo admin role ID for the given repo.
func GetRepoAdminScope ¶
GetRepoAdminScope returns the scope ID that includes all branch projects, regardless of restricted/unrestricted.
func GetSearchReturnInfo ¶
func GetSearchReturnInfo(ctx context.Context, taskId string, exec string) (*thirdparty.SearchReturnInfo, buildBaronConfig, error)
func GetSetupScriptForTask ¶
func GetTaskOrderByDate ¶
func GetTaskOrderByDate(ctx context.Context, date time.Time, opts FindTaskHistoryOptions) (int, error)
GetTaskOrderByDate returns the revision order of a system-requested task created on or before the given date. The task must match a specific display name, build variant, and project ID.
func GetTasksWithOptions ¶
func GetTasksWithOptions(ctx context.Context, projectName string, taskName string, opts GetProjectTasksOpts) ([]task.Task, error)
GetTasksWithOptions will find the matching tasks run in the last number of versions(denoted by Limit) that exist for a given project. This function may also filter on tasks running on a specific build variant, or tasks that come after a specific revision order number.
func GetUnrestrictedBranchProjectsScope ¶
GetUnrestrictedBranchProjectsScope returns the scope ID that includes the unrestricted branches for this project.
func GetUpstreamProjectName ¶
func GetVariantsWithMatrices ¶
func GetVariantsWithMatrices(ase *axisSelectorEvaluator, axes []matrixAxis, bvs []parserBV) ([]parserBV, []error)
func GetVarsParameterPath ¶
GetVarsParameterPath returns the parameter path for project variables in the given project.
func GetVersionAuthorID ¶
func HandleEndTaskForGithubMergeQueueTask ¶
HandleEndTaskForGithubMergeQueueTask stops running GitHub merge queue tasks as soon as one task is finished. This is done to save resources and speed up the CI processing by preventing unnecessary tasks from running.
func HasMatchingGitTagAliasAndRemotePath ¶
func HasMatchingGitTagAliasAndRemotePath(ctx context.Context, projectId, tag string) (bool, string, error)
HasMatchingGitTagAliasAndRemotePath returns matching git tag aliases that match the given git tag
func IsAdminRepoOrProjectRole ¶
IsAdminRepoOrProjectRole returns whether or not the role ID is for an admin repo or project role.
func IsPatchAlias ¶
func IsPerfEnabledForProject ¶
func IsWebhookConfigured ¶
func IsWebhookConfigured(ctx context.Context, project string, version string) (evergreen.WebHook, bool, error)
IsWebhookConfigured retrieves webhook configuration from the project settings.
func LogProjectAdded ¶
LogProjectAdded logs a project added event.
func LogProjectEvent ¶
func LogProjectEvent(ctx context.Context, eventType string, projectId string, eventData ProjectChangeEvent) error
LogProjectEvent logs a project event.
func LogProjectModified ¶
func LogProjectModified(ctx context.Context, projectId, username string, before, after *ProjectSettings) error
LogProjectModified logs an event for a modification of a project's settings. Secrets are redacted from the event data.
func LogProjectRepoAttachment ¶
func LogProjectRepoAttachment(ctx context.Context, projectId, username, attachmentType string, before, after *ProjectSettings) error
LogProjectRepoAttachment logs an event for either the attachment of a project to a repo, or a detachment of a project from a repo.
func MakePatchedConfig ¶
func MakePatchedConfig(ctx context.Context, opts GetProjectOpts, projectConfig string) ([]byte, error)
MakePatchedConfig takes in the project's remote file path containing the project YAML configuration and a stringified version of the project YAML configuration, and returns an unmarshalled version of the project with the patch applied.
func MarkEnd ¶
func MarkEnd(ctx context.Context, settings *evergreen.Settings, t *task.Task, caller string, finishTime time.Time, detail *apimodels.TaskEndDetail) error
MarkEnd updates the task as being finished, performs a stepback if necessary, and updates the build status.
func MarkHostTaskDispatched ¶
MarkHostTaskDispatched marks a task as being dispatched to the host. If it's part of a display task, update the display task as necessary.
func MarkOneTaskReset ¶
func MarkStart ¶
MarkStart updates the task, build, version and if necessary, patch documents with the task start time
func MarkTasksReset ¶
MarkTasksReset resets many tasks by their IDs. For execution tasks, this also resets their parent display tasks.
func MarkUnallocatableContainerTasksSystemFailed ¶
func MarkUnallocatableContainerTasksSystemFailed(ctx context.Context, settings *evergreen.Settings, candidateTaskIDs []string) error
MarkUnallocatableContainerTasksSystemFailed marks any container task within the candidate task IDs that needs to re-allocate a container but has used up all of its container allocation attempts as finished due to system failure.
func ModifyVersion ¶
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 ParserProjectUpsertOne ¶
func ParserProjectUpsertOne(ctx context.Context, settings *evergreen.Settings, method evergreen.ParserProjectStorageMethod, pp *ParserProject) error
ParserProjectUpsertOne is a convenience wrapper to upsert one parser project to persistent storage.
func ParserProjectUpsertOneWithS3Fallback ¶
func ParserProjectUpsertOneWithS3Fallback(ctx context.Context, settings *evergreen.Settings, method evergreen.ParserProjectStorageMethod, pp *ParserProject) (evergreen.ParserProjectStorageMethod, error)
ParserProjectUpsertOneWithS3Fallback attempts to upsert the parser project into persistent storage using the given storage method. If it fails due to DB document size limitations, it will attempt to fall back to using S3 to store it. If it succeeds, this returns the actual project storage method used to persist the parser project; otherwise, it returns the originally-requested storage method.
func PopulateExpansions ¶
func PopulateExpansions(ctx context.Context, t *task.Task, h *host.Host, knownHosts string) (util.Expansions, error)
PopulateExpansions returns expansions for a task, excluding build variant expansions, project variables, and project/version parameters.
func ProjectCanDispatchTask ¶
func ProjectCanDispatchTask(pRef *ProjectRef, t *task.Task) (canDispatch bool, reason string)
ProjectCanDispatchTask returns a boolean indicating if the task can be dispatched based on the project ref's settings and optionally includes a particular reason that the task can or cannot be dispatched.
func RefreshTasksCache ¶
RefreshTasksCache updates a build document so that the tasks cache reflects the correct current state of the tasks it represents.
func RemoveAdminFromProjects ¶
RemoveAdminFromProjects removes a user from all Admin slices of every project and repo
func RemoveGitTagFromVersions ¶
RemoveGitTagFromVersions removes the git tag from all versions that have the tag. It filters by owner and repo to limit the scope of the operation so we don't accidentally remove same-named tags from other repositories.
func RemoveProjectAlias ¶
RemoveProjectAlias removes a project alias with the given document ID from the database.
func ResetTaskOrDisplayTask ¶
func ResetTaskOrDisplayTask(ctx context.Context, settings *evergreen.Settings, t *task.Task, user, origin string, failedOnly bool, detail *apimodels.TaskEndDetail) error
ResetTaskOrDisplayTask is a wrapper for TryResetTask that handles execution and display tasks that are restarted from sources separate from marking the task finished. If an execution task, attempts to restart the display task instead. Marks display tasks as reset when finished and then check if it can be reset immediately.
func RestartBuild ¶
func RestartBuild(ctx context.Context, b *build.Build, taskIDs []string, abortInProgress bool, caller string) error
RestartBuild restarts completed tasks belonging to the given build. If no task IDs are provided, all completed task IDs in the build are restarted. If abortInProgress is true, it also sets the abort and reset flags on any in-progress tasks.
func RestartVersion ¶
func RestartVersion(ctx context.Context, versionID string, taskIDs []string, abortInProgress bool, caller string) error
RestartVersion restarts completed tasks belonging to the given version ID. If no task IDs are provided, all completed task IDs in the version are restarted. If abortInProgress is true, it also sets the abort and reset flags on any in-progress tasks.
func RestartVersions ¶
func RestartVersions(ctx context.Context, versionsToRestart []*VersionToRestart, abortInProgress bool, caller string) error
RestartVersions restarts selected tasks for a set of versions. If abortInProgress is true for any version, it also sets the abort and reset flags on any in-progress tasks belonging to that version.
func SaveProjectPageForSection ¶
func SaveProjectPageForSection(ctx context.Context, projectId string, p *ProjectRef, section ProjectPageSection, isRepo bool) (bool, error)
SaveProjectPageForSection updates the project or repo ref variables for the section (if no project is given, we unset to default to repo).
func SetAWSKeyForProject ¶
func SetActiveState ¶
func SetActiveStateById ¶
func SetBuildPriority ¶
SetBuildPriority updates the priority field of all tasks associated with the given build id.
func SetNumDependents ¶
SetNumDependents sets NumDependents for each task in tasks. NumDependents is the number of tasks depending on the task.
func SetTaskPriority ¶
SetTaskPriority sets the priority for the given task. Any of the task's dependencies that have a lower priority than the one being set for this task will also have their priority increased.
func SetTracksPushEvents ¶
func SetTracksPushEvents(ctx context.Context, projectRef *ProjectRef) (bool, error)
SetTracksPushEvents returns true if the GitHub app is installed on the owner/repo for the given project.
func SetVersionActivated ¶
SetVersionActivated sets version activated field to specified boolean given a version id.
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 SetVersionsPriority ¶
func SetVersionsPriority(ctx context.Context, versionIds []string, priority int64, caller string) error
SetVersionsPriority updates the priority field of all tasks and child tasks associated with the given version ids.
func TryMarkVersionStarted ¶
func TryResetTask ¶
func TryResetTask(ctx context.Context, settings *evergreen.Settings, taskId, user, origin string, detail *apimodels.TaskEndDetail) error
TryResetTask resets a task. Individual execution tasks cannot be reset - to reset an execution task, the given task ID must be that of its parent display task.
func UpdateAdminRoles ¶
func UpdateAdminRoles(ctx context.Context, project *ProjectRef, toAdd, toDelete []string) error
func UpdateBlockedDependencies ¶
func UpdateBlockedDependencies(ctx context.Context, dependencies []task.Task, ignoreDependencyStatusForBlocking bool) error
UpdateBlockedDependencies traverses the dependency graph and recursively sets each parent dependency in dependencies as unattainable in depending tasks. It updates the status of builds as well, in case they change due to blocking dependencies. The ignoreDependencyStatusForBlocking indicates whether all tasks that depend on the given tasks will be updated (i.e., whether the task's Dependency.Status will be ignored).
func UpdateBuildAndVersionStatusForTask ¶
UpdateBuildAndVersionStatusForTask updates the status of the task's build based on all the tasks in the build and the task's version based on all the builds in the version. Also update build and version Github statuses based on the subset of tasks and builds included in github checks
func UpdateDisplayTaskForTask ¶
UpdateDisplayTaskForTask updates the status of the given execution task's display task
func UpdateLastRevision ¶
UpdateLastRevision updates the last created revision of a project.
func UpdateNextPeriodicBuild ¶
func UpdateNextPeriodicBuild(ctx context.Context, projectId string, definition *PeriodicBuildDefinition) error
UpdateNextPeriodicBuild updates the periodic build run time for either the project or repo ref depending on where it's defined.
func UpdateOtelMetadata ¶
UpdateOtelMetadata is called to update the task's Details with DiskDevices and TraceID. If there's an error here, we log but we don't return an error.
func UpdateProjectRevision ¶
UpdateProjectRevision updates the given project's revision
func UpdateUnblockedDependencies ¶
UpdateUnblockedDependencies recursively marks all unattainable dependencies as attainable.
func UpdateVersionAndPatchStatusForBuilds ¶
UpdateVersionAndPatchStatusForBuilds updates the status of all versions, patches and builds associated with the given input list of build IDs.
func UpdateVersionMessage ¶
func UpsertAliasesForProject ¶
func UpsertAliasesForProject(ctx context.Context, aliases []ProjectAlias, projectId string) error
func UserHasRepoViewPermission ¶
UserHasRepoViewPermission returns true if the user has permission to view any branch project settings.
func ValidateBbProject ¶
func ValidateContainers ¶
func ValidateContainers(ctx context.Context, ecsConf evergreen.ECSConfig, pRef *ProjectRef, containers []Container) error
ValidateContainers inspects the list of containers defined in the project YAML and checks that each are properly configured, and that their definitions can coexist with what is defined for container sizes on the project admin page.
func ValidateEnabledProjectsLimit ¶
func ValidateEnabledProjectsLimit(ctx context.Context, config *evergreen.Settings, originalMergedRef, mergedRefToValidate *ProjectRef) (int, error)
ValidateEnabledProjectsLimit takes in a the original and new merged project refs and validates project limits, assuming the given project is going to be enabled. Returns a status code and error if we are already at limit with enabled projects.
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 ValidateProjectAliases ¶
func ValidateProjectAliases(aliases []ProjectAlias, aliasType string) []string
func ValidateTVPairs ¶
ValidateTVPairs checks that all of a set of variant/task pairs exist in a given project.
func ValidateTask ¶
func ValidateTask(ctx context.Context, taskId string, checkSecret bool, r *http.Request) (*task.Task, int, error)
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.
func ValidateTriggerDefinition ¶
func ValidateTriggerDefinition(ctx context.Context, definition patch.PatchTriggerDefinition, parentProject string) (patch.PatchTriggerDefinition, error)
func VersionById ¶
ById returns a db.Q object which will filter on {_id : <the id param>}
func VersionByIds ¶
ByIds returns a db.Q object which will find any versions whose _id appears in the given list.
func VersionByLastTaskActivation ¶
VersionByLastTaskActivation finds the most recent non-patch, non-ignored versions in a project that have a particular task activated.
func VersionByLastVariantActivation ¶
VersionByLastVariantActivation finds the most recent non-patch, non-ignored versions in a project that have a particular variant activated.
func VersionByMostRecentActivated ¶
VersionByMostRecentActivated finds the most recently activated non-ignored mainline commit version within a project, ordered by most recently created to oldest.
func VersionByMostRecentNonIgnored ¶
VersionByMostRecentNonIgnored finds all non-ignored mainline commit versions within a project, ordered by most recently created to oldest, before a given time.
func VersionByMostRecentSystemRequester ¶
VersionByMostRecentSystemRequester finds all mainline versions within a project, ordered by most recently created to oldest.
func VersionByProjectIdAndCreateTime ¶
VersionByProjectIdAndCreateTime finds the most recent system-requested version created on or before a specified createTime.
func VersionByProjectIdAndOrder ¶
ByProjectIdAndOrder finds non-patch versions for the given project with revision order numbers less than or equal to revisionOrderNumber.
func VersionBySystemRequesterOrdered ¶
if startOrder is specified, only returns older versions (i.e. with a smaller revision number)
func VersionCount ¶
Count returns the number of hosts that satisfy the given query.
func VersionUpdateOne ¶
UpdateOne updates one version.
func VersionsAllUnactivatedNonIgnored ¶
VersionsAllUnactivatedNonIgnored finds all unactivated, non-ignored mainline commit versions within a project, ordered by most recently created to oldest. This is used when no previously activated versions exist (e.g., new projects) to ensure all commits get activated.
func VersionsUnactivatedSinceLastActivated ¶
func VersionsUnactivatedSinceLastActivated(projectId string, ts time.Time, lastActivatedOrderNum, limit int) db.Q
VersionsUnactivatedSinceLastActivated finds all unactivated, non-ignored versions that are newer than the most recently activated version for a project. This ensures that all commits since the last activation get activated together.
Types ¶
type ActivationStatus ¶
type ActivationStatus struct {
Activated bool `bson:"activated" json:"activated"`
ActivateAt time.Time `bson:"activate_at,omitempty" json:"activate_at,omitempty"`
}
func (*ActivationStatus) ShouldActivate ¶
func (s *ActivationStatus) ShouldActivate(now time.Time) bool
type BatchTimeTaskStatus ¶
type BatchTimeTaskStatus struct {
TaskName string `bson:"task_name" json:"task_name"`
TaskId string `bson:"task_id,omitempty" json:"task_id,omitempty"`
ActivationStatus `bson:",inline"`
}
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 ¶
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"`
Tags []string `yaml:"tags,omitempty" bson:"tags"`
// 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"`
// If CronBatchTime is not empty, then override the project settings with cron syntax,
// with BatchTime and CronBatchTime being mutually exclusive.
CronBatchTime string `yaml:"cron,omitempty" bson:"cron,omitempty"`
// If Activate is set to false, then we don't initially activate the build
// variant. By default, the build variant is activated.
Activate *bool `yaml:"activate,omitempty" bson:"activate,omitempty"`
// Disable will disable tasks in the build variant, preventing them from
// running and omitting them if they're dependencies. By default, the build
// variant is not disabled.
Disable *bool `yaml:"disable,omitempty" bson:"disable"`
// Patchable will prevent tasks in this build variant from running in
// patches when set to false. By default, the build variant runs in patches.
Patchable *bool `yaml:"patchable,omitempty" bson:"patchable,omitempty"`
// PatchOnly will only allow tasks in the build variant to run in patches
// when set to true. By default, the build variant runs for non-patches.
PatchOnly *bool `yaml:"patch_only,omitempty" bson:"patch_only,omitempty"`
// AllowForGitTag will prevent tasks in this build variant from running in
// git tag versions when set to false. By default, the build variant runs in
// git tag versions.
AllowForGitTag *bool `yaml:"allow_for_git_tag,omitempty" bson:"allow_for_git_tag,omitempty"`
// GitTagOnly will only allow tasks in the build variant to run in git tag
// versions when set to true. By default, the build variant runs in non-git
// tag versions.
GitTagOnly *bool `yaml:"git_tag_only,omitempty" bson:"git_tag_only,omitempty"`
// AllowedRequesters lists all internal requester types which can run a
// task. If set, the allowed requesters take precedence over other
// requester-related filters such as Patchable, PatchOnly, AllowForGitTag,
// and GitTagOnly. By default, all requesters are allowed to run the task.
AllowedRequesters []evergreen.UserRequester `yaml:"allowed_requesters,omitempty" bson:"allowed_requesters,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 indicates if previous mainline tasks should be run in case of a failure.
Stepback *bool `yaml:"stepback,omitempty" bson:"stepback,omitempty"`
// DeactivatePrevious indicates if previous mainline tasks should be deactivated in case of success.
DeactivatePrevious *bool `yaml:"deactivate_previous,omitempty" bson:"deactivate_previous,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"`
// Paths specifies gitignore-style patterns for files that should trigger
// this build variant when changed. If provided, the build variant will only
// run if at least one changed file matches one of these patterns.
Paths []string `yaml:"paths,omitempty" bson:"paths,omitempty"`
// all of the tasks/groups to be run on the build variant, compile through tests.
Tasks []BuildVariantTaskUnit `yaml:"tasks,omitempty" bson:"tasks"`
DisplayTasks []patch.DisplayTask `yaml:"display_tasks,omitempty" bson:"display_tasks,omitempty"`
// TranslationWarnings are validation warnings that are only detectable during project translation.
// e.g. task selectors that don't target any tasks in a build variant but the build
// variant still has tasks.
TranslationWarnings []string `yaml:"-" bson:"-"`
}
func (BuildVariant) ChangedFilesMatchPaths ¶
func (bv BuildVariant) ChangedFilesMatchPaths(changedFiles []string) bool
ChangedFilesMatchPaths takes in a slice of filepaths and checks to see if any files are matched by the build variant's Paths patterns. If Paths is empty or no changed files are provided, it returns true (no path filtering). If Paths is provided, it returns true only if at least one file matches.
func (BuildVariant) Get ¶
func (b BuildVariant) Get(name string) (BuildVariantTaskUnit, error)
func (BuildVariant) GetDisplayTask ¶
func (b BuildVariant) GetDisplayTask(name string) *patch.DisplayTask
type BuildVariantHistoryIterator ¶
type BuildVariantHistoryIterator interface {
GetItems(ctx context.Context, beforeCommit *Version, numCommits int) ([]bson.M, []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 indicates that it is a task group. This is always populated for
// task groups after project translation.
IsGroup bool `yaml:"-" bson:"-"`
// IsPartOfGroup indicates that this unit is a task within a task group. If
// this is set, then GroupName is also set.
// Note that project translation does not expand task groups into their
// individual tasks, so this is only set for special functions that
// explicitly expand task groups into individual task units (such as
// FindAllBuildVariantTasks).
IsPartOfGroup bool `yaml:"-" bson:"-"`
// GroupName is the task group name if this is a task in a task group. This
// is only set if the task unit is a task within a task group (i.e.
// IsPartOfGroup is set). If the task unit is the task group itself, it is
// not populated (Name is the task group name).
// Note that project translation does not expand task groups into their
// individual tasks, so this is only set for special functions that
// explicitly expand task groups into individual task units (such as
// FindAllBuildVariantTasks).
GroupName string `yaml:"-" bson:"-"`
// Variant is the build variant that the task unit is part of. This is
// always populated after translating the parser project to the project.
Variant string `yaml:"-" bson:"-"`
// fields to overwrite ProjectTask settings.
Patchable *bool `yaml:"patchable,omitempty" bson:"patchable,omitempty"`
PatchOnly *bool `yaml:"patch_only,omitempty" bson:"patch_only,omitempty"`
Disable *bool `yaml:"disable,omitempty" bson:"disable,omitempty"`
AllowForGitTag *bool `yaml:"allow_for_git_tag,omitempty" bson:"allow_for_git_tag,omitempty"`
GitTagOnly *bool `yaml:"git_tag_only,omitempty" bson:"git_tag_only,omitempty"`
AllowedRequesters []evergreen.UserRequester `yaml:"allowed_requesters,omitempty" bson:"allowed_requesters,omitempty"`
Priority int64 `yaml:"priority,omitempty" bson:"priority"`
DependsOn []TaskUnitDependency `yaml:"depends_on,omitempty" bson:"depends_on"`
// the distros that the task can be run on
RunOn []string `yaml:"run_on,omitempty" bson:"run_on"`
Stepback *bool `yaml:"stepback,omitempty" bson:"stepback,omitempty"`
// 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"`
// If CronBatchTime is not empty, then override the project settings with cron syntax,
// with BatchTime and CronBatchTime being mutually exclusive.
CronBatchTime string `yaml:"cron,omitempty" bson:"cron,omitempty"`
// If Activate is set to false, then we don't initially activate the task.
Activate *bool `yaml:"activate,omitempty" bson:"activate,omitempty"`
// PS is the command to run for process diagnostics.
PS *string `yaml:"ps,omitempty" bson:"ps,omitempty"`
// CreateCheckRun will create a check run on GitHub if set.
CreateCheckRun *CheckRun `yaml:"create_check_run,omitempty" bson:"create_check_run,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, requester string) []BuildVariantTaskUnit
CreateTasksFromGroup expands a task group into its individual tasks and returns a build variant task unit for each task in the task group.
func (*BuildVariantTaskUnit) HasCheckRun ¶
func (bvt *BuildVariantTaskUnit) HasCheckRun() bool
HasCheckRun returns if the build variant task specifies a checkrun
func (*BuildVariantTaskUnit) HasSpecificActivation ¶
func (bvt *BuildVariantTaskUnit) HasSpecificActivation() bool
HasSpecificActivation returns if the build variant task specifies an activation condition that overrides the default, such as cron/batchtime, disabling the task, or explicitly activating it.
func (*BuildVariantTaskUnit) IsDisabled ¶
func (bvt *BuildVariantTaskUnit) IsDisabled() bool
IsDisabled returns whether or not this build variant task is disabled.
func (*BuildVariantTaskUnit) Populate ¶
func (bvt *BuildVariantTaskUnit) Populate(pt ProjectTask, bv BuildVariant)
Populate updates the base fields of the BuildVariantTaskUnit with fields from the project task definition and build variant definition. When there are conflicting settings defined at different levels, the priority of settings are (from highest to lowest): * Task settings within a build variant's list of tasks * Task settings within a task group's list of tasks * Project task's settings * Build variant's settings
func (*BuildVariantTaskUnit) SkipOnGitTagBuild ¶
func (bvt *BuildVariantTaskUnit) SkipOnGitTagBuild() bool
func (*BuildVariantTaskUnit) SkipOnNonGitTagBuild ¶
func (bvt *BuildVariantTaskUnit) SkipOnNonGitTagBuild() bool
func (*BuildVariantTaskUnit) SkipOnNonPatchBuild ¶
func (bvt *BuildVariantTaskUnit) SkipOnNonPatchBuild() bool
func (*BuildVariantTaskUnit) SkipOnPatchBuild ¶
func (bvt *BuildVariantTaskUnit) SkipOnPatchBuild() bool
func (*BuildVariantTaskUnit) SkipOnRequester ¶
func (bvt *BuildVariantTaskUnit) SkipOnRequester(requester string) bool
func (*BuildVariantTaskUnit) ToTVPair ¶
func (bvt *BuildVariantTaskUnit) ToTVPair() TVPair
func (*BuildVariantTaskUnit) UnmarshalYAML ¶
func (bvt *BuildVariantTaskUnit) UnmarshalYAML(unmarshal func(any) 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 BuildVariantsByName ¶
type BuildVariantsByName []BuildVariant
BuildVariantsByName represents a slice of project config build variants that can be sorted by name.
func (BuildVariantsByName) Len ¶
func (b BuildVariantsByName) Len() int
func (BuildVariantsByName) Less ¶
func (b BuildVariantsByName) Less(i, j int) bool
func (BuildVariantsByName) Swap ¶
func (b BuildVariantsByName) Swap(i, j int)
type CachedDispatcher ¶
type CheckRun ¶
type CheckRun struct {
// PathToOutputs is a local file path to an output json file for the checkrun.
PathToOutputs string `yaml:"path_to_outputs" bson:"path_to_outputs"`
}
CheckRun is used to provide information about a github check run.
type CommitQueueParams ¶
type CommitQueueParams struct {
Enabled *bool `bson:"enabled" json:"enabled" yaml:"enabled"`
MergeMethod string `bson:"merge_method" json:"merge_method" yaml:"merge_method"`
Message string `bson:"message,omitempty" json:"message,omitempty" yaml:"message"`
}
func (*CommitQueueParams) IsEnabled ¶
func (p *CommitQueueParams) IsEnabled() bool
type Container ¶
type Container struct {
Name string `yaml:"name" bson:"name"`
WorkingDir string `yaml:"working_dir,omitempty" bson:"working_dir"`
Image string `yaml:"image" bson:"image" plugin:"expand"`
Size string `yaml:"size,omitempty" bson:"size"`
Credential string `yaml:"credential,omitempty" bson:"credential"`
Resources *ContainerResources `yaml:"resources,omitempty" bson:"resources"`
System ContainerSystem `yaml:"system,omitempty" bson:"system"`
}
Container holds all properties that are configurable when defining a container for tasks and build variants to run on in a project YAML file.
type ContainerResources ¶
type ContainerResources struct {
Name string `bson:"name,omitempty" json:"name" yaml:"name"`
MemoryMB int `bson:"memory_mb,omitempty" json:"memory_mb" yaml:"memory_mb"`
CPU int `bson:"cpu,omitempty" json:"cpu" yaml:"cpu"`
}
ContainerResources specifies the computing resources given to the container. MemoryMB is the memory (in MB) that the container will be allocated, and CPU is the CPU units that will be allocated. 1024 CPU units is equivalent to 1vCPU.
type ContainerSecret ¶
type ContainerSecret struct {
// Name is the user-friendly display name of the secret.
Name string `bson:"name" json:"name" yaml:"name"`
// Type is the type of secret that is stored.
Type ContainerSecretType `bson:"type" json:"type" yaml:"type"`
// ExternalName is the name of the stored secret.
ExternalName string `bson:"external_name" json:"external_name" yaml:"external_name"`
// ExternalID is the unique resource identifier for the secret. This can be
// used to access and modify the secret.
ExternalID string `bson:"external_id" json:"external_id" yaml:"external_id"`
// Value is the plaintext value of the secret. This is not stored and must
// be retrieved using the external ID.
Value string `bson:"-" json:"-" yaml:"-"`
}
ContainerSecret specifies the username and password required for authentication on a private image repository. The credential is saved in AWS Secrets Manager upon saving to the ProjectRef
func ValidateContainerSecrets ¶
func ValidateContainerSecrets(settings *evergreen.Settings, projectID string, original, toUpdate []ContainerSecret) ([]ContainerSecret, error)
ValidateContainerSecrets checks that the project-level container secrets to be added/updated are valid and sets default values where necessary. It returns the validated and merged container secrets, including the unmodified secrets, the modified secrets, and the new secrets to create.
func (ContainerSecret) Validate ¶
func (c ContainerSecret) Validate() error
Validate that essential container secret fields are properly defined for a new secret.
type ContainerSecretCache ¶
type ContainerSecretCache struct{}
ContainerSecretCache implements the cocoa.SecretCache to provide a cache to store secrets in the DB's project ref.
func (ContainerSecretCache) Delete ¶
func (c ContainerSecretCache) Delete(ctx context.Context, externalID string) error
Delete deletes a container secret from the project ref by its external identifier.
func (ContainerSecretCache) GetTag ¶
func (c ContainerSecretCache) GetTag() string
GetTag returns the tag used for tracking cloud container secrets.
func (ContainerSecretCache) Put ¶
func (c ContainerSecretCache) Put(ctx context.Context, sc cocoa.SecretCacheItem) error
Put sets the external ID for a project ref's container secret by its name.
type ContainerSecretType ¶
type ContainerSecretType string
ContainerSecretType represents a particular type of container secret, which designates its purpose.
const ( // ContainerSecretPodSecret is a container secret representing the Evergreen // agent's pod secret. ContainerSecretPodSecret ContainerSecretType = "pod_secret" // ContainerSecretRepoCreds is a container secret representing an image // repository's credentials. ContainerSecretRepoCreds ContainerSecretType = "repository_credentials" )
func (ContainerSecretType) Validate ¶
func (t ContainerSecretType) Validate() error
Validate checks that the container secret type is recognized.
type ContainerSystem ¶
type ContainerSystem struct {
CPUArchitecture evergreen.ContainerArch `yaml:"cpu_architecture,omitempty" bson:"cpu_architecture"`
OperatingSystem evergreen.ContainerOS `yaml:"operating_system,omitempty" bson:"operating_system"`
WindowsVersion evergreen.WindowsVersion `yaml:"windows_version,omitempty" bson:"windows_version"`
}
ContainerSystem specifies the architecture and OS for the running container to use.
func (ContainerSystem) Validate ¶
func (c ContainerSystem) Validate() error
Validate that essential ContainerSystem fields are properly defined and no data contradictions exist.
type ContainerTaskQueue ¶
type ContainerTaskQueue struct {
// contains filtered or unexported fields
}
ContainerTaskQueue represents an iterator that represents an ordered queue of container tasks that are ready be allocated a container.
func NewContainerTaskQueue ¶
func NewContainerTaskQueue(ctx context.Context) (*ContainerTaskQueue, error)
NewContainerTaskQueue returns a populated iterator representing an ordered queue of container tasks that are ready to be allocated a container.
func (*ContainerTaskQueue) HasNext ¶
func (q *ContainerTaskQueue) HasNext() bool
HasNext returns whether or not there are more container tasks that have not yet been returned.
func (*ContainerTaskQueue) Len ¶
func (q *ContainerTaskQueue) Len() int
Len returns the number of tasks remaining.
func (*ContainerTaskQueue) Next ¶
func (q *ContainerTaskQueue) Next() *task.Task
Next returns the next task that's ready for container allocation. It will return a nil task once there are no tasks remaining in the queue.
type Context ¶
type Context struct {
Task *task.Task
Build *build.Build
Version *Version
Patch *patch.Patch
ProjectRef *ProjectRef
RepoRef *RepoRef
// 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 ¶
func LoadContext(ctx context.Context, taskId, buildId, versionId, patchId, projectId string) (Context, error)
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.
func (*Context) GetProjectOrRepoRefId ¶
func (*Context) GetProjectRef ¶
func (ctx *Context) GetProjectRef(c context.Context) (*ProjectRef, error)
func (*Context) HasProjectOrRepoRef ¶
type DistroQueueInfo ¶
type DistroQueueInfo struct {
// Length represents the number of tasks waiting in the queue
Length int `bson:"length" json:"length"`
// LengthWithDependenciesMet represents the number of tasks waiting in the queue with their dependencies met
LengthWithDependenciesMet int `bson:"length_with_dependencies_met" json:"length_with_dependencies_met"`
// ExpectedDuration represents the sum of the expected runtime of all tasks waiting in the queue with their dependencies met
ExpectedDuration time.Duration `bson:"expected_duration" json:"expected_duration"`
// MaxDurationThreshold is the target length of time the host allocator aims to complete dependency-fulfilled tasks in the queue
// when determining how many hosts to spawn
MaxDurationThreshold time.Duration `bson:"max_duration_threshold" json:"max_duration_threshold"`
// PlanCreatedAt represents the timestamp at which the queue plan was initialized
PlanCreatedAt time.Time `bson:"created_at" json:"created_at"`
// CountDurationOverThreshold represents the number of tasks that have their dependencies met and are expected to take over MaxDurationThreshold
CountDurationOverThreshold int `bson:"count_over_threshold" json:"count_over_threshold"`
// DurationOverThreshold represents the sum of the expected durations of all tasks that have their dependencies met
// and are expected to take over MaxDurationThreshold
DurationOverThreshold time.Duration `bson:"duration_over_threshold" json:"duration_over_threshold"`
// CountWaitOverThreshold represents the number of tasks that have been waiting the MaxDurationThreshold since their dependencies were met
CountWaitOverThreshold int `bson:"count_wait_over_threshold" json:"count_wait_over_threshold"`
// TaskGroupInfos is a list of info that contains the same information as in this struct, but granularized to be only for tasks in
// a specific group (standalone tasks are included as well, denoted by an empty string for the group name)
TaskGroupInfos []TaskGroupInfo `bson:"task_group_infos" json:"task_group_infos"`
// SecondaryQueue refers to whether or not this info refers to a secondary queue.
// Tags don't match due to outdated naming convention.
SecondaryQueue bool `bson:"alias_queue" json:"alias_queue"`
}
func GetDistroQueueInfo ¶
func GetDistroQueueInfo(ctx context.Context, distroID string) (DistroQueueInfo, error)
func GetDistroSecondaryQueueInfo ¶
func GetDistroSecondaryQueueInfo(ctx context.Context, distroID string) (DistroQueueInfo, error)
func (*DistroQueueInfo) GetQueueCollection ¶
func (q *DistroQueueInfo) GetQueueCollection() string
GetQueueCollection returns the collection associated with this queue.
type DuplicateEnqueuedTasksResult ¶
type DuplicateEnqueuedTasksResult struct {
TaskID string `bson:"_id"`
DistroIDs []string `bson:"distros"`
}
func FindDuplicateEnqueuedTasks ¶
func FindDuplicateEnqueuedTasks(ctx context.Context, coll string) ([]DuplicateEnqueuedTasksResult, error)
type DuplicateVersions ¶
type DuplicateVersions struct {
ID DuplicateVersionsID `bson:"_id"`
Versions []Version `bson:"versions"`
}
type DuplicateVersionsID ¶
type EmailAlertData ¶
type EmailAlertData struct {
Recipients []string `bson:"recipients"`
}
type ExternalLink ¶
type ExternalLink struct {
DisplayName string `bson:"display_name,omitempty" json:"display_name,omitempty" yaml:"display_name,omitempty"`
Requesters []string `bson:"requesters,omitempty" json:"requesters,omitempty" yaml:"requesters,omitempty"`
URLTemplate string `bson:"url_template,omitempty" json:"url_template,omitempty" yaml:"url_template,omitempty"`
}
type FeedbackSubmission ¶
type FeedbackSubmission struct {
Type string `json:"type" bson:"type"`
User string `json:"user,omitempty" bson:"user,omitempty"`
SubmittedAt time.Time `json:"submitted_at" bson:"submitted_at"`
Questions []QuestionAnswer `json:"questions" bson:"questions"`
}
func FindFeedbackOfType ¶
func FindFeedbackOfType(ctx context.Context, t string) ([]FeedbackSubmission, error)
type FindTaskHistoryOptions ¶
type FindTaskHistoryOptions struct {
TaskName string
BuildVariant string
ProjectId string
LowerBound *int
UpperBound *int
Limit *int
}
FindTaskHistoryOptions defines options that can be passed to queries for task history.
type GeneratedProject ¶
type GeneratedProject struct {
BuildVariants []parserBV `yaml:"buildvariants"`
Tasks []parserTask `yaml:"tasks"`
Functions map[string]*YAMLCommandSet `yaml:"functions"`
TaskGroups []parserTaskGroup `yaml:"task_groups"`
// Task is the task that is running generate.tasks.
Task *task.Task
ActivationInfo *specificActivationInfo
NewTVPairs *TaskVariantPairs
}
GeneratedProject is a subset of the Project type, and is generated from the JSON from a `generate.tasks` command.
func MergeGeneratedProjects ¶
func MergeGeneratedProjects(ctx context.Context, projects []GeneratedProject) (*GeneratedProject, error)
MergeGeneratedProjects takes a slice of generated projects and returns a single, deduplicated project.
func ParseProjectFromJSONString ¶
func ParseProjectFromJSONString(data string) (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) CheckForCycles ¶
func (g *GeneratedProject) CheckForCycles(ctx context.Context, v *Version, p *Project, projectRef *ProjectRef) error
CheckForCycles builds a dependency graph from the existing tasks in the version and simulates adding the generated tasks, their dependencies, and dependencies on the generated tasks to the graph. Returns a DependencyCycleError error if the resultant graph contains dependency cycles.
func (*GeneratedProject) GetNewTasksAndActivationInfo ¶
func (g *GeneratedProject) GetNewTasksAndActivationInfo(ctx context.Context, v *Version, p *Project) (*TaskVariantPairs, *specificActivationInfo)
GetNewTasksAndActivationInfo computes the generate.tasks variant-tasks to be created and specific activation information for those tasks.
func (*GeneratedProject) NewVersion ¶
func (g *GeneratedProject) NewVersion(ctx context.Context, p *Project, pp *ParserProject, v *Version) (*Project, *ParserProject, *Version, error)
NewVersion adds the buildvariants, tasks, and functions from a generated project config to a project, and returns the previous config number.
type GetProjectOpts ¶
type GetProjectOpts struct {
Ref *ProjectRef
PatchOpts *PatchOpts
LocalModules map[string]string
RemotePath string
Revision string
// ReadFileFrom determines where the file should be fetched from. If
// unspecified, the default is ReadFromGithub.
ReadFileFrom string
Identifier string
UnmarshalStrict bool
LocalModuleIncludes []patch.LocalModuleInclude
ReferencePatchID string
ReferenceManifestID string
AutoUpdateModuleRevisions map[string]string
// IsIncludedFile indicates whether the file being retrieved is an included
// YAML file.
IsIncludedFile bool
// Worktree is the directory of the git worktree to use when retrieving
// files via git. Only set if reading a remote file using git.
Worktree string
}
func (*GetProjectOpts) UpdateReadFileFrom ¶
func (opts *GetProjectOpts) UpdateReadFileFrom(path string)
UpdateNewFile modifies ReadFileFrom to read from the patch diff if the included file has been modified.
type GetProjectTasksOpts ¶
type GetVersionsOptions ¶
type GetVersionsOptions struct {
Start int `json:"start"`
RevisionEnd int `json:"revision_end"`
Requester string `json:"requester"`
Limit int `json:"limit"`
Skip int `json:"skip"`
IncludeBuilds bool `json:"include_builds"`
IncludeTasks bool `json:"include_tasks"`
ByBuildVariant string `json:"by_build_variant"`
ByTask string `json:"by_task"`
CreatedAfter time.Time `json:"created_after"`
CreatedBefore time.Time `json:"created_before"`
}
GetVersionsOptions is a struct that holds the options for retrieving a list of versions
type GitHubDynamicTokenPermissionGroup ¶
type GitHubDynamicTokenPermissionGroup struct {
// Name is the name of the group.
Name string `bson:"name,omitempty" json:"name,omitempty" yaml:"name,omitempty"`
// Permissions are a key-value pair of GitHub token permissions to their permission level
Permissions github.InstallationPermissions `bson:"permissions,omitempty" json:"permissions" yaml:"permissions,omitempty"`
// AllPermissions is a flag that indicates that the group has all permissions.
// If this is set to true, the Permissions field is ignored.
// If this is set to false, the Permissions field is used (and may be
// nil, representing no permissions).
AllPermissions bool `bson:"all_permissions,omitempty" json:"all_permissions,omitempty" yaml:"all_permissions,omitempty"`
}
GitHubDynamicTokenPermissionGroup is a permission group for GitHub dynamic access tokens.
func (*GitHubDynamicTokenPermissionGroup) HasNoPermissions ¶
func (p *GitHubDynamicTokenPermissionGroup) HasNoPermissions() bool
HasNoPermissions tests if the group has no permissions.
func (*GitHubDynamicTokenPermissionGroup) Intersection ¶
func (p *GitHubDynamicTokenPermissionGroup) Intersection(other GitHubDynamicTokenPermissionGroup) (GitHubDynamicTokenPermissionGroup, error)
Intersection returns the most restrictive intersection of the two permission groups. The name carries over from the calling group. If either permission is no permissions, it will return a group with no permissions.
type GithubProjectConflicts ¶
type JiraSuggest ¶
type JiraSuggest struct {
BbProj evergreen.BuildBaronSettings
JiraHandler thirdparty.JiraHandler
}
func (*JiraSuggest) GetTimeout ¶
func (js *JiraSuggest) GetTimeout() time.Duration
func (*JiraSuggest) Suggest ¶
func (js *JiraSuggest) Suggest(ctx context.Context, t *task.Task) ([]thirdparty.JiraTicket, error)
Suggest returns JIRA ticket results based on the test and/or task name.
type ModifyVersionsOptions ¶
type ModifyVersionsOptions struct {
Priority *int64 `json:"priority"`
StartTimeStr string `json:"start_time_str"`
EndTimeStr string `json:"end_time_str"`
RevisionStart int `json:"revision_start"`
RevisionEnd int `json:"revision_end"`
Requester string `json:"requester"`
}
ModifyVersionsOptions is a struct containing options necessary to modify versions.
type Module ¶
type Module struct {
Name string `yaml:"name,omitempty" bson:"name" plugin:"expand"`
Branch string `yaml:"branch,omitempty" bson:"branch" plugin:"expand"`
Repo string `yaml:"repo,omitempty" bson:"repo" plugin:"expand"`
Owner string `yaml:"owner,omitempty" bson:"owner" plugin:"expand"`
Prefix string `yaml:"prefix,omitempty" bson:"prefix" plugin:"expand"`
Ref string `yaml:"ref,omitempty" bson:"ref" plugin:"expand"`
AutoUpdate bool `yaml:"auto_update,omitempty" bson:"auto_update"`
}
Module specifies the git details of another git project to be included within a given version at runtime. Module fields include the expand plugin tag because they need to support project ref variable expansions.
func GetModuleByName ¶
func GetModuleByName(moduleList ModuleList, moduleName string) (*Module, error)
type ModuleList ¶
type ModuleList []Module
func (*ModuleList) IsIdentical ¶
func (l *ModuleList) IsIdentical(m manifest.Manifest) bool
type MultiSourceSuggest ¶
type MultiSourceSuggest struct {
JiraSuggester Suggester
}
func (*MultiSourceSuggest) Suggest ¶
func (mss *MultiSourceSuggest) Suggest(t *task.Task) ([]thirdparty.JiraTicket, string, error)
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 ParameterInfo ¶
type ParameterInfo struct {
patch.Parameter `yaml:",inline" bson:",inline"`
Description string `yaml:"description" bson:"description"`
}
ParameterInfo is used to provide extra information about a parameter.
type ParameterMapping ¶
type ParameterMapping struct {
// Name is the name of the value being stored (e.g. a project variable
// name).
Name string `bson:"name" json:"name"`
// ParameterName is the location where the parameter is kept in Parameter
// Store.
ParameterName string `bson:"parameter_name" json:"parameter_name"`
}
ParameterMapping represents a mapping between a DB field and the location of its actual value in Parameter Store. This is used to keep track of where sensitive secrets can be found in Parameter Store.
type ParameterMappings ¶
type ParameterMappings []ParameterMapping
ParameterMappings is a wrapper around a slice of mappings between names and their corresponding parameters kept in Parameter Store.
func (ParameterMappings) Len ¶
func (pm ParameterMappings) Len() int
Len returns the number of parameter mappings for the sake of implementing sort.Interface.
func (ParameterMappings) Less ¶
func (pm ParameterMappings) Less(i, j int) bool
Less returns whether the parameter mapping name at index i must be sorted before the parameter mapping name at index j for the sake of implementing sort.Interface.
func (ParameterMappings) NameMap ¶
func (pm ParameterMappings) NameMap() map[string]ParameterMapping
NameMap returns a map from each name to the full parameter mapping information.
func (ParameterMappings) Names ¶
func (pm ParameterMappings) Names() []string
Names returns the names for each parameter mapping.
func (ParameterMappings) ParameterNameMap ¶
func (pm ParameterMappings) ParameterNameMap() map[string]ParameterMapping
ParameterNameMap returns a map from each parameter name to the full parameter mapping information.
func (ParameterMappings) ParameterNames ¶
func (pm ParameterMappings) ParameterNames() []string
ParameterNames returns the parameter names for each parameter mapping.
func (ParameterMappings) Swap ¶
func (pm ParameterMappings) Swap(i, j int)
Swap swaps the parameter mappings at indices i and j for the sake of implementing sort.Interface.
type ParserProject ¶
type ParserProject struct {
// Id and ConfigdUpdateNumber are not pointers because they are only used internally
Id string `yaml:"_id" bson:"_id"` // should be the same as the version's ID
// UpdatedByGenerators is used to determine if the parser project needs to be re-saved or not.
UpdatedByGenerators []string `yaml:"updated_by_generators,omitempty" bson:"updated_by_generators,omitempty"`
// List of yamls to merge
Include []parserInclude `yaml:"include,omitempty" bson:"include,omitempty"`
// Beginning of ParserProject mergeable fields (this comment is used by the linter).
Stepback *bool `yaml:"stepback,omitempty" bson:"stepback,omitempty"`
PreTimeoutSecs *int `yaml:"pre_timeout_secs,omitempty" bson:"pre_timeout_secs,omitempty"`
PostTimeoutSecs *int `yaml:"post_timeout_secs,omitempty" bson:"post_timeout_secs,omitempty"`
PreErrorFailsTask *bool `yaml:"pre_error_fails_task,omitempty" bson:"pre_error_fails_task,omitempty"`
PostErrorFailsTask *bool `yaml:"post_error_fails_task,omitempty" bson:"post_error_fails_task,omitempty"`
OomTracker *bool `yaml:"oom_tracker,omitempty" bson:"oom_tracker,omitempty"`
Ps *string `yaml:"ps,omitempty" bson:"ps,omitempty"`
Owner *string `yaml:"owner,omitempty" bson:"owner,omitempty"`
Repo *string `yaml:"repo,omitempty" bson:"repo,omitempty"`
RemotePath *string `yaml:"remote_path,omitempty" bson:"remote_path,omitempty"`
Branch *string `yaml:"branch,omitempty" bson:"branch,omitempty"`
Identifier *string `yaml:"identifier,omitempty" bson:"identifier,omitempty"`
DisplayName *string `yaml:"display_name,omitempty" bson:"display_name,omitempty"`
CommandType *string `yaml:"command_type,omitempty" bson:"command_type,omitempty"`
Ignore parserStringSlice `yaml:"ignore,omitempty" bson:"ignore,omitempty"`
Parameters []ParameterInfo `yaml:"parameters,omitempty" bson:"parameters,omitempty"`
Pre *YAMLCommandSet `yaml:"pre,omitempty" bson:"pre,omitempty"`
Post *YAMLCommandSet `yaml:"post,omitempty" bson:"post,omitempty"`
Timeout *YAMLCommandSet `yaml:"timeout,omitempty" bson:"timeout,omitempty"`
CallbackTimeout *int `yaml:"callback_timeout_secs,omitempty" bson:"callback_timeout_secs,omitempty"`
Modules []Module `yaml:"modules,omitempty" bson:"modules,omitempty"`
Containers []Container `yaml:"containers,omitempty" bson:"containers,omitempty"`
BuildVariants []parserBV `yaml:"buildvariants,omitempty" bson:"buildvariants,omitempty"`
Functions map[string]*YAMLCommandSet `yaml:"functions,omitempty" bson:"functions,omitempty"`
TaskGroups []parserTaskGroup `yaml:"task_groups,omitempty" bson:"task_groups,omitempty"`
Tasks []parserTask `yaml:"tasks,omitempty" bson:"tasks,omitempty"`
ExecTimeoutSecs *int `yaml:"exec_timeout_secs,omitempty" bson:"exec_timeout_secs,omitempty"`
TimeoutSecs *int `yaml:"timeout_secs,omitempty" bson:"timeout_secs,omitempty"`
CreateTime time.Time `yaml:"create_time,omitempty" bson:"create_time,omitempty"`
// Matrix code
Axes []matrixAxis `yaml:"axes,omitempty" bson:"axes,omitempty"`
} // End of ParserProject mergeable fields (this comment is used by the linter).
ParserProject serves as an intermediary struct for parsing project configuration YAML. It implements the Unmarshaler interface to allow for flexible handling. From a mental model perspective, the ParserProject is the project configuration after YAML rules have been evaluated (e.g. matching YAML fields to Go struct fields, evaluating YAML anchors and aliases), but before any Evergreen-specific evaluation rules have been applied. For example, Evergreen has a custom feature to support tagging a set of tasks and expanding those tags into a list of tasks under the build variant's list of tasks (i.e. ".tagname" syntax). In the ParserProject, these are stored as the unexpanded tag text (i.e. ".tagname"), and these tags are not evaluated until the ParserProject is turned into a final Project.
func LoadProjectInto ¶
func LoadProjectInto(ctx context.Context, data []byte, opts *GetProjectOpts, projectID string, project *Project) (*ParserProject, error)
LoadProjectInto loads the raw data from the config file into project and sets the project's ID field to projectID. Tags are evaluated. Returns the intermediate step. If reading from a version config, LoadProjectInfoForVersion should be used to persist the resulting parser project. opts is used to look up files on github if the main parser project has an Include.
func ParserProjectFindOneByID ¶
func ParserProjectFindOneByID(ctx context.Context, settings *evergreen.Settings, method evergreen.ParserProjectStorageMethod, id string) (*ParserProject, error)
ParserProjectFindOneByID is a convenience wrapper to find one parser project by ID from persistent storage.
func (*ParserProject) AddBuildVariant ¶
func (pp *ParserProject) AddBuildVariant(name, displayName, runOn string, batchTime *int, tasks []string)
func (*ParserProject) AddTask ¶
func (pp *ParserProject) AddTask(name string, commands []PluginCommandConf)
func (*ParserProject) GetParameters ¶
func (pp *ParserProject) GetParameters() []patch.Parameter
func (*ParserProject) Init ¶
func (pp *ParserProject) Init(id string, createdAt time.Time)
Init initializes the parser project with the expected fields before it is persisted. It's assumed that the remaining parser project configuration is already populated, but these values to initialize come from an external source (i.e. the patch or version it's based on).
func (*ParserProject) MarshalBSON ¶
func (pp *ParserProject) MarshalBSON() ([]byte, error)
func (*ParserProject) MarshalYAML ¶
func (pp *ParserProject) MarshalYAML() (any, error)
type ParserProjectDBStorage ¶
type ParserProjectDBStorage struct{}
ParserProjectDBStorage implements the ParserProjectStorage interface to access parser projects stored in the DB.
func (ParserProjectDBStorage) FindOneByID ¶
func (s ParserProjectDBStorage) FindOneByID(ctx context.Context, id string) (*ParserProject, error)
FindOneByID finds a parser project from the DB by its ID. This ignores the context parameter.
func (ParserProjectDBStorage) FindOneByIDWithFields ¶
func (s ParserProjectDBStorage) FindOneByIDWithFields(ctx context.Context, id string, fields ...string) (*ParserProject, error)
FindOneByIDWithFields returns the parser project from the DB with only the requested fields populated. This may be more efficient than fetching the entire parser project. This ignores the context parameter.
func (ParserProjectDBStorage) UpsertOne ¶
func (s ParserProjectDBStorage) UpsertOne(ctx context.Context, pp *ParserProject) error
UpsertOne replaces a parser project in the DB if one exists with the same ID. Otherwise, if it does not exist yet, it inserts a new parser project.
type ParserProjectS3Storage ¶
type ParserProjectS3Storage struct {
// contains filtered or unexported fields
}
ParserProjectS3Storage implements the ParserProjectStorage interface to access parser projects stored in S3.
func NewParserProjectS3Storage ¶
func NewParserProjectS3Storage(ctx context.Context, ppConf evergreen.ParserProjectS3Config) (*ParserProjectS3Storage, error)
NewParserProjectS3Storage sets up access to parser projects stored in S3.
func (*ParserProjectS3Storage) FindOneByID ¶
func (s *ParserProjectS3Storage) FindOneByID(ctx context.Context, id string) (*ParserProject, error)
FindOneByID finds a parser project in S3 using its ID. If the context errors, it will return the context error.
func (*ParserProjectS3Storage) FindOneByIDWithFields ¶
func (s *ParserProjectS3Storage) FindOneByIDWithFields(ctx context.Context, id string, _ ...string) (*ParserProject, error)
FindOneByIDWithFields finds a parser project using its ID from S3 and returns the parser project with only the requested fields populated. This is not any more efficient than FindOneByID. If the context errors, it will return the context error.
func (*ParserProjectS3Storage) UpsertOne ¶
func (s *ParserProjectS3Storage) UpsertOne(ctx context.Context, pp *ParserProject) error
UpsertOne replaces a parser project if the parser project in S3 with the same ID already exists. If it does not exist yet, it inserts a new parser project.
func (*ParserProjectS3Storage) UpsertOneBSON ¶
UpsertOneBSON upserts a parser project by its ID when has already been marshalled to BSON.
type ParserProjectStorage ¶
type ParserProjectStorage interface {
// FindOneByID finds a parser project using its ID. If the parser project
// does not exist in the underlying storage, implementations must return a
// nil parser project and nil error. Implementations may or may not respect
// the context.
FindOneByID(ctx context.Context, id string) (*ParserProject, error)
// FindOneByIDWithFields finds a parser project using its ID and returns the
// parser project with at least the requested fields populated.
// Implementations may choose to return more fields than those explicitly
// requested. If the parser project does not exist in the underlying
// storage, implementations must return a nil parser project and nil error.
// Implementations may or may not respect the context.
FindOneByIDWithFields(ctx context.Context, id string, fields ...string) (*ParserProject, error)
// UpsertOne replaces a parser project if the parser project with the
// same ID already exists. If it does not exist yet, it inserts a new parser
// project.
UpsertOne(ctx context.Context, pp *ParserProject) error
}
ParserProjectStorage is an interface for accessing the parser project.
func GetParserProjectStorage ¶
func GetParserProjectStorage(ctx context.Context, settings *evergreen.Settings, method evergreen.ParserProjectStorageMethod) (ParserProjectStorage, error)
GetParserProjectStorage returns the parser project storage mechanism to access the persistent copy of it.
type PatchConfig ¶
type PatchConfig struct {
PatchedParserProjectYAML string
PatchedParserProject *ParserProject
PatchedProjectConfig string
}
type PatchUpdate ¶
type PeriodicBuildDefinition ¶
type PeriodicBuildDefinition struct {
ID string `bson:"id" json:"id"`
ConfigFile string `bson:"config_file" json:"config_file"`
IntervalHours int `bson:"interval_hours" json:"interval_hours"`
Cron string `bson:"cron" json:"cron"`
Alias string `bson:"alias,omitempty" json:"alias,omitempty"`
Message string `bson:"message,omitempty" json:"message,omitempty"`
NextRunTime time.Time `bson:"next_run_time,omitempty" json:"next_run_time,omitempty"`
}
func (*PeriodicBuildDefinition) Validate ¶
func (d *PeriodicBuildDefinition) Validate() error
type PluginCommandConf ¶
type PluginCommandConf struct {
Function string `yaml:"func,omitempty" bson:"func,omitempty"`
// Type is used to differentiate between setup related commands and actual
// testing commands.
Type string `yaml:"type,omitempty" bson:"type,omitempty"`
// DisplayName is a human readable description of the function of a given
// command.
DisplayName string `yaml:"display_name,omitempty" bson:"display_name,omitempty"`
// 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,omitempty"`
// Variants is used to enumerate the particular sets of buildvariants to run
// this command configuration on. If it is empty, it will run on all defined
// variants.
Variants []string `yaml:"variants,omitempty" bson:"variants,omitempty"`
// TimeoutSecs indicates the maximum duration the command is allowed to run for.
TimeoutSecs int `yaml:"timeout_secs,omitempty" bson:"timeout_secs,omitempty"`
// Params is used to define params in the yaml and parser project,
// but is not stored in the DB (instead see ParamsYAML).
Params map[string]any `yaml:"params,omitempty" bson:"-"`
// ParamsYAML is the marshalled Params to store in the database, to preserve nested interfaces.
ParamsYAML string `yaml:"params_yaml,omitempty" bson:"params_yaml,omitempty"`
// Vars defines variables that can be used within commands.
Vars map[string]string `yaml:"vars,omitempty" bson:"vars,omitempty"`
// RetryOnFailure indicates whether the task should be retried if this command fails.
RetryOnFailure bool `yaml:"retry_on_failure,omitempty" bson:"retry_on_failure,omitempty"`
// FailureMetadataTags are user-defined tags which are not used directly by
// Evergreen but can be used to allow users to set additional metadata about
// the command/function if it fails.
// TODO (DEVPROD-5122): add documentation once the additional features for
// failing commands (which don't fail the task) are complete.
FailureMetadataTags []string `yaml:"failure_metadata_tags,omitempty" bson:"failure_metadata_tags,omitempty"`
}
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
func (*PluginCommandConf) UnmarshalBSON ¶
func (c *PluginCommandConf) UnmarshalBSON(in []byte) error
func (*PluginCommandConf) UnmarshalYAML ¶
func (c *PluginCommandConf) UnmarshalYAML(unmarshal func(any) error) error
type Project ¶
type Project struct {
Stepback bool `yaml:"stepback,omitempty" bson:"stepback"`
PreTimeoutSecs int `yaml:"pre_timeout_secs,omitempty" bson:"pre_timeout_secs,omitempty"`
PostTimeoutSecs int `yaml:"post_timeout_secs,omitempty" bson:"post_timeout_secs,omitempty"`
PreErrorFailsTask bool `yaml:"pre_error_fails_task,omitempty" bson:"pre_error_fails_task,omitempty"`
PostErrorFailsTask bool `yaml:"post_error_fails_task,omitempty" bson:"post_error_fails_task,omitempty"`
OomTracker bool `yaml:"oom_tracker,omitempty" bson:"oom_tracker"`
PS string `yaml:"ps,omitempty" bson:"ps,omitempty"`
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"`
Parameters []ParameterInfo `yaml:"parameters,omitempty" bson:"parameters,omitempty"`
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 ModuleList `yaml:"modules,omitempty" bson:"modules"`
Containers []Container `yaml:"containers,omitempty" bson:"containers"`
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"`
TimeoutSecs int `yaml:"timeout_secs,omitempty" bson:"timeout_secs"`
// Number of includes in the project cached for validation
NumIncludes int `yaml:"-" bson:"-"`
}
Project represents the fully hydrated project configuration after translating the ParserProject.
func GetProjectFromBSON ¶
func TranslateProject ¶
func TranslateProject(pp *ParserProject) (*Project, error)
TranslateProject converts our intermediate project representation into the Project type that Evergreen actually uses.
func (*Project) BuildProjectTVPairs ¶
BuildProjectTVPairs resolves the build variants and tasks into which build variants will run and which tasks will run on each build variant. This filters out tasks that cannot run due to being disabled or having an unmatched requester (e.g. a patch-only task for a mainline commit).
func (*Project) BuildProjectTVPairsWithAlias ¶
func (p *Project) BuildProjectTVPairsWithAlias(aliases []ProjectAlias, requester string) (TaskVariantPairs, error)
BuildProjectTVPairsWithAlias returns variants and tasks for a project alias. This filters out tasks that cannot run due to being disabled or having an unmatched requester (e.g. a patch-only task for a mainline commit).
func (*Project) DependencyGraph ¶
func (p *Project) DependencyGraph() task.DependencyGraph
DependencyGraph returns a task.DependencyGraph populated with the tasks in the project.
func (*Project) FindAllBuildVariantTasks ¶
func (p *Project) FindAllBuildVariantTasks() []BuildVariantTaskUnit
FindAllBuildVariantTasks returns every BuildVariantTaskUnit, fully populated, for all variants of a project. Note that task groups, although they are considered build variant task units, are not preserved. Instead, each task in the task group is expanded into its own individual tasks units.
func (*Project) FindAllTasksMap ¶
func (p *Project) FindAllTasksMap() map[string]ProjectTask
func (*Project) FindAllVariants ¶
func (*Project) FindBuildVariant ¶
func (p *Project) FindBuildVariant(build string) *BuildVariant
func (*Project) FindBuildVariantTaskUnit ¶
func (p *Project) FindBuildVariantTaskUnit(bv, task string) *BuildVariantTaskUnit
FindBuildVariantTaskUnit finds the bvtu given the bv and task name.
func (*Project) FindDisplayTasksForVariant ¶
func (*Project) FindDistroNameForTask ¶
func (*Project) FindProjectTask ¶
func (p *Project) FindProjectTask(name string) *ProjectTask
func (*Project) FindTaskForVariant ¶
func (p *Project) FindTaskForVariant(task, variant string) *BuildVariantTaskUnit
FindTaskForVariant returns the build variant task unit for a matching task or task within a task group. If searching for a task within the task group, the build variant task unit returned will have its fields populated, respecting precedence of settings (such as PatchOnly). Note that for tasks within a task group, the returned result will have the name of the task group it's part of, rather than the name of the task.
func (*Project) FindTaskGroup ¶
FindTaskGroup returns a specific task group from a project
func (*Project) FindTaskGroupForTask ¶
FindTaskGroupForTask returns a specific task group from a project that contains the given task.
func (*Project) FindTasksForVariant ¶
FindTasksForVariant returns all tasks in a variant, including tasks in task groups.
func (*Project) FindVariantsWithTask ¶
FindVariantsWithTask returns the name of each variant containing the given task name.
func (*Project) GetAllVariantTasks ¶
func (p *Project) GetAllVariantTasks() []patch.VariantTasks
GetAllVariantTasks returns all the build variants and all tasks specified for each build variant.
func (*Project) GetDisplayTask ¶
func (p *Project) GetDisplayTask(variant, name string) *patch.DisplayTask
func (*Project) GetNumCheckRunsFromTaskVariantPairs ¶
func (p *Project) GetNumCheckRunsFromTaskVariantPairs(variantTasks *TaskVariantPairs) int
func (*Project) GetNumCheckRunsFromVariantTasks ¶
func (p *Project) GetNumCheckRunsFromVariantTasks(variantTasks []patch.VariantTasks) int
func (*Project) GetParameters ¶
func (*Project) GetTaskNameAndTags ¶
func (p *Project) GetTaskNameAndTags(bvt BuildVariantTaskUnit) (string, []string, bool)
GetTaskNameAndTags checks the project for a task or task group matching the build variant task unit, and returns the name and tags
func (*Project) GetVariantMappings ¶
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.
func (*Project) ResolvePatchVTs ¶
func (p *Project) ResolvePatchVTs(ctx context.Context, patchDoc *patch.Patch, requester, alias string, includeDeps bool) (resolvedBVs []string, resolvedTasks []string, vts []patch.VariantTasks)
ResolvePatchVTs resolves a list of build variants and tasks into a list of all build variants that will run, a list of all tasks that will run, and a mapping of the build variant to the tasks that will run on that build variant. If includeDeps is set, it will also resolve task dependencies. This filters out tasks that cannot run due to being disabled or having an unmatched requester (e.g. a patch-only task for a mainline commit).
func (*Project) TasksThatCallCommand ¶
TasksThatCallCommand returns a map of tasks that call a given command to the number of times the command is called in the task.
func (*Project) VariantTasksForSelectors ¶
func (p *Project) VariantTasksForSelectors(ctx context.Context, definitions []patch.PatchTriggerDefinition, requester string) ([]patch.VariantTasks, error)
type ProjectAlias ¶
type ProjectAlias struct {
ID mgobson.ObjectId `bson:"_id,omitempty" json:"_id" yaml:"id"`
ProjectID string `bson:"project_id" json:"project_id" yaml:"project_id"`
Alias string `bson:"alias" json:"alias" yaml:"alias"`
Variant string `bson:"variant,omitempty" json:"variant" yaml:"variant"`
Description string `bson:"description" json:"description" yaml:"description"`
GitTag string `bson:"git_tag" json:"git_tag" yaml:"git_tag"`
RemotePath string `bson:"remote_path" json:"remote_path" yaml:"remote_path"`
VariantTags []string `bson:"variant_tags,omitempty" json:"variant_tags" yaml:"variant_tags"`
Task string `bson:"task,omitempty" json:"task" yaml:"task"`
TaskTags []string `bson:"tags,omitempty" json:"tags" yaml:"task_tags"`
Parameters []patch.Parameter `bson:"parameters,omitempty" json:"parameters" yaml:"parameters"`
// Source is not stored; indicates where the alias is stored for the project.
Source string `bson:"-" json:"-" yaml:"-"`
}
Git tags use a special alias "__git_tag" and create a new version for the matching variants/tasks, assuming the tag matches the defined git_tag regex. In this way, users can define different behavior for different kind of tags.
func ConstructMergedAliasesByPrecedence ¶
func ConstructMergedAliasesByPrecedence(ctx context.Context, projectRef *ProjectRef, projectConfig *ProjectConfig, repoId string) ([]ProjectAlias, error)
ConstructMergedAliasesByPrecedence will construct a merged list of aliases based on what aliases are found at the project level, repo level, and project config level.
func FindAliasInProjectRepoOrConfig ¶
func FindAliasInProjectRepoOrConfig(ctx context.Context, projectID, alias string) ([]ProjectAlias, error)
FindAliasInProjectRepoOrConfig finds all aliases with a given name for a project. If the project has no aliases, the repo is checked for aliases.
func FindAliasInProjectRepoOrProjectConfig ¶
func FindAliasInProjectRepoOrProjectConfig(ctx context.Context, projectID, alias string, projectConfig *ProjectConfig) ([]ProjectAlias, error)
FindAliasInProjectRepoOrProjectConfig finds all aliases with a given name for a project. If the project has no aliases, the patched config string is checked for the alias as well.
func FindAliasesForProjectFromDb ¶
func FindAliasesForProjectFromDb(ctx context.Context, projectID string) ([]ProjectAlias, error)
FindAliasesForProjectFromDb fetches all aliases for a given project without merging with aliases from the parser project
func FindAliasesForRepo ¶
func FindAliasesForRepo(ctx context.Context, repoId string) ([]ProjectAlias, error)
FindAliasesForRepo fetches all aliases for a given project
func FindMatchingGitTagAliasesInProject ¶
func FindMatchingGitTagAliasesInProject(ctx context.Context, projectID, tag string) ([]ProjectAlias, error)
func (ProjectAlias) HasMatchingTask ¶
func (a ProjectAlias) HasMatchingTask(taskName string, taskTags []string) (bool, error)
func (ProjectAlias) HasMatchingVariant ¶
func (a ProjectAlias) HasMatchingVariant(variant string, variantTags []string) (bool, error)
HasMatchingVariant returns whether or not one the alias variant regexp matches the variant's name, or the alias' variant tags match the variant's tags. Note that this does not check for matching tasks.
type ProjectAliases ¶
type ProjectAliases []ProjectAlias
func (ProjectAliases) AliasesMatchingVariant ¶
func (a ProjectAliases) AliasesMatchingVariant(variant string, variantTags []string) (ProjectAliases, error)
AliasesMatchingVariant returns the filtered set of project aliases for which the alias' variant regexp matches the variant's name, or the alias' variant tags match the variant's tags.
func (ProjectAliases) HasMatchingGitTag ¶
func (a ProjectAliases) HasMatchingGitTag(tag string) (bool, error)
HasMatchingGitTag determines whether or not the given git tag name matches any of the project aliases' git tag regexp.
func (ProjectAliases) HasMatchingTask ¶
func (a ProjectAliases) HasMatchingTask(taskName string, taskTags []string) (bool, error)
HasMatchingTask returns whether or not one the alias task regexp matches the variant's name, or the alias' task tags match the variant's tags. Note that this does not check for matching variant.
type ProjectBanner ¶
type ProjectBanner struct {
Theme evergreen.BannerTheme `bson:"theme" json:"theme"`
Text string `bson:"text" json:"text"`
}
type ProjectChangeEvent ¶
type ProjectChangeEvent struct {
User string `bson:"user" json:"user"`
Before ProjectSettingsEvent `bson:"before" json:"before"`
After ProjectSettingsEvent `bson:"after" json:"after"`
}
func (*ProjectChangeEvent) RedactSecrets ¶
func (e *ProjectChangeEvent) RedactSecrets()
RedactSecrets redacts project secrets from a project change event. Project variables that are not changed are cleared and project variables that are changed are replaced with redacted placeholders.
type ProjectChangeEventEntry ¶
type ProjectChangeEventEntry struct {
event.EventLogEntry
}
func (*ProjectChangeEventEntry) MarshalBSON ¶
func (e *ProjectChangeEventEntry) MarshalBSON() ([]byte, error)
func (*ProjectChangeEventEntry) SetBSON ¶
func (e *ProjectChangeEventEntry) SetBSON(raw mgobson.Raw) error
func (*ProjectChangeEventEntry) UnmarshalBSON ¶
func (e *ProjectChangeEventEntry) UnmarshalBSON(in []byte) error
type ProjectChangeEvents ¶
type ProjectChangeEvents []ProjectChangeEventEntry
func MostRecentProjectEvents ¶
MostRecentProjectEvents returns the n most recent project events for the given project ID.
func ProjectEventsBefore ¶
func ProjectEventsBefore(ctx context.Context, id string, before time.Time, n int) (ProjectChangeEvents, error)
ProjectEventsBefore returns the n most recent project events for the given project ID that occurred before the given time.
func (*ProjectChangeEvents) ApplyDefaults ¶
func (p *ProjectChangeEvents) ApplyDefaults()
ApplyDefaults checks for any flags that indicate that a field in a project event should be nil and sets the field accordingly. Attached projects need to be able to distinguish between empty arrays and nil: nil values default to repo, while empty arrays do not. Look at the flags set in the ProjectSettingsEvent so that fields that were converted to empty arrays when casting to an interface{} can be correctly set to nil
type ProjectConfig ¶
type ProjectConfig struct {
Id string `yaml:"_id" bson:"_id"`
CreateTime time.Time `yaml:"create_time,omitempty" bson:"create_time,omitempty"`
Project string `yaml:"project,omitempty" bson:"project,omitempty"`
// ProjectConfigFields are the properties on the project config that do not duplicate parser project's fields to allow strict unmarshalling of a full config file.
// Since a config file gets split into ParserProject and ProjectConfig, strict unmarshalling does not work when duplicate fields exist (e.g. Id, CreateTime).
ProjectConfigFields `yaml:",inline" bson:",inline"`
}
func CreateProjectConfig ¶
func CreateProjectConfig(yml []byte, identifier string) (*ProjectConfig, error)
CreateProjectConfig marshals the supplied YAML into our intermediate configs representation.
func FindLastKnownGoodProjectConfig ¶
func FindLastKnownGoodProjectConfig(ctx context.Context, projectId string) (*ProjectConfig, error)
FindLastKnownGoodProjectConfig retrieves the most recent project config for the given project.
func FindProjectConfigById ¶
func FindProjectConfigById(ctx context.Context, id string) (*ProjectConfig, error)
FindProjectConfigById returns a project config by id.
func FindProjectConfigForProjectOrVersion ¶
func FindProjectConfigForProjectOrVersion(ctx context.Context, projectId, id string) (*ProjectConfig, error)
FindProjectConfigForProjectOrVersion returns a project config by id, or the most recent project config if id is empty
func ProjectConfigFindOne ¶
func (*ProjectConfig) AllAliases ¶
func (pc *ProjectConfig) AllAliases() ProjectAliases
func (*ProjectConfig) MarshalBSON ¶
func (pc *ProjectConfig) MarshalBSON() ([]byte, error)
func (*ProjectConfig) SetInternalAliases ¶
func (pc *ProjectConfig) SetInternalAliases()
type ProjectConfigFields ¶
type ProjectConfigFields struct {
// These fields can be set for the ProjectRef struct on the project page, or in the project config yaml.
// Values for the below fields set on the project page will take precedence over this struct and will
// be the configs used for a given project during runtime.
TaskAnnotationSettings *evergreen.AnnotationsSettings `yaml:"task_annotation_settings,omitempty" bson:"task_annotation_settings,omitempty"`
BuildBaronSettings *evergreen.BuildBaronSettings `yaml:"build_baron_settings,omitempty" bson:"build_baron_settings,omitempty"`
CommitQueueAliases []ProjectAlias `yaml:"commit_queue_aliases,omitempty" bson:"commit_queue_aliases,omitempty"`
GitHubPRAliases []ProjectAlias `yaml:"github_pr_aliases,omitempty" bson:"github_pr_aliases,omitempty"`
GitTagAliases []ProjectAlias `yaml:"git_tag_aliases,omitempty" bson:"git_tag_aliases,omitempty"`
GitHubChecksAliases []ProjectAlias `yaml:"github_checks_aliases,omitempty" bson:"github_checks_aliases,omitempty"`
PatchAliases []ProjectAlias `yaml:"patch_aliases,omitempty" bson:"patch_aliases,omitempty"`
WorkstationConfig *WorkstationConfig `yaml:"workstation_config,omitempty" bson:"workstation_config,omitempty"`
GithubPRTriggerAliases []string `yaml:"github_trigger_aliases,omitempty" bson:"github_trigger_aliases,omitempty"`
GithubMQTriggerAliases []string `yaml:"github_mq_trigger_aliases,omitempty" bson:"github_mq_trigger_aliases,omitempty"`
ContainerSizeDefinitions []ContainerResources `yaml:"container_size_definitions,omitempty" bson:"container_size_definitions,omitempty"`
}
type ProjectEventGitHubAppAuth ¶
type ProjectEventGitHubAppAuth struct {
AppID int64 `bson:"app_id" json:"app_id"`
// PriavetKey contains a redacted placeholder for the private key.
PrivateKey []byte `bson:"private_key" json:"private_key"`
}
ProjectEventGitHubAppAuth contains the GitHub app auth data relevant to project modification events.
type ProjectEventVars ¶
type ProjectEventVars struct {
// Vars contain the names of project variables and redacted placeholders for
// their values.
Vars map[string]string `bson:"vars" json:"vars"`
PrivateVars map[string]bool `bson:"private_vars" json:"private_vars"`
AdminOnlyVars map[string]bool `bson:"admin_only_vars" json:"admin_only_vars"`
}
ProjectEventVars contains the project variable data relevant to project modification events.
type ProjectHealthView ¶
type ProjectHealthView string
const ( ProjectHealthViewAll ProjectHealthView = "ALL" ProjectHealthViewFailed ProjectHealthView = "FAILED" )
type ProjectInfo ¶
type ProjectInfo struct {
Ref *ProjectRef
Project *Project
IntermediateProject *ParserProject
Config *ProjectConfig
}
func GetProjectFromFile ¶
func GetProjectFromFile(ctx context.Context, opts GetProjectOpts) (ProjectInfo, error)
GetProjectFromFile fetches project configuration files from its source (e.g. from a patch diff, GitHub, etc).
func LoadProjectInfoForVersion ¶
func LoadProjectInfoForVersion(ctx context.Context, settings *evergreen.Settings, v *Version, id string) (ProjectInfo, error)
LoadProjectInfoForVersion returns the project info for a version from its parser project.
func (*ProjectInfo) NotPopulated ¶
func (p *ProjectInfo) NotPopulated() bool
type ProjectPageSection ¶
type ProjectPageSection string
type ProjectRef ¶
type ProjectRef struct {
// Id is the unmodifiable unique ID for the configuration, used internally.
Id string `bson:"_id" json:"id" yaml:"id"`
// Identifier must be unique, but is modifiable. Used by users.
Identifier string `bson:"identifier" json:"identifier" yaml:"identifier"`
// RemotePath is the path to the Evergreen config file.
RemotePath string `bson:"remote_path" json:"remote_path" yaml:"remote_path"`
DisplayName string `bson:"display_name" json:"display_name,omitempty" yaml:"display_name"`
Enabled bool `bson:"enabled,omitempty" json:"enabled,omitempty" yaml:"enabled"`
Restricted *bool `bson:"restricted,omitempty" json:"restricted,omitempty" yaml:"restricted"`
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"`
PatchingDisabled *bool `bson:"patching_disabled,omitempty" json:"patching_disabled,omitempty"`
RepotrackerDisabled *bool `bson:"repotracker_disabled,omitempty" json:"repotracker_disabled,omitempty" yaml:"repotracker_disabled"`
DispatchingDisabled *bool `bson:"dispatching_disabled,omitempty" json:"dispatching_disabled,omitempty" yaml:"dispatching_disabled"`
StepbackDisabled *bool `bson:"stepback_disabled,omitempty" json:"stepback_disabled,omitempty" yaml:"stepback_disabled"`
StepbackBisect *bool `bson:"stepback_bisect,omitempty" json:"stepback_bisect,omitempty" yaml:"stepback_bisect"`
VersionControlEnabled *bool `bson:"version_control_enabled,omitempty" json:"version_control_enabled,omitempty" yaml:"version_control_enabled"`
PRTestingEnabled *bool `bson:"pr_testing_enabled,omitempty" json:"pr_testing_enabled,omitempty" yaml:"pr_testing_enabled"`
ManualPRTestingEnabled *bool `bson:"manual_pr_testing_enabled,omitempty" json:"manual_pr_testing_enabled,omitempty" yaml:"manual_pr_testing_enabled"`
GithubChecksEnabled *bool `bson:"github_checks_enabled,omitempty" json:"github_checks_enabled,omitempty" yaml:"github_checks_enabled"`
BatchTime int `bson:"batch_time" json:"batch_time" yaml:"batchtime"`
DeactivatePrevious *bool `bson:"deactivate_previous,omitempty" json:"deactivate_previous,omitempty" yaml:"deactivate_previous"`
NotifyOnBuildFailure *bool `bson:"notify_on_failure,omitempty" json:"notify_on_failure,omitempty"`
Triggers []TriggerDefinition `bson:"triggers" json:"triggers"`
// PatchTriggerAliases contains all aliases defined for the project.
PatchTriggerAliases []patch.PatchTriggerDefinition `bson:"patch_trigger_aliases" json:"patch_trigger_aliases"`
// GithubPRTriggerAliases are aliases attached to GitHub PR patch intents.
GithubPRTriggerAliases []string `bson:"github_trigger_aliases" json:"github_trigger_aliases"`
// GitHubMQTriggerAliases are aliases attached to GitHub MQ patch intents.
GithubMQTriggerAliases []string `bson:"github_mq_trigger_aliases" json:"github_mq_trigger_aliases"`
// OldestAllowedMergeBase is the commit hash of the oldest merge base on the target branch
// that PR patches can be created from.
OldestAllowedMergeBase string `bson:"oldest_allowed_merge_base" json:"oldest_allowed_merge_base"`
PeriodicBuilds []PeriodicBuildDefinition `bson:"periodic_builds" json:"periodic_builds"`
CommitQueue CommitQueueParams `bson:"commit_queue" json:"commit_queue" yaml:"commit_queue"`
// Admins contain a list of users who are able to access the projects page.
Admins []string `bson:"admins" json:"admins"`
// SpawnHostScriptPath is a path to a script to optionally be run by users on hosts triggered from tasks.
SpawnHostScriptPath string `bson:"spawn_host_script_path" json:"spawn_host_script_path" yaml:"spawn_host_script_path"`
// DebugSpawnHostsDisabled indicates whether users can spawn debug hosts for tasks in this project.
DebugSpawnHostsDisabled *bool `` /* 131-byte string literal not displayed */
// TracksPushEvents, if true indicates that Repotracker is triggered by Github PushEvents for this project.
// If a repo is enabled and this is what creates the hook, then TracksPushEvents will be set at the repo level.
TracksPushEvents *bool `bson:"tracks_push_events" json:"tracks_push_events" yaml:"tracks_push_events"`
// GitTagAuthorizedUsers contains a list of users who are able to create versions from git tags.
GitTagAuthorizedUsers []string `bson:"git_tag_authorized_users" json:"git_tag_authorized_users"`
GitTagAuthorizedTeams []string `bson:"git_tag_authorized_teams" json:"git_tag_authorized_teams"`
GitTagVersionsEnabled *bool `bson:"git_tag_versions_enabled,omitempty" json:"git_tag_versions_enabled,omitempty"`
// 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"`
// Disable task stats caching for this project.
DisabledStatsCache *bool `bson:"disabled_stats_cache,omitempty" json:"disabled_stats_cache,omitempty"`
// List of commands
// Lacks omitempty so that SetupCommands can be identified as either [] or nil in a ProjectSettingsEvent
WorkstationConfig WorkstationConfig `bson:"workstation_config" json:"workstation_config"`
// TaskAnnotationSettings holds settings for the file ticket button in the Task Annotations to call custom webhooks when clicked
TaskAnnotationSettings evergreen.AnnotationsSettings `bson:"task_annotation_settings,omitempty" json:"task_annotation_settings"`
// Plugin settings
BuildBaronSettings evergreen.BuildBaronSettings `bson:"build_baron_settings,omitempty" json:"build_baron_settings" yaml:"build_baron_settings,omitempty"`
PerfEnabled *bool `bson:"perf_enabled,omitempty" json:"perf_enabled,omitempty" yaml:"perf_enabled,omitempty"`
// Container settings
ContainerSizeDefinitions []ContainerResources `` /* 131-byte string literal not displayed */
ContainerSecrets []ContainerSecret `bson:"container_secrets,omitempty" json:"container_secrets,omitempty" yaml:"container_secrets,omitempty"`
// RepoRefId is the repo ref id that this project ref tracks, if any.
RepoRefId string `bson:"repo_ref_id" json:"repo_ref_id" yaml:"repo_ref_id"`
// The following fields are used by Evergreen and are not discoverable.
// Hidden determines whether or not the project is discoverable/tracked in the UI
Hidden *bool `bson:"hidden,omitempty" json:"hidden,omitempty"`
ExternalLinks []ExternalLink `bson:"external_links,omitempty" json:"external_links,omitempty" yaml:"external_links,omitempty"`
Banner ProjectBanner `bson:"banner,omitempty" json:"banner" yaml:"banner,omitempty"`
// Filter/view settings
ProjectHealthView ProjectHealthView `bson:"project_health_view" json:"project_health_view" yaml:"project_health_view"`
ParsleyFilters []parsley.Filter `bson:"parsley_filters,omitempty" json:"parsley_filters,omitempty"`
// GitHubDynamicTokenPermissionGroups is a list of permission groups for GitHub dynamic access tokens.
GitHubDynamicTokenPermissionGroups []GitHubDynamicTokenPermissionGroup `` /* 167-byte string literal not displayed */
// GitHubPermissionGroupByRequester is a mapping of requester type to the user defined GitHub permission groups above.
GitHubPermissionGroupByRequester map[string]string `` /* 161-byte string literal not displayed */
// LastAutoRestartedTaskAt is the last timestamp that a task in this project was restarted automatically.
LastAutoRestartedTaskAt time.Time `bson:"last_auto_restarted_task_at"`
// NumAutoRestartedTasks is the number of tasks this project has restarted automatically in the past 24-hour period.
NumAutoRestartedTasks int `bson:"num_auto_restarted_tasks"`
// Test selection settings
TestSelection TestSelectionSettings `bson:"test_selection,omitempty" json:"test_selection,omitzero" yaml:"test_selection,omitempty"`
// RunEveryMainlineCommit indicates that the project should activate the versions for all mainline commits.
// This goes against Evergreen's optimization of only activating the latest commit in a series of mainline commits.
// This is used for projects that use tasks on mainline commits to trigger downstream processes, like deployments.
RunEveryMainlineCommit bool `` /* 128-byte string literal not displayed */
// UseGitHubAppForAPI indicates whether to use the project's GitHub app for
// authenticated API requests to GitHub.
UseGitHubAppForAPI bool `bson:"use_github_app_for_api,omitempty" json:"use_github_app_for_api,omitempty" yaml:"use_github_app_for_api,omitempty"`
}
ProjectRef contains Evergreen project-related settings which can be set independently of version control. Booleans that can be defined from both the repo and branch must be pointers, so that branch configurations can specify when to default to the repo.
func FindAllMergedEnabledTrackedProjectRefs ¶
func FindAllMergedEnabledTrackedProjectRefs(ctx context.Context) ([]ProjectRef, error)
FindAllMergedEnabledTrackedProjectRefs returns all enabled project refs in the db that are currently being tracked (i.e. their project files still exist and the project is not hidden).
func FindAllMergedProjectRefs ¶
func FindAllMergedProjectRefs(ctx context.Context) ([]ProjectRef, error)
FindAllMergedProjectRefs returns all project refs in the db, with repo ref information merged
func FindAllMergedTrackedProjectRefs ¶
func FindAllMergedTrackedProjectRefs(ctx context.Context) ([]ProjectRef, error)
FindAllMergedTrackedProjectRefs returns all project refs in the db that are currently being tracked (i.e. their project files still exist and the project is not hidden). Can't hide a repo without hiding the branches, so don't need to aggregate here.
func FindAllProjectRefs ¶
func FindAllProjectRefs(ctx context.Context) ([]ProjectRef, error)
func FindAnyRestrictedProjectRef ¶
func FindAnyRestrictedProjectRef(ctx context.Context) (*ProjectRef, error)
FindAnyRestrictedProjectRef returns an unrestricted project to use as a default for contexts. TODO: Investigate removing this in DEVPROD-10469.
func FindBranchProjectRef ¶
func FindBranchProjectRef(ctx context.Context, identifier string) (*ProjectRef, error)
FindBranchProjectRef gets a project ref given the project identifier. This returns only branch-level settings; to include repo settings, use FindMergedProjectRef.
func FindDownstreamProjects ¶
func FindDownstreamProjects(ctx context.Context, project string) ([]ProjectRef, error)
FindDownstreamProjects finds projects that have that trigger enabled or inherits it from the repo project.
func FindHiddenProjectRefByOwnerRepoAndBranch ¶
func FindHiddenProjectRefByOwnerRepoAndBranch(ctx context.Context, owner, repo, branch string) (*ProjectRef, error)
func FindMergedEnabledProjectRefsByIds ¶
func FindMergedEnabledProjectRefsByIds(ctx context.Context, ids ...string) ([]ProjectRef, error)
FindMergedEnabledProjectRefsByIds returns all project refs for the provided ids that are currently enabled.
func FindMergedEnabledProjectRefsByOwnerAndRepo ¶
func FindMergedEnabledProjectRefsByOwnerAndRepo(ctx context.Context, owner, repo string) ([]ProjectRef, error)
func FindMergedEnabledProjectRefsByRepoAndBranch ¶
func FindMergedEnabledProjectRefsByRepoAndBranch(ctx context.Context, owner, repoName, branch string) ([]ProjectRef, error)
FindMergedEnabledProjectRefsByRepoAndBranch finds ProjectRefs with matching repo/branch that are enabled, and merges repo information.
func FindMergedProjectRef ¶
func FindMergedProjectRef(ctx context.Context, identifier string, version string, includeProjectConfig bool) (*ProjectRef, error)
FindMergedProjectRef also finds the repo ref settings and merges relevant fields. Relevant fields will also be merged from the parser project with a specified version. If no version is specified, the most recent valid parser project version will be used for merge.
func FindMergedProjectRefsByIds ¶
func FindMergedProjectRefsByIds(ctx context.Context, ids ...string) ([]ProjectRef, error)
func FindMergedProjectRefsForRepo ¶
func FindMergedProjectRefsForRepo(ctx context.Context, repoRef *RepoRef) ([]ProjectRef, error)
FindMergedProjectRefsForRepo considers either owner/repo and repo ref ID, in case the owner/repo of the repo ref is going to change. So we get all the branch projects in the new repo, and all the branch projects that might change owner/repo.
func FindMergedProjectRefsThatUseRepoSettingsByRepoAndBranch ¶
func FindMergedProjectRefsThatUseRepoSettingsByRepoAndBranch(ctx context.Context, owner, repoName, branch string) ([]ProjectRef, error)
FindMergedProjectRefsThatUseRepoSettingsByRepoAndBranch finds ProjectRef with matching repo/branch that rely on the repo configuration, and merges that info.
func FindNonHiddenProjects ¶
func FindNonHiddenProjects(ctx context.Context, key string, limit int, sortDir int, ownerName, repoName string, activeOnly bool) ([]ProjectRef, error)
FindNonHiddenProjects returns limit visible project refs starting at project identifier key in the sortDir direction. Optionally filters by ownerName, repoName, and activeOnly (enabled projects only) if provided.
func FindOneProjectRefByRepoAndBranchWithPRTesting ¶
func FindOneProjectRefByRepoAndBranchWithPRTesting(ctx context.Context, owner, repo, branch, calledBy string) (*ProjectRef, error)
FindOneProjectRefByRepoAndBranchWithPRTesting finds a single ProjectRef with matching repo/branch that is enabled and setup for PR testing.
func FindOneProjectRefWithCommitQueueByOwnerRepoAndBranch ¶
func FindOneProjectRefWithCommitQueueByOwnerRepoAndBranch(ctx context.Context, owner, repo, branch string) (*ProjectRef, error)
FindOneProjectRefWithCommitQueueByOwnerRepoAndBranch finds the project ref for this owner/repo/branch that has the commit queue enabled. There should only ever be one project for the query because we only enable commit queue if no other project ref with the same specification has it enabled.
func FindPeriodicProjects ¶
func FindPeriodicProjects(ctx context.Context) ([]ProjectRef, error)
FindPeriodicProjects returns a list of merged projects that have periodic builds defined.
func FindProjectAndRepoRefsUsingGitHubAppForAPI ¶
func FindProjectAndRepoRefsUsingGitHubAppForAPI(ctx context.Context) ([]ProjectRef, error)
FindProjectAndRepoRefsUsingGitHubAppForAPI returns all branch project refs and repo refs that use GitHub app authentication for internal GitHub API requests. This does not take into account whether a branch project ref inherits settings from the repo ref, so if a repo ref has the GitHub app enabled for internal API usage, this function will return that repo ref but will not return the branch projects that inherit that setting.
func FindProjectRefsByIds ¶
func FindProjectRefsByIds(ctx context.Context, ids ...string) ([]ProjectRef, error)
func GetProjectRefForTask ¶
func GetProjectRefForTask(ctx context.Context, taskId string) (*ProjectRef, error)
func GetProjectRefMergedWithRepo ¶
func GetProjectRefMergedWithRepo(ctx context.Context, pRef ProjectRef) (*ProjectRef, error)
GetProjectRefMergedWithRepo merges the project with the repo, if one exists. Otherwise, it will return the project as given.
func (*ProjectRef) AddToRepoScope ¶
AddToRepoScope validates that the branch can be attached to the matching repo, adds the branch to the unrestricted branches under repo scope, and adds repo view permission for branch admins, and adds branch edit access for repo admins.
func (*ProjectRef) AliasesNeeded ¶
func (p *ProjectRef) AliasesNeeded() bool
func (*ProjectRef) AttachToNewRepo ¶
AttachToNewRepo modifies the project's owner/repo, updates the old and new repo scopes (if relevant), and updates the project to point to the new repo. Any Github project conflicts are disabled. If no repo ref currently exists for the new repo, the user attaching it will be added as the repo ref admin.
func (*ProjectRef) AttachToRepo ¶
AttachToRepo adds the branch to the relevant repo scopes, and updates the project to point to the repo. Any values that previously were unset will now use the repo value, unless this would introduce a GitHub project conflict. If no repo ref currently exists, the user attaching it will be added as the repo ref admin.
func (*ProjectRef) AuthorizedForGitTag ¶
func (p *ProjectRef) AuthorizedForGitTag(ctx context.Context, githubUser, owner, repo string) bool
func (*ProjectRef) CanEnableCommitQueue ¶
func (p *ProjectRef) CanEnableCommitQueue(ctx context.Context) (bool, error)
func (*ProjectRef) CheckAndUpdateAutoRestartLimit ¶
func (p *ProjectRef) CheckAndUpdateAutoRestartLimit(ctx context.Context, maxDailyAutoRestarts int) error
CheckAndUpdateAutoRestartLimit checks if auto restarting a task for a project is allowed given the global per-project daily auto restarting limit, and updates relevant timestamp and counter used to track the project's usage.
func (*ProjectRef) CommitQueueIsOn ¶
func (p *ProjectRef) CommitQueueIsOn() error
func (*ProjectRef) DetachFromRepo ¶
DetachFromRepo removes the branch from the relevant repo scopes, and updates the project to not point to the repo. Any values that previously defaulted to repo will have the repo value explicitly set.
func (*ProjectRef) DoesTrackPushEvents ¶
func (p *ProjectRef) DoesTrackPushEvents() bool
func (*ProjectRef) GetActivationTimeForTask ¶
func (p *ProjectRef) GetActivationTimeForTask(ctx context.Context, t *BuildVariantTaskUnit, versionCreateTime time.Time, now time.Time) (time.Time, error)
GetActivationTimeForTask returns the time at which this task should next be activated. The version create time is used to determine the next activation time, except in situations where using the version create time would produce conflicts such as duplicate cron runs.
func (*ProjectRef) GetActivationTimeForVariant ¶
func (p *ProjectRef) GetActivationTimeForVariant(ctx context.Context, variant *BuildVariant, variantPathsFiltered bool, versionCreateTime time.Time, now time.Time) (time.Time, error)
GetActivationTimeForVariant returns the time at which this variant should next be activated. The variant is not activated if cron/batchtime/activation isn't set for the version and the paths are filtered. The version create time is used to determine the next activation time, except in situations where using the version create time would produce conflicts such as duplicate cron runs.
func (*ProjectRef) GetGitHubAppAuth ¶
func (p *ProjectRef) GetGitHubAppAuth(ctx context.Context) (*githubapp.GithubAppAuth, error)
GetGitHubAppAuth returns the App auth for the given project. If the project defaults to the repo and the app is not defined on the project, it will return the app from the repo.
func (*ProjectRef) GetGitHubAppAuthForAPI ¶
func (p *ProjectRef) GetGitHubAppAuthForAPI(ctx context.Context) (*githubapp.GithubAppAuth, error)
GetGitHubAppAuthForAPI gets this project's GitHub app auth (if any) for usage in the GitHub API if the project is configured to use its own GitHub appf or GitHub API operations.
func (*ProjectRef) GetGitHubPermissionGroup ¶
func (p *ProjectRef) GetGitHubPermissionGroup(requester string) (GitHubDynamicTokenPermissionGroup, bool)
GetGitHubPermissionGroup returns the GitHubDynamicTokenPermissionGroup for the given requester. If the requester is not found, it returns the default permission group and a false boolean to indicate not found.
func (*ProjectRef) GetGithubProjectConflicts ¶
func (p *ProjectRef) GetGithubProjectConflicts(ctx context.Context) (GithubProjectConflicts, error)
GetGithubProjectConflicts returns any potential conflicts; i.e. regardless of whether or not p has something enabled, returns the project identifiers that it _would_ conflict with if it did.
func (*ProjectRef) GetPatchTriggerAlias ¶
func (p *ProjectRef) GetPatchTriggerAlias(aliasName string) (patch.PatchTriggerDefinition, bool)
func (*ProjectRef) GetProjectSetupCommands ¶
func (p *ProjectRef) GetProjectSetupCommands(opts apimodels.WorkstationSetupCommandOptions) ([]*jasper.Command, error)
GetProjectSetupCommands returns jasper commands for the project's configuration commands Stderr/Stdin are passed through to the commands as well as Stdout, when opts.Quiet is false The commands' working directories may not exist and need to be created before running the commands
func (*ProjectRef) IsAutoPRTestingEnabled ¶
func (p *ProjectRef) IsAutoPRTestingEnabled() bool
func (*ProjectRef) IsDeactivatePreviousDisabled ¶
func (p *ProjectRef) IsDeactivatePreviousDisabled() bool
IsDeactivatePreviousDisabled returns true if this was purposefully disabled.
func (*ProjectRef) IsDebugSpawnHostsEnabled ¶
func (p *ProjectRef) IsDebugSpawnHostsEnabled() bool
func (*ProjectRef) IsDispatchingDisabled ¶
func (p *ProjectRef) IsDispatchingDisabled() bool
func (*ProjectRef) IsGitTagVersionsEnabled ¶
func (p *ProjectRef) IsGitTagVersionsEnabled() bool
func (*ProjectRef) IsGithubChecksEnabled ¶
func (p *ProjectRef) IsGithubChecksEnabled() bool
func (*ProjectRef) IsHidden ¶
func (p *ProjectRef) IsHidden() bool
func (*ProjectRef) IsManualPRTestingEnabled ¶
func (p *ProjectRef) IsManualPRTestingEnabled() bool
func (*ProjectRef) IsPRTestingEnabled ¶
func (p *ProjectRef) IsPRTestingEnabled() bool
func (*ProjectRef) IsPRTestingEnabledByCaller ¶
func (p *ProjectRef) IsPRTestingEnabledByCaller(caller string) bool
func (*ProjectRef) IsPatchingDisabled ¶
func (p *ProjectRef) IsPatchingDisabled() bool
func (*ProjectRef) IsPerfEnabled ¶
func (p *ProjectRef) IsPerfEnabled() bool
func (*ProjectRef) IsRepotrackerDisabled ¶
func (p *ProjectRef) IsRepotrackerDisabled() bool
func (*ProjectRef) IsRestricted ¶
func (p *ProjectRef) IsRestricted() bool
func (*ProjectRef) IsStatsCacheDisabled ¶
func (p *ProjectRef) IsStatsCacheDisabled() bool
func (*ProjectRef) IsStepbackBisect ¶
func (p *ProjectRef) IsStepbackBisect() bool
func (*ProjectRef) IsStepbackDisabled ¶
func (p *ProjectRef) IsStepbackDisabled() bool
func (*ProjectRef) IsTestSelectionAllowed ¶
func (p *ProjectRef) IsTestSelectionAllowed() bool
func (*ProjectRef) IsTestSelectionDefaultEnabled ¶
func (p *ProjectRef) IsTestSelectionDefaultEnabled() bool
func (*ProjectRef) IsUntracked ¶
func (p *ProjectRef) IsUntracked() bool
IsUntracked returns true if the project is untracked. This is determined by if the project is disabled, has a repo ref, and is hidden.
func (*ProjectRef) IsVersionControlEnabled ¶
func (p *ProjectRef) IsVersionControlEnabled() bool
func (*ProjectRef) MakeRestricted ¶
func (p *ProjectRef) MakeRestricted(ctx context.Context) error
func (*ProjectRef) MakeUnrestricted ¶
func (p *ProjectRef) MakeUnrestricted(ctx context.Context) error
func (*ProjectRef) MergeWithProjectConfig ¶
func (p *ProjectRef) MergeWithProjectConfig(ctx context.Context, version string) (err error)
MergeWithProjectConfig looks up the project config with the given project ref id and modifies the project ref scanning for any properties that can be set on both project ref and project parser. Any values that are set at the project config level will be set on the project ref IF they are not set on the project ref. If the version isn't specified, we get the latest config.
func (*ProjectRef) RemoveFromRepoScope ¶
func (p *ProjectRef) RemoveFromRepoScope(ctx context.Context) error
RemoveFromRepoScope removes the branch from the unrestricted branches under repo scope and removes branch edit access for repo admins.
func (*ProjectRef) Replace ¶
func (p *ProjectRef) Replace(ctx context.Context) error
Replace updates the project ref in the db if an entry already exists, overwriting the existing ref. If no project ref exists, a new one is created.
func (*ProjectRef) SetContainerSecrets ¶
func (p *ProjectRef) SetContainerSecrets(ctx context.Context, secrets []ContainerSecret) error
SetContainerSecrets updates the container secrets for the project ref.
func (*ProjectRef) SetGithubAppCredentials ¶
func (p *ProjectRef) SetGithubAppCredentials(ctx context.Context, appID int64, privateKey []byte) error
SetGitHubAppCredentials updates or creates an entry in GithubAppAuth for the project ref. If the provided values are empty, the entry is deleted.
func (*ProjectRef) SetRepotrackerError ¶
func (p *ProjectRef) SetRepotrackerError(ctx context.Context, d *RepositoryErrorDetails) error
SetRepotrackerError updates the repotracker error for the project ref.
func (*ProjectRef) ShouldDeactivatePrevious ¶
func (p *ProjectRef) ShouldDeactivatePrevious() bool
func (*ProjectRef) ShouldNotifyOnBuildFailure ¶
func (p *ProjectRef) ShouldNotifyOnBuildFailure() bool
func (*ProjectRef) UpdateAdminRoles ¶
UpdateAdminRoles returns true if any admins have been modified/removed, regardless of errors.
func (*ProjectRef) UseRepoSettings ¶
func (p *ProjectRef) UseRepoSettings() bool
func (*ProjectRef) ValidateEnabledRepotracker ¶
func (p *ProjectRef) ValidateEnabledRepotracker() error
ValidateEnabledRepotracker checks if the repotracker is being enabled, and if it is, checks to make sure it can be enabled.
func (*ProjectRef) ValidateGitHubPermissionGroups ¶
func (p *ProjectRef) ValidateGitHubPermissionGroups() error
func (*ProjectRef) ValidateGitHubPermissionGroupsByRequester ¶
func (p *ProjectRef) ValidateGitHubPermissionGroupsByRequester() error
func (*ProjectRef) ValidateIdentifier ¶
func (p *ProjectRef) ValidateIdentifier(ctx context.Context) error
func (*ProjectRef) ValidateOwnerAndRepo ¶
func (p *ProjectRef) ValidateOwnerAndRepo(validOrgs []string) error
ValidateProjectRefAndSetDefaults validates the project ref and sets default values. Should only be called on enabled project refs or repo refs.
type ProjectSettings ¶
type ProjectSettings struct {
ProjectRef ProjectRef `bson:"proj_ref" json:"proj_ref"`
GitHubAppAuth githubapp.GithubAppAuth `bson:"github_app_auth" json:"github_app_auth"`
GithubHooksEnabled bool `bson:"github_hooks_enabled" json:"github_hooks_enabled"`
Vars ProjectVars `bson:"vars" json:"vars"`
Aliases []ProjectAlias `bson:"aliases" json:"aliases"`
Subscriptions []event.Subscription `bson:"subscriptions" json:"subscriptions"`
}
func GetProjectSettings ¶
func GetProjectSettings(ctx context.Context, p *ProjectRef) (*ProjectSettings, error)
GetProjectSettings returns the ProjectSettings of the given identifier and ProjectRef
func GetProjectSettingsById ¶
func NewProjectSettingsFromEvent ¶
func NewProjectSettingsFromEvent(e ProjectSettingsEvent) ProjectSettings
NewProjectSettingsFromEvent creates project settings from a project settings event.
type ProjectSettingsEvent ¶
type ProjectSettingsEvent struct {
// These fields are mostly copied from ProjectSettings, except for a few
// where the data available to project events differs from the original data
// model.
// For example, the ProjectVars model cannot be used as-is because the
// project variables are not stored in the database for security reasons.
// However, the project event model needs to keep track of which project
// variables changed, hence the need for a separate model in that situation.
ProjectRef ProjectRef `bson:"proj_ref" json:"proj_ref"`
GithubHooksEnabled bool `bson:"github_hooks_enabled" json:"github_hooks_enabled"`
Aliases []ProjectAlias `bson:"aliases" json:"aliases"`
Subscriptions []event.Subscription `bson:"subscriptions" json:"subscriptions"`
GitHubAppAuth ProjectEventGitHubAppAuth `bson:"github_app_auth" json:"github_app_auth"`
Vars ProjectEventVars `bson:"vars" json:"vars"`
// The following boolean fields are flags that indicate that a given
// field is nil instead of [], since this information is lost when
// casting the event to a generic interface.
GitTagAuthorizedTeamsDefault bool `bson:"git_tag_authorized_teams_default,omitempty" json:"git_tag_authorized_teams_default,omitempty"`
GitTagAuthorizedUsersDefault bool `bson:"git_tag_authorized_users_default,omitempty" json:"git_tag_authorized_users_default,omitempty"`
PatchTriggerAliasesDefault bool `bson:"patch_trigger_aliases_default,omitempty" json:"patch_trigger_aliases_default,omitempty"`
PeriodicBuildsDefault bool `bson:"periodic_builds_default,omitempty" json:"periodic_builds_default,omitempty"`
TriggersDefault bool `bson:"triggers_default,omitempty" json:"triggers_default,omitempty"`
WorkstationCommandsDefault bool `bson:"workstation_commands_default,omitempty" json:"workstation_commands_default,omitempty"`
}
ProjectSettingsEvent contains the event data about a single revision of a project's settings.
func NewProjectSettingsEvent ¶
func NewProjectSettingsEvent(p ProjectSettings) ProjectSettingsEvent
NewProjectSettingsEvent creates project settings event data from project settings.
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"`
Commands []PluginCommandConf `yaml:"commands,omitempty" bson:"commands"`
Tags []string `yaml:"tags,omitempty" bson:"tags"`
RunOn []string `yaml:"run_on,omitempty" bson:"run_on"`
// 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"`
PatchOnly *bool `yaml:"patch_only,omitempty" bson:"patch_only,omitempty"`
Disable *bool `yaml:"disable,omitempty" bson:"disable,omitempty"`
AllowForGitTag *bool `yaml:"allow_for_git_tag,omitempty" bson:"allow_for_git_tag,omitempty"`
GitTagOnly *bool `yaml:"git_tag_only,omitempty" bson:"git_tag_only,omitempty"`
AllowedRequesters []evergreen.UserRequester `yaml:"allowed_requesters,omitempty" bson:"allowed_requesters,omitempty"`
Stepback *bool `yaml:"stepback,omitempty" bson:"stepback,omitempty"`
MustHaveResults *bool `yaml:"must_have_test_results,omitempty" bson:"must_have_test_results,omitempty"`
PS *string `yaml:"ps,omitempty" bson:"ps,omitempty"`
}
Unmarshalled from the "tasks" list in the project file
type ProjectTasksByName ¶
type ProjectTasksByName []ProjectTask
ProjectTasksByName represents a slice of project config tasks that can be sorted by name.
func (ProjectTasksByName) Len ¶
func (pt ProjectTasksByName) Len() int
func (ProjectTasksByName) Less ¶
func (pt ProjectTasksByName) Less(i, j int) bool
func (ProjectTasksByName) Swap ¶
func (pt ProjectTasksByName) Swap(i, j int)
type ProjectVars ¶
type ProjectVars struct {
// Id is the ID of the project.
Id string `bson:"_id" json:"_id"`
// Vars is the actual mapping of variable names to values for this project.
// This is intentionally not stored in the DB for security reasons. The
// variables can be fetched from ParameterStore using the Parameters field.
Vars map[string]string `bson:"-" json:"vars"`
// Parameters contains the mappings between user-defined project variable
// names and the parameter name where the variable's value can be found in
// Parameter Store.
Parameters ParameterMappings `bson:"parameters,omitempty" json:"parameters,omitempty"`
// 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"`
// AdminOnlyVars keeps track of variables that are only accessible by project admins.
AdminOnlyVars map[string]bool `bson:"admin_only_vars" json:"admin_only_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 FindMergedProjectVars ¶
func FindMergedProjectVars(ctx context.Context, projectID string) (*ProjectVars, error)
FindMergedProjectVars merges vars from the target project's ProjectVars and its parent repo's vars
func FindOneProjectVars ¶
func FindOneProjectVars(ctx context.Context, projectId string) (*ProjectVars, error)
FindOneProjectVars finds the project variables document for a given project ID.
func (*ProjectVars) Clear ¶
func (projectVars *ProjectVars) Clear(ctx context.Context) error
Clears clears all variables for a project.
func (*ProjectVars) FindAndModify ¶
func (projectVars *ProjectVars) FindAndModify(ctx context.Context, varsToDelete []string) (*adb.ChangeInfo, error)
FindAndModify is almost the same functionally as Upsert, except that it only deletes project vars that are explicitly provided in varsToDelete. In other words, even if a project variable is omitted from projectVars, it won't be deleted unless that variable is explicitly listed in varsToDelete. If this succeeds, projectVars will contain all the project variables, including those that were not explicitly modified.
func (*ProjectVars) Insert ¶
func (projectVars *ProjectVars) Insert(ctx context.Context) error
Insert creates a new project vars document and stores all the project variables in the DB. If Parameter Store is enabled for the project, it also stores the variables in Parameter Store.
func (*ProjectVars) MergeWithRepoVars ¶
func (projectVars *ProjectVars) MergeWithRepoVars(repoVars *ProjectVars)
MergeWithRepoVars merges the project and repo variables
func (*ProjectVars) RedactPrivateVars ¶
func (projectVars *ProjectVars) RedactPrivateVars() *ProjectVars
RedactPrivateVars redacts private variable plaintext values and replaces them with the empty string.
func (*ProjectVars) Upsert ¶
func (projectVars *ProjectVars) Upsert(ctx context.Context) (*adb.ChangeInfo, error)
Upsert creates or updates a project vars document and stores all the project variables in the DB. If Parameter Store is enabled for the project, it also stores the variables in Parameter Store.
type PushLog ¶
type PushLog struct {
Id mgobson.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 ¶
type QuestionAnswer ¶
type RepoRef ¶
type RepoRef struct {
ProjectRef `yaml:",inline" bson:",inline"`
}
RepoRef is a wrapper for ProjectRef, as many settings in the project ref can be defined at both the branch and repo level.
func FindOneRepoRef ¶
FindOneRepoRef gets a project ref given the owner name, the repo name and the project name
func FindRepoRefByOwnerAndRepo ¶
FindRepoRefsByRepoAndBranch finds RepoRefs with matching repo/branch that are enabled and setup for PR testing
func (*RepoRef) Insert ¶
Insert is included here so ProjectRef.Insert(context.Context) isn't mistakenly used.
func (*RepoRef) MakeRestricted ¶
func (r *RepoRef) MakeRestricted(ctx context.Context, branchProjects []ProjectRef) error
func (*RepoRef) MakeUnrestricted ¶
func (r *RepoRef) MakeUnrestricted(ctx context.Context, branchProjects []ProjectRef) error
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(ctx context.Context, 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 RestartOptions ¶
type RestartOptions struct {
DryRun bool `bson:"dry_run" json:"dry_run"`
StartTime time.Time `bson:"start_time" json:"start_time"`
EndTime time.Time `bson:"end_time" json:"end_time"`
User string `bson:"user" json:"user"`
// note that the bson tags are not quite accurate, but are kept around for backwards compatibility
IncludeTestFailed bool `bson:"only_red" json:"only_red"`
IncludeSysFailed bool `bson:"only_purple" json:"only_purple"`
IncludeSetupFailed bool `bson:"include_setup_failed" json:"include_setup_failed"`
}
type RestartResults ¶
func RestartFailedTasks ¶
func RestartFailedTasks(ctx context.Context, opts RestartOptions) (RestartResults, error)
RestartFailedTasks attempts to restart failed tasks that started or failed 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 set to true. opts.red and opts.purple will only restart tasks that were failed due to the test or due to the system, respectively.
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 Suggester ¶
type Suggester interface {
Suggest(context.Context, *task.Task) ([]thirdparty.JiraTicket, error)
GetTimeout() time.Duration
}
type TVPair ¶
TVPair is a helper type for mapping bv/task pairs to ids.
func IncludeDependencies ¶
func IncludeDependencies(project *Project, tvpairs []TVPair, requester string, activationInfo *specificActivationInfo) ([]TVPair, error)
IncludeDependencies 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. This function can return an error, but it should be treated as an informational warning.
func IncludeDependenciesWithGenerated ¶
func IncludeDependenciesWithGenerated(project *Project, tvpairs []TVPair, requester string, activationInfo *specificActivationInfo, generatedVariants []parserBV) ([]TVPair, error)
IncludeDependenciesWithGenerated performs the same function as IncludeDependencies for generated projects. activationInfo and generatedVariants are required in the case for generate tasks to detect if new generated dependency's task/variant pairs are depended on by inactive tasks. If so, we also set these new dependencies to inactive.
type TVPairSet ¶
type TVPairSet []TVPair
type TaskCreationInfo ¶
type TaskCreationInfo struct {
Version *Version
Project *Project
ProjectRef *ProjectRef
BuildVariant *BuildVariant // If creating tasks in a specific BV, the BV definition
Build *build.Build // If creating tasks in an existing build, the build itself
Pairs TaskVariantPairs // New variant-tasks to be created
BuildVariantName string // If creating tasks in a specific BV, the name of the BV
TaskIDs TaskIdConfig // Pre-generated IDs for the tasks to be created
ActivateBuild bool // True if the build should be scheduled
ActivationInfo specificActivationInfo // Indicates if the task has a specific activation or is a stepback task
TasksInBuild []task.Task // The set of task names that already exist for the given build, including display tasks
TaskNames []string // Names of tasks to create (used in patches). Will create all if empty
DisplayNames []string // Names of display tasks to create (used in patches). Will create all if empty
GeneratedBy string // ID of the task that generated this build
SourceRev string // Githash of the revision that triggered this build
DefinitionID string // Definition ID of the trigger used to create this build
Aliases ProjectAliases // Project aliases to use to filter tasks created
DistroAliases distro.AliasLookupTable // Map of distro aliases to names of distros
TaskCreateTime time.Time // Create time of tasks in the build
GithubChecksAliases ProjectAliases // Project aliases to use to filter tasks to count towards the github checks, if any
// ActivatedTasksAreEssentialToSucceed indicates whether or not all tasks
// that are being created and activated immediately are required to finish
// in order for the build/version to be finished. Tasks with specific
// activation conditions (e.g. cron, activate) are not considered essential.
ActivatedTasksAreEssentialToSucceed bool
TestSelectionParams TestSelectionParams // Task creation parameters for test selection
}
TaskCreationInfo contains the needed parameters to construct new builds and tasks for a given version.
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"`
SetupGroupCanFailTask bool `yaml:"setup_group_can_fail_task" bson:"setup_group_can_fail_task"`
SetupGroupTimeoutSecs int `yaml:"setup_group_timeout_secs" bson:"setup_group_timeout_secs"`
TeardownGroup *YAMLCommandSet `yaml:"teardown_group" bson:"teardown_group"`
TeardownGroupTimeoutSecs int `yaml:"teardown_group_timeout_secs" bson:"teardown_group_timeout_secs"`
SetupTask *YAMLCommandSet `yaml:"setup_task" bson:"setup_task"`
SetupTaskCanFailTask bool `yaml:"setup_task_can_fail_task,omitempty" bson:"setup_task_can_fail_task,omitempty"`
SetupTaskTimeoutSecs int `yaml:"setup_task_timeout_secs,omitempty" bson:"setup_task_timeout_secs,omitempty"`
TeardownTask *YAMLCommandSet `yaml:"teardown_task" bson:"teardown_task"`
TeardownTaskCanFailTask bool `yaml:"teardown_task_can_fail_task" bson:"teardown_task_can_fail_task"`
TeardownTaskTimeoutSecs int `yaml:"teardown_task_timeout_secs,omitempty" bson:"teardown_task_timeout_secs,omitempty"`
Timeout *YAMLCommandSet `yaml:"timeout,omitempty" bson:"timeout"`
CallbackTimeoutSecs int `yaml:"callback_timeout_secs,omitempty" bson:"callback_timeout_secs,omitempty"`
Tasks []string `yaml:"tasks" bson:"tasks"`
Tags []string `yaml:"tags,omitempty" bson:"tags"`
ShareProcs bool `yaml:"share_processes" bson:"share_processes"`
}
func (*TaskGroup) InjectInfo ¶
type TaskGroupInfo ¶
type TaskGroupInfo struct {
// Name is the name of the task group. An empty string denotes that it is a standalone task
Name string `bson:"name" json:"name"`
// Count is the number of tasks in the group that are currently in the queue.
Count int `bson:"count" json:"count"`
// CountFree represents the number of hosts that are free (or expected to soon be free) to run tasks in the group
CountFree int `bson:"count_free" json:"count_free"`
// CountRequired represents the number of new hosts that will be spawned to run tasks in the group
CountRequired int `bson:"count_required" json:"count_required"`
// MaxHosts represents the maximum number of hosts that can be allocated to the group at once
MaxHosts int `bson:"max_hosts" json:"max_hosts"`
// ExpectedDuration represents the sum of the expected runtime of all tasks waiting in the group with their dependencies met
ExpectedDuration time.Duration `bson:"expected_duration" json:"expected_duration"`
// CountDurationOverThreshold represents the number of tasks in the group that have their dependencies
// met and are expected to take over the distro queue's MaxDurationThreshold
CountDurationOverThreshold int `bson:"count_over_threshold" json:"count_over_threshold"`
// CountWaitOverThreshold represents the number of tasks in the group that have been waiting for over the distro queue's MaxDurationThreshold
// since their dependencies were met
CountWaitOverThreshold int `bson:"count_wait_over_threshold" json:"count_wait_over_threshold"`
// DurationOverThreshold represents the sum of the expected durations of tasks in the group
// that have their dependencies met and are expected to take over the distro queue's MaxDurationThreshold
DurationOverThreshold time.Duration `bson:"duration_over_threshold" json:"duration_over_threshold"`
}
type TaskGroupsByName ¶
type TaskGroupsByName []TaskGroup
TaskGroupsByName represents a slice of project config task grups that can be sorted by name.
func (TaskGroupsByName) Len ¶
func (tg TaskGroupsByName) Len() int
func (TaskGroupsByName) Less ¶
func (tg TaskGroupsByName) Less(i, j int) bool
func (TaskGroupsByName) Swap ¶
func (tg TaskGroupsByName) Swap(i, j int)
type TaskIdConfig ¶
type TaskIdConfig struct {
ExecutionTasks TaskIdTable
DisplayTasks TaskIdTable
}
TaskIdConfig stores TaskIdTables split by execution and display tasks.
func NewTaskIdConfig ¶
func NewTaskIdConfig(proj *Project, v *Version, tasks TaskVariantPairs, projectIdentifier string) (TaskIdConfig, error)
NewTaskIdConfig constructs a new set of TaskIdTables (map of [variant, task display name]->[task id]) split by display and execution tasks.
func NewTaskIdConfigForRepotrackerVersion ¶
func NewTaskIdConfigForRepotrackerVersion(ctx context.Context, p *Project, v *Version, pairsToCreate TVPairSet, sourceRev, defID string) TaskIdConfig
NewTaskIdConfigForRepotrackerVersion creates a special TaskIdTable for a repotracker version. If pairsToCreate is not empty, that means only some of the tasks will be created for this version so only create task IDs for those tasks that actually will be created; otherwise, it will create task IDs for all possible tasks in the version.
func (TaskIdConfig) Length ¶
func (t TaskIdConfig) Length() int
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() []string
GetIdsForAllTasks returns every id in the table
func (TaskIdTable) GetIdsForAllTasksInVariant ¶
func (tt TaskIdTable) GetIdsForAllTasksInVariant(variantName string) []string
GetIdsForAllTasksInVariant returns all task Ids for all tasks on a variant
func (TaskIdTable) GetIdsForTaskInAllVariants ¶
func (tt TaskIdTable) GetIdsForTaskInAllVariants(taskName string) []string
GetIdsForTaskInAllVariants returns all task Ids for taskName on all variants
type TaskQueue ¶
type TaskQueue struct {
Distro string `bson:"distro" json:"distro"`
GeneratedAt time.Time `bson:"generated_at" json:"generated_at"`
Queue []TaskQueueItem `bson:"queue" json:"queue"`
DistroQueueInfo DistroQueueInfo `bson:"distro_queue_info" json:"distro_queue_info"`
}
TaskQueue represents the next n tasks to be run on hosts of the distro
func FindDistroTaskQueue ¶
func NewTaskQueue ¶
func NewTaskQueue(distroID string, queue []TaskQueueItem, distroQueueInfo DistroQueueInfo) *TaskQueue
func (*TaskQueue) DequeueTask ¶
pull out the task with the specified id from both the in-memory and db versions of the task queue
type TaskQueueItem ¶
type TaskQueueItem struct {
Id string `bson:"_id" json:"_id"`
IsDispatched bool `bson:"dispatched" json:"dispatched"`
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"`
GroupIndex int `bson:"group_index,omitempty" json:"group_index,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"`
SortingValueBreakdown task.SortingValueBreakdown `bson:"sorting_value_breakdown" json:"sorting_value_breakdown"`
Dependencies []string `bson:"dependencies" json:"dependencies"`
DependenciesMet bool `bson:"dependencies_met" json:"dependencies_met"`
ActivatedBy string `bson:"activated_by" json:"activated_by"`
}
type TaskQueueItemDispatcher ¶
type TaskQueueItemDispatcher interface {
RefreshFindNextTask(context.Context, string, TaskSpec, time.Time) (*TaskQueueItem, error)
}
func NewTaskDispatchAliasService ¶
func NewTaskDispatchAliasService(ttl time.Duration) TaskQueueItemDispatcher
func NewTaskDispatchService ¶
func NewTaskDispatchService(ttl time.Duration) TaskQueueItemDispatcher
type TaskSpec ¶
type TaskSpec struct {
Group string `json:"group"`
BuildVariant string `json:"build_variant"`
Project string `json:"project"`
Version string `json:"version"`
GroupMaxHosts int `json:"group_max_hosts"`
}
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.
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"`
OmitGeneratedTasks bool `yaml:"omit_generated_tasks,omitempty" bson:"omit_generated_tasks,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(any) 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 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 returns all the variant groups as a set of patch.VariantTasks.
type TestSelectionParams ¶
type TestSelectionParams struct {
CanBuildVariantEnableTestSelection bool // Whether or not any of the tasks in the build variant can use test selection.
IncludeBuildVariants []*regexp.Regexp // Regexes for build variants to include when enabling test selection.
ExcludeBuildVariants []*regexp.Regexp // Regexes for build variants to exclude when enabling test selection.
IncludeTasks []*regexp.Regexp // Regexes for tasks to include when enabling test selection.
ExcludeTasks []*regexp.Regexp // Regexes for tasks to exclude when enabling test selection.
}
TestSelectionParams contains parameters for enabling test selection on tasks in a build variant.
type TestSelectionSettings ¶
type TestSelectionSettings struct {
// Allowed determines if test selection featuers can be used in this project
// at all.
Allowed *bool `bson:"allowed,omitempty" json:"allowed,omitzero" yaml:"allowed,omitempty"`
// DefaultEnabled indicates whether test selection is enabled or disabled by
// default for patch tasks in this project.
DefaultEnabled *bool `bson:"default_enabled,omitempty" json:"default_enabled,omitzero" yaml:"default_enabled,omitempty"`
}
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.
func StatusDiffTests ¶
func StatusDiffTests(original, patch []testresult.TestResult) []TestStatusDiff
StatusDiffTests takes two sets of tests and returns a diff of their results for easy comparison and analysis.
type TriggerDefinition ¶
type TriggerDefinition struct {
// completion of specified task(s) in the project listed here will cause a build in the current project
Project string `bson:"project" json:"project"`
Level string `bson:"level" json:"level"` //build or task
//used to enforce that only 1 version gets created from a given upstream commit + trigger combo
DefinitionID string `bson:"definition_id" json:"definition_id"`
// filters for this trigger
BuildVariantRegex string `bson:"variant_regex,omitempty" json:"variant_regex,omitempty"`
TaskRegex string `bson:"task_regex,omitempty" json:"task_regex,omitempty"`
Status string `bson:"status,omitempty" json:"status,omitempty"`
DateCutoff *int `bson:"date_cutoff,omitempty" json:"date_cutoff,omitempty"`
// definitions for tasks to run for this trigger
ConfigFile string `bson:"config_file,omitempty" json:"config_file,omitempty"`
Alias string `bson:"alias,omitempty" json:"alias,omitempty"`
UnscheduleDownstreamVersions bool `bson:"unschedule_downstream_versions,omitempty" json:"unschedule_downstream_versions,omitempty"`
}
type VariantsAndTasksFromProject ¶
type VariantsAndTasksFromProject struct {
Variants map[string]BuildVariant
Tasks []struct{ Name string }
Project Project
}
func GetVariantsAndTasksFromPatchProject ¶
func GetVariantsAndTasksFromPatchProject(ctx context.Context, settings *evergreen.Settings, p *patch.Patch) (*VariantsAndTasksFromProject, error)
GetVariantsAndTasksFromPatchProject formats variants and tasks as used by the UI pages.
type Version ¶
type Version struct {
Id string `bson:"_id" json:"id,omitempty"`
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"`
Revision string `bson:"gitspec" json:"revision,omitempty"`
// Author is a reference to the Evergreen user that authored
// this commit, if they can be identified. This may refer to the user's
// ID or their display name.
Author string `bson:"author" json:"author,omitempty"`
// AuthorID is an optional reference to the Evergreen user that authored
// this commit, if they can be identified. This always refers to the user's
// ID.
AuthorID string `bson:"author_id,omitempty" json:"author_id,omitempty"`
AuthorEmail string `bson:"author_email" json:"author_email,omitempty"`
Message string `bson:"message" json:"message,omitempty"`
Status string `bson:"status" json:"status,omitempty"`
RevisionOrderNumber int `bson:"order,omitempty" json:"order,omitempty"`
Ignored bool `bson:"ignored" json:"ignored"`
Owner string `bson:"owner_name" json:"owner_name,omitempty"`
Repo string `bson:"repo_name" json:"repo_name,omitempty"`
Branch string `bson:"branch_name" json:"branch_name,omitempty"`
// BuildVariants contains information about build variant activation. This
// is not always loaded in version document queries because it can be large.
// See (Version).GetBuildVariants to fetch this field.
BuildVariants []VersionBuildStatus `bson:"build_variants_status,omitempty" json:"build_variants_status,omitempty"`
PeriodicBuildID string `bson:"periodic_build_id,omitempty" json:"periodic_build_id,omitempty"`
Aborted bool `bson:"aborted,omitempty" json:"aborted,omitempty"`
// This stores whether or not a version has tasks which were activated.
// We use a bool ptr in order to to distinguish the unset value from the default value
Activated *bool `bson:"activated,omitempty" json:"activated,omitempty"`
// GitTags stores tags that were pushed to this version, while TriggeredByGitTag is for versions created by tags
GitTags []GitTag `bson:"git_tags,omitempty" json:"git_tags,omitempty"`
TriggeredByGitTag GitTag `bson:"triggered_by_git_tag,omitempty" json:"triggered_by_git_tag"`
// Parameters stores user-defined parameters
Parameters []patch.Parameter `bson:"parameters,omitempty" json:"parameters,omitempty"`
// This is technically redundant, but a lot of code relies on it, so I'm going to leave it
BuildIds []string `bson:"builds" json:"builds,omitempty"`
Identifier string `bson:"identifier" json:"identifier,omitempty"`
Remote bool `bson:"remote" json:"remote,omitempty"`
RemotePath string `bson:"remote_path" json:"remote_path,omitempty"`
// version requester - this is used to help tell the
// reason this version 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:"requester,omitempty"`
// child patches will store the id of the parent patch
ParentPatchID string `bson:"parent_patch_id" json:"parent_patch_id,omitempty"`
ParentPatchNumber int `bson:"parent_patch_number" json:"parent_patch_number,omitempty"`
// version errors - this is used to keep track of any errors that were
// encountered in the process of creating a version. If there are no errors
// this field is omitted in the database
Errors []string `bson:"errors,omitempty" json:"errors,omitempty"`
Warnings []string `bson:"warnings,omitempty" json:"warnings,omitempty"`
SatisfiedTriggers []string `bson:"satisfied_triggers,omitempty" json:"satisfied_triggers,omitempty"`
// Fields set if triggered by an upstream build
// TriggerID is the ID of the entity that triggered the downstream version.
TriggerID string `bson:"trigger_id,omitempty" json:"trigger_id,omitempty"`
// TriggerType is the type of entity that triggered the downstream version.
TriggerType string `bson:"trigger_type,omitempty" json:"trigger_type,omitempty"`
// TriggerEvent is the event ID that triggered the downstream version.
TriggerEvent string `bson:"trigger_event,omitempty" json:"trigger_event,omitempty"`
// TriggerSHA is the SHA of the untracked commit that triggered the downstream version,
// this field is only populated for push level triggers.
TriggerSHA string `bson:"trigger_sha,omitempty" json:"trigger_sha,omitempty"`
// this is only used for aggregations, and is not stored in the DB
Builds []build.Build `bson:"build_variants,omitempty" json:"build_variants,omitempty"`
// ProjectStorageMethod describes how the parser project for this version is
// stored. If this is empty, the default storage method is StorageMethodDB.
ProjectStorageMethod evergreen.ParserProjectStorageMethod `bson:"storage_method" json:"storage_method,omitempty"`
// PreGenerationProjectStorageMethod describes how the cached parser project from before it was modified
// by generate.tasks for this version is stored. If this is empty, the default storage method is StorageMethodDB.
PreGenerationProjectStorageMethod evergreen.ParserProjectStorageMethod `bson:"pre_generation_storage_method" json:"pre_generation_storage_method,omitempty"`
// Cost stores the aggregated actual cost (on-demand and adjusted components) of all execution tasks in the version.
Cost cost.Cost `bson:"cost,omitempty" json:"cost,omitempty"`
// PredictedCost stores the aggregated predicted cost derived from tasks' predicted_cost.
PredictedCost cost.Cost `bson:"predicted_cost,omitempty" json:"predicted_cost,omitempty"`
}
func FetchVersionsBuildsAndTasks ¶
func FetchVersionsBuildsAndTasks(ctx context.Context, project *Project, skip int, numVersions int, showTriggered bool) ([]Version, map[string][]build.Build, map[string][]task.Task, error)
FetchVersionsBuildsAndTasks is a helper function to fetch a group of versions and their associated builds and tasks. Returns the versions themselves, a map of version id -> the builds that are a part of the version (unsorted) and a map of build ID -> each build's tasks
func FinalizePatch ¶
FinalizePatch 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 Creates a manifest based on the Version
func FindBaseVersionForVersion ¶
FindBaseVersionForVersion finds the base version for a given version ID. If the version is a patch, it will return the base version. If the version is a mainline commit, it will return the previously run mainline commit.
func FindLastPassingVersionForBuildVariants ¶
func FindLastPassingVersionForBuildVariants(ctx context.Context, project *Project, buildVariantNames []string) (*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 FindLastPeriodicBuild ¶
func FindVersionByLastKnownGoodConfig ¶
func FindVersionByLastKnownGoodConfig(ctx context.Context, projectId string, revisionOrderNumber int) (*Version, error)
FindVersionByLastKnownGoodConfig filters on versions with valid (i.e., have no errors) config for the given project.
func GetActiveVersionsByTaskFilters ¶
func GetActiveVersionsByTaskFilters(ctx context.Context, projectId string, opts WaterfallOptions, searchOffset int) ([]Version, error)
GetActiveVersionsByTaskFilters returns limit versions that satisfy a task name or status filter. It also applies any requester and build variant filters. If neither of these filters is specified, use GetActiveWaterfallVersions: it's faster.
func GetActiveWaterfallVersions ¶
func GetActiveWaterfallVersions(ctx context.Context, projectId string, opts WaterfallOptions) ([]Version, error)
GetActiveWaterfallVersions returns at most `opts.limit` activated versions for a given project. It performantly applies build variant and requester filters; for task-related filters, see GetActiveVersionsByTaskFilters.
func GetAllWaterfallVersions ¶
func GetAllWaterfallVersions(ctx context.Context, projectId string, minOrder int, maxOrder int) ([]Version, error)
GetAllWaterfallVersions returns all of a project's versions within an inclusive range of orders.
func GetMostRecentWaterfallVersion ¶
GetMostRecentWaterfallVersion returns the most recent version, activated or unactivated, on the waterfall.
func GetNewerActiveWaterfallVersion ¶
func GetNewerActiveWaterfallVersion(ctx context.Context, projectId string, version Version) (*Version, error)
GetNewerActiveWaterfallVersion returns the next newer active version on the waterfall, i.e. a more recent activated version than the current version.
func GetOlderActiveWaterfallVersion ¶
func GetOlderActiveWaterfallVersion(ctx context.Context, projectId string, version Version) (*Version, error)
GetOlderActiveWaterfallVersion returns the next older active version on the waterfall, i.e. an older activated version than the current version.
func GetVersionsToModify ¶
func GetVersionsToModify(ctx context.Context, projectName string, opts ModifyVersionsOptions, startTime, endTime time.Time) ([]Version, error)
GetVersionsToModify returns a slice of versions intended to be modified that satisfy the given ModifyVersionsOptions.
func GetVersionsWithOptions ¶
func GetVersionsWithOptions(ctx context.Context, projectName string, opts GetVersionsOptions) ([]Version, error)
GetVersionsWithOptions returns versions for a project, that satisfy a set of query parameters defined by the input GetVersionsOptions.
func VersionFind ¶
VersionFind returns versions matching the query.
func VersionFindOne ¶
VersionFindOne returns a version matching the query.
func VersionFindOneId ¶
VersionFindOneId returns a version by ID, excluding its BuildVariants. If the version needs to load BuildVariants, use VersionFindOneIdWithBuildVariants.
func VersionFindOneIdWithBuildVariants ¶
VersionFindOneIdWithBuildVariants returns a version by ID, including its BuildVariants. In general, prefer to use VersionFindOneId instead and use GetBuildVariants to load the field when necessary unless BuildVariants is needed because it is expensive to load.
func (*Version) ActivateAndSetBuildVariants ¶
ActivateAndSetBuildVariants activates the version and sets its build variants.
func (*Version) AddSatisfiedTrigger ¶
func (*Version) GetBuildVariants ¶
func (v *Version) GetBuildVariants(ctx context.Context) ([]VersionBuildStatus, error)
GetBuildVariants returns the build variants for the version. If the version already has build variants cached, it'll use that; otherwise, it will load the build variants from the DB. If the version does not exist in the DB yet, it'll return v's own in-memory BuildVariants, if any.
func (*Version) GetTimeSpent ¶
GetTimeSpent returns the total time_taken and makespan of a version for each task that has finished running
func (*Version) IsFinished ¶
IsFinished returns whether or not the version has finished based on its status.
func (*Version) LastSuccessful ¶
LastSuccessful returns the last successful version before the current version.
func (*Version) MarshalBSON ¶
func (*Version) SetAborted ¶
SetAborted sets the version as aborted.
func (*Version) SetActivated ¶
SetActivated sets version activated field to specified boolean.
func (*Version) UnmarshalBSON ¶
func (*Version) UpdateAggregateTaskCosts ¶
UpdateAggregateTaskCosts aggregates the actual and predicted costs from all execution tasks in the version and updates the version's Cost and PredictedCost fields in the database.
func (*Version) UpdatePreGenerationProjectStorageMethod ¶
func (v *Version) UpdatePreGenerationProjectStorageMethod(ctx context.Context, method evergreen.ParserProjectStorageMethod) error
UpdatePreGenerationProjectStorageMethod updates the version's pre-generation parser project storage method.
func (*Version) UpdateProjectStorageMethod ¶
func (v *Version) UpdateProjectStorageMethod(ctx context.Context, method evergreen.ParserProjectStorageMethod) error
UpdateProjectStorageMethod updates the version's parser project storage method.
type VersionBuildStatus ¶
type VersionBuildStatus struct {
BuildVariant string `bson:"build_variant" json:"id"`
DisplayName string `bson:"display_name,omitempty" json:"display_name,omitempty"`
BuildId string `bson:"build_id,omitempty" json:"build_id,omitempty"`
BatchTimeTasks []BatchTimeTaskStatus `bson:"batchtime_tasks,omitempty" json:"batchtime_tasks,omitempty"`
ActivationStatus `bson:",inline"`
}
VersionBuildStatus stores metadata relating to each build
type VersionMetadata ¶
type VersionMetadata struct {
Revision Revision
TriggerID string
TriggerType string
EventID string
TriggerDefinitionID string
SourceVersion *Version
SourceCommit string
IsAdHoc bool
Activate bool
User *user.DBUser
Message string
Alias string
PeriodicBuildID string
RemotePath string
GitTag GitTag
ChangedFiles []string
}
VersionMetadata is used to pass information about version creation
type VersionModification ¶
type VersionModification struct {
Action evergreen.ModificationAction `json:"action"`
Active bool `json:"active"`
Abort bool `json:"abort"`
Priority int64 `json:"priority"`
VersionsToRestart []*VersionToRestart `json:"versions_to_restart"`
}
type VersionToRestart ¶
type VersionsByCreateTime ¶
type VersionsByCreateTime []Version
func (VersionsByCreateTime) Len ¶
func (v VersionsByCreateTime) Len() int
func (VersionsByCreateTime) Less ¶
func (v VersionsByCreateTime) Less(i, j int) bool
func (VersionsByCreateTime) Swap ¶
func (v VersionsByCreateTime) Swap(i, j int)
type WaterfallBuild ¶
type WaterfallBuild struct {
Id string `bson:"_id" json:"_id"`
Activated bool `bson:"activated" json:"activated"`
BuildVariant string `bson:"build_variant" json:"build_variant"`
DisplayName string `bson:"display_name" json:"display_name"`
Version string `bson:"version" json:"version"`
Tasks []WaterfallTask `bson:"tasks" json:"tasks"`
}
func GetVersionBuilds ¶
func GetVersionBuilds(ctx context.Context, versionID string, buildIds []string) ([]WaterfallBuild, error)
GetVersionBuilds returns a list of builds with populated tasks for the given build IDs. Tasks are grouped by display task when applicable - execution tasks are shown under their parent display task, while regular tasks (not part of a display task) are shown individually.
type WaterfallBuildVariant ¶
type WaterfallBuildVariant struct {
Id string `bson:"_id" json:"_id"`
DisplayName string `bson:"display_name" json:"display_name"`
Builds []WaterfallBuild `bson:"builds" json:"builds"`
Version string `bson:"version" json:"version"`
}
type WaterfallOptions ¶
type WaterfallOptions struct {
Limit int `bson:"-" json:"-"`
MaxOrder int `bson:"-" json:"-"`
MinOrder int `bson:"-" json:"-"`
OmitInactiveBuilds bool `bson:"-" json:"-"`
Requesters []string `bson:"-" json:"-"`
Statuses []string `bson:"-" json:"-"`
Tasks []string `bson:"-" json:"-"`
TaskCaseSensitive bool `bson:"-" json:"-"`
Variants []string `bson:"-" json:"-"`
VariantCaseSensitive bool `bson:"-" json:"-"`
}
type WaterfallTask ¶
type WorkstationConfig ¶
type WorkstationConfig struct {
SetupCommands []WorkstationSetupCommand `bson:"setup_commands" json:"setup_commands" yaml:"setup_commands"`
GitClone *bool `bson:"git_clone" json:"git_clone" yaml:"git_clone"`
}
func (*WorkstationConfig) ShouldGitClone ¶
func (c *WorkstationConfig) ShouldGitClone() bool
type WorkstationSetupCommand ¶
type YAMLCommandSet ¶
type YAMLCommandSet struct {
SingleCommand *PluginCommandConf `yaml:"single_command,omitempty" bson:"single_command,omitempty"`
MultiCommand []PluginCommandConf `yaml:"multi_command,omitempty" bson:"multi_command,omitempty"`
}
func (*YAMLCommandSet) List ¶
func (c *YAMLCommandSet) List() []PluginCommandConf
func (*YAMLCommandSet) MarshalYAML ¶
func (c *YAMLCommandSet) MarshalYAML() (any, error)
func (*YAMLCommandSet) UnmarshalYAML ¶
func (c *YAMLCommandSet) UnmarshalYAML(unmarshal func(any) error) error
Source Files
¶
- build_baron.go
- build_variant_history.go
- container_task_queue.go
- context.go
- dependency.go
- doc.go
- feedback.go
- generate.go
- keyval.go
- lifecycle.go
- note.go
- otel.go
- patch_lifecycle.go
- project.go
- project_aliases.go
- project_config.go
- project_config_db.go
- project_event.go
- project_matrix.go
- project_parser.go
- project_parser_db.go
- project_parser_merge_functions.go
- project_parser_s3.go
- project_parser_storage.go
- project_ref.go
- project_selector.go
- project_vars.go
- push.go
- repo_ref.go
- repository.go
- scheduler_stats.go
- status_diff.go
- task_creation.go
- task_history.go
- task_lifecycle.go
- task_queue.go
- task_queue_service.go
- task_queue_service_dependency.go
- task_start_estimation.go
- validate.go
- version.go
- version_activation.go
- version_db.go
- version_history.go
- version_modification.go
- waterfall.go
Directories
¶
| Path | Synopsis |
|---|---|
|
Package alertrecord contains complex alert types, like the first failure in a version.
|
Package alertrecord contains complex alert types, like the first failure in a version. |
|
Package annotations defines a data model for a feature that allows users to add metadata to tasks.
|
Package annotations defines a data model for a feature that allows users to add metadata to tasks. |
|
Package artifact models links to files created during task execution.
|
Package artifact models links to files created during task execution. |
|
Package build models a build, a set of tasks that run on a variant.
|
Package build models a build, a set of tasks that run on a variant. |
|
Package distro models an environment configuration for a host.
|
Package distro models an environment configuration for a host. |
|
Package event models events in the system, which trigger actions to occur.
|
Package event models events in the system, which trigger actions to occur. |
|
Package githubapp contains the data model for GitHub app installation information and GitHub app credentials.
|
Package githubapp contains the data model for GitHub app installation information and GitHub app credentials. |
|
Package host models a single host managed by Evergreen's application server.
|
Package host models a single host managed by Evergreen's application server. |
|
Log Chunk
|
Log Chunk |
|
Package manifest records the git hashes of modules for versions.
|
Package manifest records the git hashes of modules for versions. |
|
Package notification models notifications sent to users.
|
Package notification models notifications sent to users. |
|
Package patch models an intent to patch test code in a particular state.
|
Package patch models an intent to patch test code in a particular state. |
|
Package pod models a single pod (a group of containers), which can run container tasks.
|
Package pod models a single pod (a group of containers), which can run container tasks. |
|
definition
Package definition contains the data model for the pod definition cache.
|
Package definition contains the data model for the pod definition cache. |
|
dispatcher
Package dispatcher models a queue of tasks that are dispatched to a group of pods.
|
Package dispatcher models a queue of tasks that are dispatched to a group of pods. |
|
Package reliability models task reliability statistics.
|
Package reliability models task reliability statistics. |
|
Package task models the task, the simplest unit of execution for Evergreen.
|
Package task models the task, the simplest unit of execution for Evergreen. |
|
Package taskstats provides functions to generate and query pre-computed and task statistics.
|
Package taskstats provides functions to generate and query pre-computed and task statistics. |
|
Package testresult models test results, which are posted by tasks during execution.
|
Package testresult models test results, which are posted by tasks during execution. |
|
Package user represents users of Evergreen.
|
Package user represents users of Evergreen. |