test-infra: k8s.io/test-infra/prow/plugins Index | Files | Directories

package plugins

import "k8s.io/test-infra/prow/plugins"

Index

Package Files

config.go plugins.go respond.go

Constants

const AboutThisBot = AboutThisBotWithoutCommands + " " + AboutThisBotCommands

AboutThisBot contains the text of both AboutThisBotWithoutCommands and AboutThisBotCommands.

const AboutThisBotCommands = "I understand the commands that are listed [here](https://go.k8s.io/bot-commands)."

AboutThisBotCommands contains the message that links to the commands the bot understand.

const AboutThisBotWithoutCommands = "" /* 348 byte string literal not displayed */

AboutThisBotWithoutCommands contains the message that explains how to interact with the bot.

const BugzillaOptionsWildcard = `*`

Variables

var (
    CommentMap = genyaml.NewCommentMap("prow/plugins/config.go")
)

func EventsForPlugin Uses

func EventsForPlugin(name string) []string

EventsForPlugin returns the registered events for the passed plugin.

func FormatICResponse Uses

func FormatICResponse(ic github.IssueComment, s string) string

FormatICResponse nicely formats a response to an issue comment.

func FormatResponse Uses

func FormatResponse(to, message, reason string) string

FormatResponse nicely formats a response to a generic reason.

func FormatResponseRaw Uses

func FormatResponseRaw(body, bodyURL, login, reply string) string

FormatResponseRaw nicely formats a response for one does not have an issue comment

func FormatSimpleResponse Uses

func FormatSimpleResponse(to, message string) string

FormatSimpleResponse formats a response that does not warrant additional explanation in the details section.

func HelpProviders Uses

func HelpProviders() map[string]HelpProvider

HelpProviders returns the map of registered plugins with their associated HelpProvider.

func RegisterGenericCommentHandler Uses

func RegisterGenericCommentHandler(name string, fn GenericCommentHandler, help HelpProvider)

RegisterGenericCommentHandler registers a plugin's github.GenericCommentEvent handler.

func RegisterIssueCommentHandler Uses

func RegisterIssueCommentHandler(name string, fn IssueCommentHandler, help HelpProvider)

RegisterIssueCommentHandler registers a plugin's github.IssueCommentEvent handler.

func RegisterIssueHandler Uses

func RegisterIssueHandler(name string, fn IssueHandler, help HelpProvider)

RegisterIssueHandler registers a plugin's github.IssueEvent handler.

func RegisterPullRequestHandler Uses

func RegisterPullRequestHandler(name string, fn PullRequestHandler, help HelpProvider)

RegisterPullRequestHandler registers a plugin's github.PullRequestEvent handler.

func RegisterPushEventHandler Uses

func RegisterPushEventHandler(name string, fn PushEventHandler, help HelpProvider)

RegisterPushEventHandler registers a plugin's github.PushEvent handler.

func RegisterReviewCommentEventHandler Uses

func RegisterReviewCommentEventHandler(name string, fn ReviewCommentEventHandler, help HelpProvider)

RegisterReviewCommentEventHandler registers a plugin's github.ReviewCommentEvent handler.

func RegisterReviewEventHandler Uses

func RegisterReviewEventHandler(name string, fn ReviewEventHandler, help HelpProvider)

RegisterReviewEventHandler registers a plugin's github.ReviewEvent handler.

func RegisterStatusEventHandler Uses

func RegisterStatusEventHandler(name string, fn StatusEventHandler, help HelpProvider)

RegisterStatusEventHandler registers a plugin's github.StatusEvent handler.

type Agent Uses

type Agent struct {
    GitHubClient     github.Client
    ProwJobClient    prowv1.ProwJobInterface
    KubernetesClient kubernetes.Interface
    GitClient        *git.Client
    SlackClient      *slack.Client
    BugzillaClient   bugzilla.Client

    OwnersClient *repoowners.Client

    // Metrics exposes metrics that can be updated by plugins
    Metrics *Metrics

    // Config provides information about the jobs
    // that we know how to run for repos.
    Config *config.Config
    // PluginConfig provides plugin-specific options
    PluginConfig *Configuration

    Logger *logrus.Entry
    // contains filtered or unexported fields
}

Agent may be used concurrently, so each entry must be thread-safe.

func NewAgent Uses

func NewAgent(configAgent *config.Agent, pluginConfigAgent *ConfigAgent, clientAgent *ClientAgent, metrics *Metrics, logger *logrus.Entry) Agent

NewAgent bootstraps a new config.Agent struct from the passed dependencies.

func (*Agent) CommentPruner Uses

func (a *Agent) CommentPruner() (*commentpruner.EventClient, error)

CommentPruner will return the commentpruner.EventClient attached to the agent or an error if one is not attached.

func (*Agent) InitializeCommentPruner Uses

func (a *Agent) InitializeCommentPruner(org, repo string, pr int)

InitializeCommentPruner attaches a commentpruner.EventClient to the agent to handle pruning comments.

type Approve Uses

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 Uses

func (a Approve) ConsiderReviewState() bool

func (Approve) HasSelfApproval Uses

func (a Approve) HasSelfApproval() bool

type Blockade Uses

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 Uses

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 BranchToMilestone Uses

type BranchToMilestone map[string]string

BranchToMilestone is a map of the branch name to the configured milestone for that branch. This is used by the milestoneapplier plugin.

type Bugzilla Uses

type Bugzilla struct {
    // Default settings mapped by branch in any repo in any org.
    // The `*` wildcard will apply to all branches.
    Default map[string]BugzillaBranchOptions `json:"default"`
    // Options for specific orgs. The `*` wildcard will apply to all orgs.
    Orgs map[string]BugzillaOrgOptions `json:"orgs"`
}

Bugzilla holds options for checking Bugzilla bugs in a defaulting hierarchy.

func (*Bugzilla) OptionsForBranch Uses

func (b *Bugzilla) OptionsForBranch(org, repo, branch string) BugzillaBranchOptions

OptionsForBranch determines the criteria for a valid Bugzilla bug on a branch of a repo by defaulting in a cascading way, in the following order (later entries override earlier ones), always searching for the wildcard as well as the branch name: global, then org, repo, and finally branch-specific configuration.

func (*Bugzilla) OptionsForRepo Uses

func (b *Bugzilla) OptionsForRepo(org, repo string) map[string]BugzillaBranchOptions

OptionsForRepo determines the criteria for a valid Bugzilla bug on branches of a repo by defaulting in a cascading way, in the following order (later entries override earlier ones), always searching for the wildcard as well as the branch name: global, then org, repo, and finally branch-specific configuration.

type BugzillaBranchOptions Uses

type BugzillaBranchOptions struct {
    // ValidateByDefault determines whether a validation check is run for all pull
    // requests by default
    ValidateByDefault *bool `json:"validate_by_default,omitempty"`

    // IsOpen determines whether a bug needs to be open to be valid
    IsOpen *bool `json:"is_open,omitempty"`
    // TargetRelease determines which release a bug needs to target to be valid
    TargetRelease *string `json:"target_release,omitempty"`
    // Statuses determine which statuses a bug may have to be valid
    Statuses *[]string `json:"statuses,omitempty"`
    // ValidStates determine states in which the bug may be to be valid
    ValidStates *[]BugzillaBugState `json:"valid_states,omitempty"`

    // DependentBugStatuses determine which statuses a bug's dependent bugs may have
    // to deem the child bug valid
    DependentBugStatuses *[]string `json:"dependent_bug_statuses,omitempty"`
    // DependentBugStates determine states in which a bug's dependents bugs may be
    // to deem the child bug valid
    DependentBugStates *[]BugzillaBugState `json:"dependent_bug_states,omitempty"`
    // DependentBugTargetRelease determines which release a bug's dependent bugs need to target to be valid
    DependentBugTargetRelease *string `json:"dependent_bug_target_release,omitempty"`

    // StatusAfterValidation is the status which the bug will be moved to after being
    // deemed valid and linked to a PR. Will implicitly be considered a part of `statuses`
    // if others are set.
    StatusAfterValidation *string `json:"status_after_validation,omitempty"`
    // StateAfterValidation is the state to which the bug will be moved after being
    // deemed valid and linked to a PR. Will implicitly be considered a part of `ValidStates`
    // if others are set.
    StateAfterValidation *BugzillaBugState `json:"state_after_validation"`
    // AddExternalLink determines whether the pull request will be added to the Bugzilla
    // bug using the ExternalBug tracker API after being validated
    AddExternalLink *bool `json:"add_external_link,omitempty"`
    // StatusAfterMerge is the status which the bug will be moved to after all pull requests
    // in the external bug tracker have been merged.
    StatusAfterMerge *string `json:"status_after_merge,omitempty"`
    // StateAfterMerge is the state to which the bug will be moved after all pull requests
    // in the external bug tracker have been merged.
    StateAfterMerge *BugzillaBugState `json:"state_after_merge,omitempty"`
}

BugzillaBranchOptions describes how to check if a Bugzilla bug is valid or not.

Note on `Status` vs `State` fields: `State` fields implement a superset of functionality provided by the `Status` fields and are meant to eventually supersede `Status` fields. Implementations using these structures should *only* use `Status` fields or only `States` fields, never both. The implementation mirrors `Status` fields into the matching `State` fields in the `ResolveBugzillaOptions` method to handle existing config, and is also able to sufficiently resolve the presence of both types of fields.

func OptionsForItem Uses

func OptionsForItem(item string, config map[string]BugzillaBranchOptions) BugzillaBranchOptions

OptionsForItem resolves a set of options for an item, honoring the `*` wildcard and doing defaulting if it is present with the item itself.

func ResolveBugzillaOptions Uses

func ResolveBugzillaOptions(parent, child BugzillaBranchOptions) BugzillaBranchOptions

ResolveBugzillaOptions implements defaulting for a parent/child configuration, preferring child fields where set. This method also reflects all "Status" fields into matching `State` fields.

type BugzillaBugState Uses

type BugzillaBugState struct {
    Status     string `json:"status,omitempty"`
    Resolution string `json:"resolution,omitempty"`
}

BugzillaBugState describes bug states in the Bugzilla plugin config, used for example to specify states that bugs are supposed to be in or to which they should be made after some action.

func (*BugzillaBugState) AsBugUpdate Uses

func (s *BugzillaBugState) AsBugUpdate(bug *bugzilla.Bug) *bugzilla.BugUpdate

AsBugUpdate returns a BugUpdate struct for updating a given to bug to the desired state. The returned struct will have only those fields set where the state differs from the parameter bug. If the bug state matches the desired state, returns nil. If the parameter bug is empty or a nil pointer, the returned BugUpdate will have all fields set that are set in the state.

func (*BugzillaBugState) Matches Uses

func (s *BugzillaBugState) Matches(bug *bugzilla.Bug) bool

Matches returns whether a given bug matches the state

func (*BugzillaBugState) String Uses

func (s *BugzillaBugState) String() string

String converts a Bugzilla state into human-readable description

type BugzillaBugStateSet Uses

type BugzillaBugStateSet map[BugzillaBugState]interface{}

func NewBugzillaBugStateSet Uses

func NewBugzillaBugStateSet(states []BugzillaBugState) BugzillaBugStateSet

func (BugzillaBugStateSet) Has Uses

func (s BugzillaBugStateSet) Has(state BugzillaBugState) bool

func (BugzillaBugStateSet) Insert Uses

func (s BugzillaBugStateSet) Insert(states ...BugzillaBugState) BugzillaBugStateSet

type BugzillaOrgOptions Uses

type BugzillaOrgOptions struct {
    // Default settings mapped by branch in any repo in this org.
    // The `*` wildcard will apply to all branches.
    Default map[string]BugzillaBranchOptions `json:"default"`
    // Options for specific repos. The `*` wildcard will apply to all repos.
    Repos map[string]BugzillaRepoOptions `json:"repos"`
}

BugzillaOrgOptions holds options for checking Bugzilla bugs for an org.

type BugzillaRepoOptions Uses

type BugzillaRepoOptions struct {
    // Options for specific branches in this repo.
    // The `*` wildcard will apply to all branches.
    Branches map[string]BugzillaBranchOptions `json:"branches"`
}

BugzillaRepoOptions holds options for checking Bugzilla bugs for a repo.

type Cat Uses

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 Uses

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 ClientAgent Uses

type ClientAgent struct {
    GitHubClient     github.Client
    ProwJobClient    prowv1.ProwJobInterface
    KubernetesClient kubernetes.Interface
    GitClient        *git.Client
    SlackClient      *slack.Client
    OwnersClient     *repoowners.Client
    BugzillaClient   bugzilla.Client
}

ClientAgent contains the various clients that are attached to the Agent.

type ConfigAgent Uses

type ConfigAgent struct {
    // contains filtered or unexported fields
}

ConfigAgent contains the agent mutex and the Agent configuration.

func NewFakeConfigAgent Uses

func NewFakeConfigAgent() ConfigAgent

func (*ConfigAgent) Config Uses

func (pa *ConfigAgent) Config() *Configuration

Config returns the agent current Configuration.

func (*ConfigAgent) GenericCommentHandlers Uses

func (pa *ConfigAgent) GenericCommentHandlers(owner, repo string) map[string]GenericCommentHandler

GenericCommentHandlers returns a map of plugin names to handlers for the repo.

func (*ConfigAgent) IssueCommentHandlers Uses

func (pa *ConfigAgent) IssueCommentHandlers(owner, repo string) map[string]IssueCommentHandler

IssueCommentHandlers returns a map of plugin names to handlers for the repo.

func (*ConfigAgent) IssueHandlers Uses

func (pa *ConfigAgent) IssueHandlers(owner, repo string) map[string]IssueHandler

IssueHandlers returns a map of plugin names to handlers for the repo.

func (*ConfigAgent) Load Uses

func (pa *ConfigAgent) Load(path string, checkUnknownPlugins bool) error

Load attempts to load config from the path. It returns an error if either the file can't be read or the configuration is invalid. If checkUnknownPlugins is true, unrecognized plugin names will make config loading fail.

func (*ConfigAgent) PullRequestHandlers Uses

func (pa *ConfigAgent) PullRequestHandlers(owner, repo string) map[string]PullRequestHandler

PullRequestHandlers returns a map of plugin names to handlers for the repo.

func (*ConfigAgent) PushEventHandlers Uses

func (pa *ConfigAgent) PushEventHandlers(owner, repo string) map[string]PushEventHandler

PushEventHandlers returns a map of plugin names to handlers for the repo.

func (*ConfigAgent) ReviewCommentEventHandlers Uses

func (pa *ConfigAgent) ReviewCommentEventHandlers(owner, repo string) map[string]ReviewCommentEventHandler

ReviewCommentEventHandlers returns a map of plugin names to handlers for the repo.

func (*ConfigAgent) ReviewEventHandlers Uses

func (pa *ConfigAgent) ReviewEventHandlers(owner, repo string) map[string]ReviewEventHandler

ReviewEventHandlers returns a map of plugin names to handlers for the repo.

func (*ConfigAgent) Set Uses

func (pa *ConfigAgent) Set(pc *Configuration)

Set attempts to set the plugins that are enabled on repos. Plugins are listed as a map from repositories to the list of plugins that are enabled on them. Specifying simply an org name will also work, and will enable the plugin on all repos in the org.

func (*ConfigAgent) Start Uses

func (pa *ConfigAgent) Start(path string, checkUnknownPlugins bool) error

Start starts polling path for plugin config. If the first attempt fails, then start returns the error. Future errors will halt updates but not stop. If checkUnknownPlugins is true, unrecognized plugin names will make config loading fail.

func (*ConfigAgent) StatusEventHandlers Uses

func (pa *ConfigAgent) StatusEventHandlers(owner, repo string) map[string]StatusEventHandler

StatusEventHandlers returns a map of plugin names to handlers for the repo.

type ConfigMapSpec Uses

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 ProwJobNamespace.
    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"`
    // GZIP toggles whether the key's data should be GZIP'd before being stored
    // If set to false and the global GZIP option is enabled, this file will
    // will not be GZIP'd.
    GZIP *bool `json:"gzip,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 Uses

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. "config/prow/config.yaml" will match
    // github.com/kubernetes/test-infra/config/prow/config.yaml assuming the config-updater
    // plugin is enabled for kubernetes/test-infra. Defaults to "config/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. "config/prow/plugins.yaml" will match
    // github.com/kubernetes/test-infra/config/prow/plugins.yaml assuming the config-updater
    // plugin is enabled for kubernetes/test-infra. Defaults to "config/prow/plugins.yaml".
    PluginFile string `json:"plugin_file,omitempty"`
    // If GZIP is true then files will be gzipped before insertion into
    // their corresponding configmap
    GZIP bool `json:"gzip"`
}

ConfigUpdater contains the configuration for the config-updater plugin.

func (*ConfigUpdater) SetDefaults Uses

func (c *ConfigUpdater) SetDefaults()

SetDefaults sets default options for config updating

type Configuration Uses

type Configuration struct {
    // Plugins is a map of repositories (eg "k/k") to lists of
    // plugin names.
    // You can find a comprehensive list of the default avaulable plugins here
    // https://github.com/kubernetes/test-infra/tree/master/prow/plugins
    // note that you're also able to add external plugins.
    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"`

    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"`
    Bugzilla                   Bugzilla                     `json:"bugzilla,omitempty"`
    Cat                        Cat                          `json:"cat,omitempty"`
    CherryPickUnapproved       CherryPickUnapproved         `json:"cherry_pick_unapproved,omitempty"`
    ConfigUpdater              ConfigUpdater                `json:"config_updater,omitempty"`
    Dco                        map[string]*Dco              `json:"dco,omitempty"`
    Golint                     Golint                       `json:"golint,omitempty"`
    Goose                      Goose                        `json:"goose,omitempty"`
    Heart                      Heart                        `json:"heart,omitempty"`
    Label                      Label                        `json:"label,omitempty"`
    Lgtm                       []Lgtm                       `json:"lgtm,omitempty"`
    MilestoneApplier           map[string]BranchToMilestone `json:"milestone_applier,omitempty"`
    RepoMilestone              map[string]Milestone         `json:"repo_milestone,omitempty"`
    Project                    ProjectConfig                `json:"project_config,omitempty"`
    ProjectManager             ProjectManager               `json:"project_manager,omitempty"`
    RequireMatchingLabel       []RequireMatchingLabel       `json:"require_matching_label,omitempty"`
    RequireSIG                 RequireSIG                   `json:"requiresig,omitempty"`
    Retitle                    Retitle                      `json:"retitle,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"`
    Override                   Override                     `json:"override"`
}

Configuration is the top-level serialization target for plugin Configuration.

func (*Configuration) DcoFor Uses

func (c *Configuration) DcoFor(org, repo string) *Dco

DcoFor finds the Dco for a repo, if one exists a Dco can be listed for the repo itself or for the owning organization

func (*Configuration) EnabledReposForExternalPlugin Uses

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 Uses

func (c *Configuration) EnabledReposForPlugin(plugin string) (orgs, repos []string)

EnabledReposForPlugin returns the orgs and repos that have enabled the passed plugin.

func (*Configuration) MDYAMLEnabled Uses

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 Uses

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 Uses

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 Uses

func (c *Configuration) Validate() error

func (*Configuration) ValidatePluginsUnknown Uses

func (c *Configuration) ValidatePluginsUnknown() error

ValidatePluginsUnknown will return an error if there are any unrecognized plugins configured.

type Dco Uses

type Dco struct {
    // SkipDCOCheckForMembers is used to skip DCO check for trusted org members
    SkipDCOCheckForMembers bool `json:"skip_dco_check_for_members,omitempty"`
    // TrustedOrg is the org whose members' commits will not be checked for DCO signoff
    // if the skip DCO option is enabled. The default is the PR's org.
    TrustedOrg string `json:"trusted_org,omitempty"`
    // SkipDCOCheckForCollaborators is used to skip DCO check for trusted org members
    SkipDCOCheckForCollaborators bool `json:"skip_dco_check_for_collaborators,omitempty"`
}

Dco is config for the DCO (https://developercertificate.org/) checker plugin.

type ExternalPlugin Uses

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 GenericCommentHandler Uses

type GenericCommentHandler func(Agent, github.GenericCommentEvent) error

GenericCommentHandler defines the function contract for a github.GenericCommentEvent handler.

type Golint Uses

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 Goose Uses

type Goose struct {
    // Path to file containing an api key for unsplash.com
    KeyPath string `json:"key_path,omitempty"`
}

Goose contains the configuration for the goose plugin.

type Heart Uses

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 HelpProvider Uses

type HelpProvider func(config *Configuration, enabledRepos []string) (*pluginhelp.PluginHelp, error)

HelpProvider defines the function type that construct a pluginhelp.PluginHelp for enabled plugins. It takes into account the plugins configuration and enabled repositories.

type IssueCommentHandler Uses

type IssueCommentHandler func(Agent, github.IssueCommentEvent) error

IssueCommentHandler defines the function contract for a github.IssueCommentEvent handler.

type IssueHandler Uses

type IssueHandler func(Agent, github.IssueEvent) error

IssueHandler defines the function contract for a github.IssueEvent handler.

type Label Uses

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 Uses

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 ManagedColumn Uses

type ManagedColumn struct {
    // Either of ID or Name should be specified
    ID   *int   `json:"id,omitempty"`
    Name string `json:"name,omitempty"`
    // State must be open, closed or all
    State string `json:"state,omitempty"`
    // all the labels here should match to the incoming event to be bale to add the card to the project
    Labels []string `json:"labels,omitempty"`
    // Configuration is effective is the issue events repo/Owner/Login matched the org
    Org string `json:"org,omitempty"`
}

ManagedColumn is used by the ProjectQueries plugin to represent a project column and the conditions to add a PR to that column

type ManagedOrgRepo Uses

type ManagedOrgRepo struct {
    Projects map[string]ManagedProject `json:"projects,omitempty"`
}

ManagedOrgRepo is used by the ProjectManager plugin to represent an Organisation or Repository with a list of Projects

type ManagedProject Uses

type ManagedProject struct {
    Columns []ManagedColumn `json:"columns,omitempty"`
}

ManagedProject is used by the ProjectManager plugin to represent a Project with a list of Columns

type MergeWarning Uses

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 Metrics Uses

type Metrics struct {
    ConfigMapGauges *prometheus.GaugeVec
}

Metrics is a set of metrics that are gathered by plugins. It is up the the consumers of these metrics to ensure that they update the values in a thread-safe manner.

func NewMetrics Uses

func NewMetrics() *Metrics

NewMetrics returns a reference to the metrics plugins manage

type Milestone Uses

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 github 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 Override Uses

type Override struct {
    AllowTopLevelOwners bool `json:"allow_top_level_owners,omitempty"`
    // AllowedGitHubTeams is a map of repositories (eg "k/k") to list of GitHub team slugs,
    // members of which are allowed to override contexts
    AllowedGitHubTeams map[string][]string `json:"allowed_github_teams,omitempty"`
}

Override holds options for the override plugin

type Owners Uses

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 ProjectConfig Uses

type ProjectConfig struct {
    // Org level configs for github projects; key is org name
    Orgs map[string]ProjectOrgConfig `json:"project_org_configs,omitempty"`
}

ProjectConfig contains the configuration options for the project plugin

func (*ProjectConfig) GetColumnMap Uses

func (pluginConfig *ProjectConfig) GetColumnMap(org string, repo string) map[string]string

func (*ProjectConfig) GetMaintainerTeam Uses

func (pluginConfig *ProjectConfig) GetMaintainerTeam(org string, repo string) int

func (*ProjectConfig) GetOrgColumnMap Uses

func (pluginConfig *ProjectConfig) GetOrgColumnMap(org string) map[string]string

type ProjectManager Uses

type ProjectManager struct {
    OrgRepos map[string]ManagedOrgRepo `json:"orgsRepos,omitempty"`
}

ProjectManager represents the config for the ProjectManager plugin, holding top level config options, configuration is a hierarchial structure with top level element being org or org/repo with the list of projects as its children

type ProjectOrgConfig Uses

type ProjectOrgConfig struct {
    // ID of the github project maintainer team for a give project or org
    MaintainerTeamID int `json:"org_maintainers_team_id,omitempty"`
    // A map of project name to default column; an issue/PR will be added
    // to the default column if column name is not provided in the command
    ProjectColumnMap map[string]string `json:"org_default_column_map,omitempty"`
    // Repo level configs for github projects; key is repo name
    Repos map[string]ProjectRepoConfig `json:"project_repo_configs,omitempty"`
}

ProjectOrgConfig holds the github project config for an entire org. This can be overridden by ProjectRepoConfig.

type ProjectRepoConfig Uses

type ProjectRepoConfig struct {
    // ID of the github project maintainer team for a give project or org
    MaintainerTeamID int `json:"repo_maintainers_team_id,omitempty"`
    // A map of project name to default column; an issue/PR will be added
    // to the default column if column name is not provided in the command
    ProjectColumnMap map[string]string `json:"repo_default_column_map,omitempty"`
}

ProjectRepoConfig holds the github project config for a github project.

type PullRequestHandler Uses

type PullRequestHandler func(Agent, github.PullRequestEvent) error

PullRequestHandler defines the function contract for a github.PullRequestEvent handler.

type PushEventHandler Uses

type PushEventHandler func(Agent, github.PushEvent) error

PushEventHandler defines the function contract for a github.PushEvent handler.

type RequireMatchingLabel Uses

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 Uses

func (r RequireMatchingLabel) Describe() string

Describe generates a human readable description of the behavior that this configuration specifies.

type RequireSIG Uses

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 Retitle Uses

type Retitle struct {
    // AllowClosedIssues allows retitling closed/merged issues and PRs.
    AllowClosedIssues bool `json:"allow_closed_issues,omitempty"`
}

Retitle specifies configuration for the retitle plugin.

type ReviewCommentEventHandler Uses

type ReviewCommentEventHandler func(Agent, github.ReviewCommentEvent) error

ReviewCommentEventHandler defines the function contract for a github.ReviewCommentEvent handler.

type ReviewEventHandler Uses

type ReviewEventHandler func(Agent, github.ReviewEvent) error

ReviewEventHandler defines the function contract for a github.ReviewEvent handler.

type SigMention Uses

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 Uses

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 Uses

type Slack struct {
    MentionChannels []string       `json:"mentionchannels,omitempty"`
    MergeWarnings   []MergeWarning `json:"mergewarnings,omitempty"`
}

Slack contains the configuration for the slack plugin.

type StatusEventHandler Uses

type StatusEventHandler func(Agent, github.StatusEvent) error

StatusEventHandler defines the function contract for a github.StatusEvent handler.

type Trigger Uses

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. Defaults to true.
    // THIS FIELD IS DEPRECATED AND WILL BE REMOVED AFTER OCTOBER 2019.
    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.

func (*Trigger) SetDefaults Uses

func (t *Trigger) SetDefaults()

type Welcome Uses

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.

Directories

PathSynopsis
approve
approve/approvers
assign
blockadePackage blockade defines a plugin that adds the 'do-not-merge/blocked-paths' label to PRs that modify protected file paths.
blunderbuss
branchcleaner
bugzillaPackage bugzilla ensures that pull requests reference a Bugzilla bug in their title
buildifierPackage buildifier defines a Prow plugin that runs buildifier over modified BUILD, WORKSPACE, and skylark (.bzl) files in pull requests.
catPackage cat adds cat images to an issue or PR in response to a /meow comment
cherrypickunapprovedPackage cherrypickunapproved adds the `do-not-merge/cherry-pick-not-approved` label to PRs against a release branch which do not have the `cherry-pick-approved` label.
cla
dcoPackage dco implements a DCO (https://developercertificate.org/) checker plugin
docs-no-retestPackage docsnoretest contains a Prow plugin which manages a label indicating whether a given pull requests only changes documentation.
dogPackage dog adds dog images to the issue or PR in response to a /woof comment
golint
golint/suggestion
goosePackage goose adds goose images to an issue or PR in response to a /honk comment
heart
help
holdPackage hold contains a plugin which will allow users to label their own pull requests as not ready or ready for merge.
invalidcommitmsgPackage invalidcommitmsg adds the "do-not-merge/invalid-commit-message" label on PRs containing commit messages with @mentions or keywords that can automatically close issues.
label
lgtmPackage lgtm implements the lgtm plugin
lifecycle
mergecommitblocker
milestonePackage milestone implements the `/milestone` command which allows members of the milestone maintainers team to specify a milestone to be applied to an Issue or PR.
milestoneapplierPackage milestoneapplier implements the plugin to automatically apply the configured milestone after a PR is merged.
milestonestatusPackage milestonestatus implements the `/status` command which allows members of the milestone maintainers team to specify a `status/*` label to be applied to an Issue or PR.
overridePackage override supports the /override context command.
owners-label
ponyPackage pony adds pony images to the issue or PR in response to a /pony comment
projectPackage project implements the `/project` command which allows members of the project maintainers team to specify a project to be applied to an Issue or PR.
projectmanagerPackage projectmanager is a plugin to auto add pull requests to project boards based on specified conditions
releasenote
require-matching-labelPackage requirematchinglabel implements the `require-matching-label` plugin.
requiresig
retitlePackage retitle implements the retitle plugin
shrug
sigmentionPackage sigmention recognize SIG '@' mentions and adds 'sig/*' and 'kind/*' labels as appropriate.
sizePackage size contains a Prow plugin which counts the number of lines changed in a pull request, buckets this number into a few size classes (S, L, XL, etc), and finally labels the pull request with this size.
skipPackage skip implements the `/skip` command which allows users to clean up commit statuses of non-blocking presubmits on PRs.
slackevents
stagePackage stage defines a Prow plugin that defines the stage of the issue in the features process.
trigger
updateconfig
verify-owners
welcomePackage welcome implements a prow plugin to welcome new contributors
wipPackage wip will label a PR a work-in-progress if the author provides a prefix to their pull request title to the same effect.
yuks

Package plugins imports 26 packages (graph) and is imported by 119 packages. Updated 2019-10-15. Refresh now. Tools for package owners.