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.