Documentation
¶
Index ¶
- type Approve
- type Blockade
- type Blunderbuss
- type Cat
- type CherryPickUnapproved
- type ConfigMapSpec
- type ConfigUpdater
- type Configuration
- func (c *Configuration) EnabledReposForExternalPlugin(plugin string) (orgs, repos []string)
- func (c *Configuration) EnabledReposForPlugin(plugin string) (orgs, repos []string)
- func (c *Configuration) MDYAMLEnabled(org, repo string) bool
- func (c *Configuration) SkipCollaborators(org, repo string) bool
- func (c *Configuration) TriggerFor(org, repo string) *Trigger
- func (c *Configuration) Validate() error
- func (c *Configuration) ValidatePluginsArePresent(presentPlugins map[string]interface{}) error
- type ExternalPlugin
- type Golint
- type Heart
- type Label
- type Lgtm
- type MergeWarning
- type Milestone
- type Owners
- type RequireMatchingLabel
- type RequireSIG
- type SigMention
- type Size
- type Slack
- type Trigger
- type Welcome
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Approve ¶
type Approve struct {
// Repos is either of the form org/repos or just org.
Repos []string `json:"repos,omitempty"`
// IssueRequired indicates if an associated issue is required for approval in
// the specified repos.
IssueRequired bool `json:"issue_required,omitempty"`
// TODO(fejta): delete in June 2019
DeprecatedImplicitSelfApprove *bool `json:"implicit_self_approve,omitempty"`
// RequireSelfApproval requires PR authors to explicitly approve their PRs.
// Otherwise the plugin assumes the author of the PR approves the changes in the PR.
RequireSelfApproval *bool `json:"require_self_approval,omitempty"`
// LgtmActsAsApprove indicates that the lgtm command should be used to
// indicate approval
LgtmActsAsApprove bool `json:"lgtm_acts_as_approve,omitempty"`
// ReviewActsAsApprove should be replaced with its non-deprecated inverse: ignore_review_state.
// TODO(fejta): delete in June 2019
DeprecatedReviewActsAsApprove *bool `json:"review_acts_as_approve,omitempty"`
// IgnoreReviewState causes the approve plugin to ignore the GitHub review state. Otherwise:
// * an APPROVE github review is equivalent to leaving an "/approve" message.
// * A REQUEST_CHANGES github review is equivalent to leaving an /approve cancel" message.
IgnoreReviewState *bool `json:"ignore_review_state,omitempty"`
}
Approve specifies a configuration for a single approve.
The configuration for the approve plugin is defined as a list of these structures.
func (Approve) ConsiderReviewState ¶
ConsiderReviewState checks if the rewview state is active
func (Approve) HasSelfApproval ¶
HasSelfApproval checks if it has self-approval
type Blockade ¶
type Blockade struct {
// Repos are either of the form org/repos or just org.
Repos []string `json:"repos,omitempty"`
// BlockRegexps are regular expressions matching the file paths to block.
BlockRegexps []string `json:"blockregexps,omitempty"`
// ExceptionRegexps are regular expressions matching the file paths that are exceptions to the BlockRegexps.
ExceptionRegexps []string `json:"exceptionregexps,omitempty"`
// Explanation is a string that will be included in the comment left when blocking a PR. This should
// be an explanation of why the paths specified are blockaded.
Explanation string `json:"explanation,omitempty"`
}
Blockade specifies a configuration for a single blockade.
The configuration for the blockade plugin is defined as a list of these structures.
type Blunderbuss ¶
type Blunderbuss struct {
// ReviewerCount is the minimum number of reviewers to request
// reviews from. Defaults to requesting reviews from 2 reviewers
// if FileWeightCount is not set.
ReviewerCount *int `json:"request_count,omitempty"`
// MaxReviewerCount is the maximum number of reviewers to request
// reviews from. Defaults to 0 meaning no limit.
MaxReviewerCount int `json:"max_request_count,omitempty"`
// FileWeightCount is the maximum number of reviewers to request
// reviews from. Selects reviewers based on file weighting.
// This and request_count are mutually exclusive options.
FileWeightCount *int `json:"file_weight_count,omitempty"`
// ExcludeApprovers controls whether approvers are considered to be
// reviewers. By default, approvers are considered as reviewers if
// insufficient reviewers are available. If ExcludeApprovers is true,
// approvers will never be considered as reviewers.
ExcludeApprovers bool `json:"exclude_approvers,omitempty"`
// UseStatusAvailability controls whether blunderbuss will consider GitHub's
// status availability when requesting reviews for users. This will use at one
// additional token per successful reviewer (and potentially more depending on
// how many busy reviewers it had to pass over).
UseStatusAvailability bool `json:"use_status_availability,omitempty"`
}
Blunderbuss defines configuration for the blunderbuss plugin.
type Cat ¶
type Cat struct {
// Path to file containing an api key for thecatapi.com
KeyPath string `json:"key_path,omitempty"`
}
Cat contains the configuration for the cat plugin.
type CherryPickUnapproved ¶
type CherryPickUnapproved struct {
// BranchRegexp is the regular expression for branch names such that
// the plugin treats only PRs against these branch names as cherrypick PRs.
// Compiles into BranchRe during config load.
BranchRegexp string `json:"branchregexp,omitempty"`
BranchRe *regexp.Regexp `json:"-"`
// Comment is the comment added by the plugin while adding the
// `do-not-merge/cherry-pick-not-approved` label.
Comment string `json:"comment,omitempty"`
}
CherryPickUnapproved is the config for the cherrypick-unapproved plugin.
type ConfigMapSpec ¶
type ConfigMapSpec struct {
// Name of ConfigMap
Name string `json:"name"`
// Key is the key in the ConfigMap to update with the file contents.
// If no explicit key is given, the basename of the file will be used.
Key string `json:"key,omitempty"`
// Namespace in which the configMap needs to be deployed. If no namespace is specified
// it will be deployed to the LighthouseJobNamespace.
Namespace string `json:"namespace,omitempty"`
// Namespaces in which the configMap needs to be deployed, in addition to the above
// namespace provided, or the default if it is not set.
AdditionalNamespaces []string `json:"additional_namespaces,omitempty"`
// Namespaces is the fully resolved list of Namespaces to deploy the ConfigMap in
Namespaces []string `json:"-"`
}
ConfigMapSpec contains configuration options for the configMap being updated by the config-updater plugin.
type ConfigUpdater ¶
type ConfigUpdater struct {
// A map of filename => ConfigMapSpec.
// Whenever a commit changes filename, prow will update the corresponding configmap.
// map[string]ConfigMapSpec{ "/my/path.yaml": {Name: "foo", Namespace: "otherNamespace" }}
// will result in replacing the foo configmap whenever path.yaml changes
Maps map[string]ConfigMapSpec `json:"maps,omitempty"`
// The location of the prow configuration file inside the repository
// where the config-updater plugin is enabled. This needs to be relative
// to the root of the repository, eg. "prow/config.yaml" will match
// github.com/kubernetes/test-infra/prow/config.yaml assuming the config-updater
// plugin is enabled for kubernetes/test-infra. Defaults to "prow/config.yaml".
ConfigFile string `json:"config_file,omitempty"`
// The location of the prow plugin configuration file inside the repository
// where the config-updater plugin is enabled. This needs to be relative
// to the root of the repository, eg. "prow/plugins.yaml" will match
// github.com/kubernetes/test-infra/prow/plugins.yaml assuming the config-updater
// plugin is enabled for kubernetes/test-infra. Defaults to "prow/plugins.yaml".
PluginFile string `json:"plugin_file,omitempty"`
}
ConfigUpdater contains the configuration for the config-updater plugin.
func (*ConfigUpdater) SetDefaults ¶
func (c *ConfigUpdater) SetDefaults()
SetDefaults sets default options for config updating
type Configuration ¶
type Configuration struct {
// Plugins is a map of repositories (eg "k/k") to lists of
// plugin names.
// TODO: Link to the list of supported plugins.
// https://github.com/kubernetes/test-infra/issues/3476
Plugins map[string][]string `json:"plugins,omitempty"`
// ExternalPlugins is a map of repositories (eg "k/k") to lists of
// external plugins.
ExternalPlugins map[string][]ExternalPlugin `json:"external_plugins,omitempty"`
// Owners contains configuration related to handling OWNERS files.
Owners Owners `json:"owners,omitempty"`
// Built-in plugins specific configuration.
Approve []Approve `json:"approve,omitempty"`
UseDeprecatedSelfApprove bool `json:"use_deprecated_2018_implicit_self_approve_default_migrate_before_july_2019,omitempty"`
UseDeprecatedReviewApprove bool `json:"use_deprecated_2018_review_acts_as_approve_default_migrate_before_july_2019,omitempty"`
Blockades []Blockade `json:"blockades,omitempty"`
Blunderbuss Blunderbuss `json:"blunderbuss,omitempty"`
Cat Cat `json:"cat,omitempty"`
CherryPickUnapproved CherryPickUnapproved `json:"cherry_pick_unapproved,omitempty"`
ConfigUpdater ConfigUpdater `json:"config_updater,omitempty"`
Golint *Golint `json:"golint,omitempty"`
Heart Heart `json:"heart,omitempty"`
Label Label `json:"label,omitempty"`
Lgtm []Lgtm `json:"lgtm,omitempty"`
RepoMilestone map[string]Milestone `json:"repo_milestone,omitempty"`
RequireMatchingLabel []RequireMatchingLabel `json:"require_matching_label,omitempty"`
RequireSIG RequireSIG `json:"requiresig,omitempty"`
Slack Slack `json:"slack,omitempty"`
SigMention SigMention `json:"sigmention,omitempty"`
Size Size `json:"size,omitempty"`
Triggers []Trigger `json:"triggers,omitempty"`
Welcome []Welcome `json:"welcome,omitempty"`
}
Configuration is the top-level serialization target for plugin Configuration.
func (*Configuration) EnabledReposForExternalPlugin ¶
func (c *Configuration) EnabledReposForExternalPlugin(plugin string) (orgs, repos []string)
EnabledReposForExternalPlugin returns the orgs and repos that have enabled the passed external plugin.
func (*Configuration) EnabledReposForPlugin ¶
func (c *Configuration) EnabledReposForPlugin(plugin string) (orgs, repos []string)
EnabledReposForPlugin returns the orgs and repos that have enabled the passed plugin.
func (*Configuration) MDYAMLEnabled ¶
func (c *Configuration) MDYAMLEnabled(org, repo string) bool
MDYAMLEnabled returns a boolean denoting if the passed repo supports YAML OWNERS config headers at the top of markdown (*.md) files. These function like OWNERS files but only apply to the file itself.
func (*Configuration) SkipCollaborators ¶
func (c *Configuration) SkipCollaborators(org, repo string) bool
SkipCollaborators returns a boolean denoting if collaborator cross-checks are enabled for the passed repo. If it's true, approve and lgtm plugins rely solely on OWNERS files.
func (*Configuration) TriggerFor ¶
func (c *Configuration) TriggerFor(org, repo string) *Trigger
TriggerFor finds the Trigger for a repo, if one exists a trigger can be listed for the repo itself or for the owning organization
func (*Configuration) Validate ¶
func (c *Configuration) Validate() error
Validate validates the plugin configuration
func (*Configuration) ValidatePluginsArePresent ¶
func (c *Configuration) ValidatePluginsArePresent(presentPlugins map[string]interface{}) error
ValidatePluginsArePresent takes a map with plugin names as keys and errors or logs for each configured plugin that can't be found.
type ExternalPlugin ¶
type ExternalPlugin struct {
// Name of the plugin.
Name string `json:"name"`
// Endpoint is the location of the external plugin. Defaults to
// the name of the plugin, ie. "http://{{name}}".
Endpoint string `json:"endpoint,omitempty"`
// Events are the events that need to be demuxed by the hook
// server to the external plugin. If no events are specified,
// everything is sent.
Events []string `json:"events,omitempty"`
}
ExternalPlugin holds configuration for registering an external plugin in prow.
type Golint ¶
type Golint struct {
// MinimumConfidence is the smallest permissible confidence
// in (0,1] over which problems will be printed. Defaults to
// 0.8, as does the `go lint` tool.
MinimumConfidence *float64 `json:"minimum_confidence,omitempty"`
}
Golint holds configuration for the golint plugin
type Heart ¶
type Heart struct {
// Adorees is a list of GitHub logins for members
// for whom we will add emojis to comments
Adorees []string `json:"adorees,omitempty"`
// CommentRegexp is the regular expression for comments
// made by adorees that the plugin adds emojis to.
// If not specified, the plugin will not add emojis to
// any comments.
// Compiles into CommentRe during config load.
CommentRegexp string `json:"commentregexp,omitempty"`
CommentRe *regexp.Regexp `json:"-"`
}
Heart contains the configuration for the heart plugin.
type Label ¶
type Label struct {
// AdditionalLabels is a set of additional labels enabled for use
// on top of the existing "kind/*", "priority/*", and "area/*" labels.
AdditionalLabels []string `json:"additional_labels"`
}
Label contains the configuration for the label plugin.
type Lgtm ¶
type Lgtm struct {
// Repos is either of the form org/repos or just org.
Repos []string `json:"repos,omitempty"`
// ReviewActsAsLgtm indicates that a Github review of "approve" or "request changes"
// acts as adding or removing the lgtm label
ReviewActsAsLgtm bool `json:"review_acts_as_lgtm,omitempty"`
// StoreTreeHash indicates if tree_hash should be stored inside a comment to detect
// squashed commits before removing lgtm labels
StoreTreeHash bool `json:"store_tree_hash,omitempty"`
// WARNING: This disables the security mechanism that prevents a malicious member (or
// compromised GitHub account) from merging arbitrary code. Use with caution.
//
// StickyLgtmTeam specifies the Github team whose members are trusted with sticky LGTM,
// which eliminates the need to re-lgtm minor fixes/updates.
StickyLgtmTeam string `json:"trusted_team_for_sticky_lgtm,omitempty"`
}
Lgtm specifies a configuration for a single lgtm. The configuration for the lgtm plugin is defined as a list of these structures.
type MergeWarning ¶
type MergeWarning struct {
// Repos is either of the form org/repos or just org.
Repos []string `json:"repos,omitempty"`
// List of channels on which a event is published.
Channels []string `json:"channels,omitempty"`
// A slack event is published if the user is not part of the WhiteList.
WhiteList []string `json:"whitelist,omitempty"`
// A slack event is published if the user is not on the branch whitelist
BranchWhiteList map[string][]string `json:"branch_whitelist,omitempty"`
}
MergeWarning is a config for the slackevents plugin's manual merge warnings. If a PR is pushed to any of the repos listed in the config then send messages to the all the slack channels listed if pusher is NOT in the whitelist.
type Milestone ¶
type Milestone struct {
// ID of the github team for the milestone maintainers (used for setting status labels)
// You can curl the following endpoint in order to determine the gitprovider.ID of your team
// responsible for maintaining the milestones:
// curl -H "Authorization: token <token>" https://api.github.com/orgs/<org-name>/teams
MaintainersID int `json:"maintainers_id,omitempty"`
MaintainersTeam string `json:"maintainers_team,omitempty"`
MaintainersFriendlyName string `json:"maintainers_friendly_name,omitempty"`
}
Milestone contains the configuration options for the milestone and milestonestatus plugins.
type Owners ¶
type Owners struct {
// MDYAMLRepos is a list of org and org/repo strings specifying the repos that support YAML
// OWNERS config headers at the top of markdown (*.md) files. These headers function just like
// the config in an OWNERS file, but only apply to the file itself instead of the entire
// directory and all sub-directories.
// The yaml header must be at the start of the file and be bracketed with "---" like so:
/*
---
approvers:
- mikedanese
- thockin
---
*/
MDYAMLRepos []string `json:"mdyamlrepos,omitempty"`
// SkipCollaborators disables collaborator cross-checks and forces both
// the approve and lgtm plugins to use solely OWNERS files for access
// control in the provided repos.
SkipCollaborators []string `json:"skip_collaborators,omitempty"`
// LabelsBlackList holds a list of labels that should not be present in any
// OWNERS file, preventing their automatic addition by the owners-label plugin.
// This check is performed by the verify-owners plugin.
LabelsBlackList []string `json:"labels_blacklist,omitempty"`
}
Owners contains configuration related to handling OWNERS files.
type RequireMatchingLabel ¶
type RequireMatchingLabel struct {
// Org is the GitHub organization that this config applies to.
Org string `json:"org,omitempty"`
// Repo is the GitHub repository within Org that this config applies to.
// This fields may be omitted to apply this config across all repos in Org.
Repo string `json:"repo,omitempty"`
// Branch is the branch ref of PRs that this config applies to.
// This field is only valid if `prs: true` and may be omitted to apply this
// config across all branches in the repo or org.
Branch string `json:"branch,omitempty"`
// PRs is a bool indicating if this config applies to PRs.
PRs bool `json:"prs,omitempty"`
// Issues is a bool indicating if this config applies to issues.
Issues bool `json:"issues,omitempty"`
// Regexp is the string specifying the regular expression used to look for
// matching labels.
Regexp string `json:"regexp,omitempty"`
// Re is the compiled version of Regexp. It should not be specified in config.
Re *regexp.Regexp `json:"-"`
// MissingLabel is the label to apply if an issue does not have any label
// matching the Regexp.
MissingLabel string `json:"missing_label,omitempty"`
// MissingComment is the comment to post when we add the MissingLabel to an
// issue. This is typically used to explain why MissingLabel was added and
// how to move forward.
// This field is optional. If unspecified, no comment is created when labeling.
MissingComment string `json:"missing_comment,omitempty"`
// GracePeriod is the amount of time to wait before processing newly opened
// or reopened issues and PRs. This delay allows other automation to apply
// labels before we look for matching labels.
// Defaults to '5s'.
GracePeriod string `json:"grace_period,omitempty"`
GracePeriodDuration time.Duration `json:"-"`
}
RequireMatchingLabel is the config for the require-matching-label plugin.
func (RequireMatchingLabel) Describe ¶
func (r RequireMatchingLabel) Describe() string
Describe generates a human readable description of the behavior that this configuration specifies.
type RequireSIG ¶
type RequireSIG struct {
// GroupListURL is the URL where a list of the available SIGs can be found.
GroupListURL string `json:"group_list_url,omitempty"`
}
RequireSIG specifies configuration for the require-sig plugin.
type SigMention ¶
type SigMention struct {
// Regexp parses comments and should return matches to team mentions.
// These mentions enable labeling issues or PRs with sig/team labels.
// Furthermore, teams with the following suffixes will be mapped to
// kind/* labels:
//
// * @org/team-bugs --maps to--> kind/bug
// * @org/team-feature-requests --maps to--> kind/feature
// * @org/team-api-reviews --maps to--> kind/api-change
// * @org/team-proposals --maps to--> kind/design
//
// Note that you need to make sure your regexp covers the above
// mentions if you want to use the extra labeling. Defaults to:
// (?m)@kubernetes/sig-([\w-]*)-(misc|test-failures|bugs|feature-requests|proposals|pr-reviews|api-reviews)
//
// Compiles into Re during config load.
Regexp string `json:"regexp,omitempty"`
Re *regexp.Regexp `json:"-"`
}
SigMention specifies configuration for the sigmention plugin.
type Size ¶
type Size struct {
S int `json:"s"`
M int `json:"m"`
L int `json:"l"`
Xl int `json:"xl"`
Xxl int `json:"xxl"`
}
Size specifies configuration for the size plugin, defining lower bounds (in # lines changed) for each size label. XS is assumed to be zero.
type Slack ¶
type Slack struct {
MentionChannels []string `json:"mentionchannels,omitempty"`
MergeWarnings []MergeWarning `json:"mergewarnings,omitempty"`
}
Slack contains the configuration for the slack plugin.
type Trigger ¶
type Trigger struct {
// Repos is either of the form org/repos or just org.
Repos []string `json:"repos,omitempty"`
// TrustedOrg is the org whose members' PRs will be automatically built
// for PRs to the above repos. The default is the PR's org.
TrustedOrg string `json:"trusted_org,omitempty"`
// JoinOrgURL is a link that redirects users to a location where they
// should be able to read more about joining the organization in order
// to become trusted members. Defaults to the Github link of TrustedOrg.
JoinOrgURL string `json:"join_org_url,omitempty"`
// OnlyOrgMembers requires PRs and/or /ok-to-test comments to come from org members.
// By default, trigger also include repo collaborators.
OnlyOrgMembers bool `json:"only_org_members,omitempty"`
// IgnoreOkToTest makes trigger ignore /ok-to-test comments.
// This is a security mitigation to only allow testing from trusted users.
IgnoreOkToTest bool `json:"ignore_ok_to_test,omitempty"`
// ElideSkippedContexts makes trigger not post "Skipped" contexts for jobs
// that could run but do not run.
ElideSkippedContexts bool `json:"elide_skipped_contexts,omitempty"`
}
Trigger specifies a configuration for a single trigger.
The configuration for the trigger plugin is defined as a list of these structures.
type Welcome ¶
type Welcome struct {
// Repos is either of the form org/repos or just org.
Repos []string `json:"repos,omitempty"`
// MessageTemplate is the welcome message template to post on new-contributor PRs
// For the info struct see prow/plugins/welcome/welcome.go's PRInfo
MessageTemplate string `json:"message_template,omitempty"`
}
Welcome is config for the welcome plugin.