Documentation ¶
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Config ¶
type Config struct { // SyncPeriodString compiles into SyncPeriod at load time. SyncPeriodString string `json:"sync_period,omitempty"` // SyncPeriod specifies how often Keeper will sync jobs with Github. Defaults to 1m. SyncPeriod time.Duration `json:"-"` // StatusUpdatePeriodString compiles into StatusUpdatePeriod at load time. StatusUpdatePeriodString string `json:"status_update_period,omitempty"` // StatusUpdatePeriod specifies how often Keeper will update Github status contexts. // Defaults to the value of SyncPeriod. StatusUpdatePeriod time.Duration `json:"-"` // Queries represents a list of GitHub search queries that collectively // specify the set of PRs that meet merge requirements. Queries Queries `json:"queries,omitempty"` // A key/value pair of an org/repo as the key and merge method to override // the default method of merge. Valid options are squash, rebase, and merge. MergeType map[string]PullRequestMergeType `json:"merge_method,omitempty"` // A key/value pair of an org/repo as the key and Go template to override // the default merge commit title and/or message. Template is passed the // PullRequest struct (prow/github/types.go#PullRequest) MergeTemplate map[string]MergeCommitTemplate `json:"merge_commit_template,omitempty"` // URL for keeper status contexts. // We can consider allowing this to be set separately for separate repos, or // allowing it to be a template. TargetURL string `json:"target_url,omitempty"` // PRStatusBaseURL is the base URL for the PR status page. // This is used to link to a merge requirements overview // in the keeper status context. PRStatusBaseURL string `json:"pr_status_base_url,omitempty"` // BlockerLabel is an optional label that is used to identify merge blocking // Github issues. // Leave this blank to disable this feature and save 1 API token per sync loop. BlockerLabel string `json:"blocker_label,omitempty"` // SquashLabel is an optional label that is used to identify PRs that should // always be squash merged. // Leave this blank to disable this feature. SquashLabel string `json:"squash_label,omitempty"` // RebaseLabel is an optional label that is used to identify PRs that should // always be rebased and merged. // Leave this blank to disable this feature. RebaseLabel string `json:"rebase_label,omitempty"` // MergeLabel is an optional label that is used to identify PRs that should // always be merged with all individual commits from the PR. // Leave this blank to disable this feature. MergeLabel string `json:"merge_label,omitempty"` // MaxGoroutines is the maximum number of goroutines spawned inside the // controller to handle org/repo:branch pools. Defaults to 20. Needs to be a // positive number. MaxGoroutines int `json:"max_goroutines,omitempty"` // KeeperContextPolicyOptions defines merge options for context. If not set it will infer // the required and optional contexts from the prow jobs configured and use the github // combined status; otherwise it may apply the branch protection setting or let user // define their own options in case branch protection is not used. ContextOptions ContextPolicyOptions `json:"context_options,omitempty"` // BatchSizeLimitMap is a key/value pair of an org or org/repo as the key and // integer batch size limit as the value. The empty string key can be used as // a global default. // Special values: // 0 => unlimited batch size // -1 => batch merging disabled :( BatchSizeLimitMap map[string]int `json:"batch_size_limit,omitempty"` }
Config is the config for the keeper pool.
func (*Config) BatchSizeLimit ¶
BatchSizeLimit return the batch size limit for the given repo
func (*Config) MergeCommitTemplate ¶
func (c *Config) MergeCommitTemplate(org, repo string) MergeCommitTemplate
MergeCommitTemplate returns a struct with Go template string(s) or nil
func (*Config) MergeMethod ¶
func (c *Config) MergeMethod(org, repo string) PullRequestMergeType
MergeMethod returns the merge method to use for a repo. The default of merge is returned when not overridden.
type ContextPolicy ¶
type ContextPolicy struct { // whether to consider unknown contexts optional (skip) or required. SkipUnknownContexts *bool `json:"skip-unknown-contexts,omitempty"` RequiredContexts []string `json:"required-contexts,omitempty"` RequiredIfPresentContexts []string `json:"required-if-present-contexts"` OptionalContexts []string `json:"optional-contexts,omitempty"` // Infer required and optional jobs from Branch Protection configuration FromBranchProtection *bool `json:"from-branch-protection,omitempty"` }
ContextPolicy configures options about how to handle various contexts.
func (*ContextPolicy) IsOptional ¶
func (cp *ContextPolicy) IsOptional(c string) bool
IsOptional checks whether a context can be ignored. Will return true if - context is registered as optional - required contexts are registered and the context provided is not required Will return false otherwise. Every context is required.
func (ContextPolicy) Merge ¶
func (cp ContextPolicy) Merge(other ContextPolicy) ContextPolicy
Merge merges one ContextPolicy with another one
func (*ContextPolicy) MissingRequiredContexts ¶
func (cp *ContextPolicy) MissingRequiredContexts(contexts []string) []string
MissingRequiredContexts discard the optional contexts and only look of extra required contexts that are not provided.
func (*ContextPolicy) Validate ¶
func (cp *ContextPolicy) Validate() error
Validate returns an error if any contexts are listed more than once in the config.
type ContextPolicyOptions ¶
type ContextPolicyOptions struct { ContextPolicy // Github Orgs Orgs map[string]OrgContextPolicy `json:"orgs,omitempty"` }
ContextPolicyOptions holds the default policy, and any org overrides.
func (ContextPolicyOptions) Parse ¶
func (options ContextPolicyOptions) Parse(org, repo, branch string) ContextPolicy
Parse returns the context policy for an org/repo/branch
type MergeCommitTemplate ¶
type MergeCommitTemplate struct { TitleTemplate string `json:"title,omitempty"` BodyTemplate string `json:"body,omitempty"` Title *template.Template `json:"-"` Body *template.Template `json:"-"` }
MergeCommitTemplate holds templates to use for merge commits.
type OrgContextPolicy ¶
type OrgContextPolicy struct { ContextPolicy Repos map[string]RepoContextPolicy `json:"repos,omitempty"` }
OrgContextPolicy overrides the policy for an org, and any repo overrides.
type PullRequestMergeType ¶
type PullRequestMergeType string
PullRequestMergeType inidicates the type of the pull request
const ( MergeMerge PullRequestMergeType = "merge" MergeRebase PullRequestMergeType = "rebase" MergeSquash PullRequestMergeType = "squash" )
Possible types of merges for the GitHub merge API
func (PullRequestMergeType) IsValid ¶
func (c PullRequestMergeType) IsValid() bool
IsValid checks that the merge type is valid
type Queries ¶
type Queries []Query
Queries is a Query slice.
func (Queries) OrgExceptionsAndRepos ¶
OrgExceptionsAndRepos determines which orgs and repos a set of queries cover. Output is returned as a mapping from 'included org'->'repos excluded in the org' and a set of included repos.
type Query ¶
type Query struct { Orgs []string `json:"orgs,omitempty"` Repos []string `json:"repos,omitempty"` ExcludedRepos []string `json:"excludedRepos,omitempty"` ExcludedBranches []string `json:"excludedBranches,omitempty"` IncludedBranches []string `json:"includedBranches,omitempty"` Labels []string `json:"labels,omitempty"` MissingLabels []string `json:"missingLabels,omitempty"` Milestone string `json:"milestone,omitempty"` ReviewApprovedRequired bool `json:"reviewApprovedRequired,omitempty"` }
Query is turned into a GitHub search query. See the docs for details: https://help.github.com/articles/searching-issues-and-pull-requests/
type QueryMap ¶
QueryMap is a struct mapping from "org/repo" -> KeeperQueries that apply to that org or repo. It is lazily populated, but threadsafe.
type RepoContextPolicy ¶
type RepoContextPolicy struct { ContextPolicy Branches map[string]ContextPolicy `json:"branches,omitempty"` }
RepoContextPolicy overrides the policy for repo, and any branch overrides.