Documentation ¶
Overview ¶
Package mungers deals with munging of github pull requests
Index ¶
- func EachLoop() error
- func InitializeMungers(requestedMungers []string, config *github.Config) error
- func MungeIssue(obj *github.MungeObject) error
- func RegisterMunger(munger Munger) error
- func RegisterMungerOrDie(munger Munger)
- type BlunderbussConfig
- type BlunderbussMunger
- type LGTMAfterCommitMunger
- type Munger
- type NeedsRebaseMunger
- type OkToTestMunger
- type PathLabelMunger
- type PingCIMunger
- type SizeMunger
- type SubmitQueue
- func (sq *SubmitQueue) AddFlags(cmd *cobra.Command, config *github.Config)
- func (sq *SubmitQueue) EachLoop() error
- func (sq *SubmitQueue) Initialize(config *github.Config) error
- func (sq *SubmitQueue) Munge(obj *github.MungeObject)
- func (sq SubmitQueue) Name() string
- func (sq *SubmitQueue) RefreshWhitelist()
- func (sq *SubmitQueue) SetMergeStatus(obj *github.MungeObject, reason string, record bool)
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func EachLoop ¶
func EachLoop() error
EachLoop will be called before we start a poll loop and will run the EachLoop function for all active mungers
func InitializeMungers ¶
InitializeMungers will call munger.Initialize() for all mungers requested in --pr-mungers
func MungeIssue ¶
func MungeIssue(obj *github.MungeObject) error
MungeIssue will call each activated munger with the given object
func RegisterMunger ¶
RegisterMunger should be called in `init()` by each munger to make itself available by name
func RegisterMungerOrDie ¶
func RegisterMungerOrDie(munger Munger)
RegisterMungerOrDie will call RegisterMunger but will be fatal on error
Types ¶
type BlunderbussConfig ¶
type BlunderbussConfig struct {
PrefixMap map[string][]string `json:"prefixMap,omitempty" yaml:"prefixMap,omitempty"`
}
A BlunderbussConfig maps a set of file prefixes to a set of owner names (github users)
type BlunderbussMunger ¶
type BlunderbussMunger struct {
// contains filtered or unexported fields
}
BlunderbussMunger will assign issues to users based on the config file provided by --blunderbuss-config.
func (*BlunderbussMunger) AddFlags ¶
func (b *BlunderbussMunger) AddFlags(cmd *cobra.Command, config *github.Config)
AddFlags will add any request flags to the cobra `cmd`
func (*BlunderbussMunger) EachLoop ¶
func (b *BlunderbussMunger) EachLoop() error
EachLoop is called at the start of every munge loop
func (*BlunderbussMunger) Initialize ¶
func (b *BlunderbussMunger) Initialize(config *github.Config) error
Initialize will initialize the munger
func (*BlunderbussMunger) Munge ¶
func (b *BlunderbussMunger) Munge(obj *github.MungeObject)
Munge is the workhorse the will actually make updates to the PR
func (*BlunderbussMunger) Name ¶
func (b *BlunderbussMunger) Name() string
Name is the name usable in --pr-mungers
type LGTMAfterCommitMunger ¶
type LGTMAfterCommitMunger struct{}
LGTMAfterCommitMunger will remove the LGTM flag from an PR which has been updated since the reviewer added LGTM
func (LGTMAfterCommitMunger) AddFlags ¶
func (LGTMAfterCommitMunger) AddFlags(cmd *cobra.Command, config *github.Config)
AddFlags will add any request flags to the cobra `cmd`
func (LGTMAfterCommitMunger) EachLoop ¶
func (LGTMAfterCommitMunger) EachLoop() error
EachLoop is called at the start of every munge loop
func (LGTMAfterCommitMunger) Initialize ¶
func (LGTMAfterCommitMunger) Initialize(config *github.Config) error
Initialize will initialize the munger
func (LGTMAfterCommitMunger) Munge ¶
func (LGTMAfterCommitMunger) Munge(obj *github.MungeObject)
Munge is the workhorse the will actually make updates to the PR
func (LGTMAfterCommitMunger) Name ¶
func (LGTMAfterCommitMunger) Name() string
Name is the name usable in --pr-mungers
type Munger ¶
type Munger interface { // Take action on a specific github issue: Munge(obj *github.MungeObject) AddFlags(cmd *cobra.Command, config *github.Config) Name() string Initialize(*github.Config) error EachLoop() error }
Munger is the interface which all mungers must implement to register
func GetActiveMungers ¶
func GetActiveMungers() []Munger
GetActiveMungers returns a slice of all mungers which both registered and were requested by the user
func GetAllMungers ¶
func GetAllMungers() []Munger
GetAllMungers returns a slice of all registered mungers. This list is completely independant of the mungers selected at runtime in --pr-mungers. This is all possible mungers.
type NeedsRebaseMunger ¶
type NeedsRebaseMunger struct{}
NeedsRebaseMunger will add the "needs-rebase" label to any issue which is unable to be automatically merged
func (NeedsRebaseMunger) AddFlags ¶
func (NeedsRebaseMunger) AddFlags(cmd *cobra.Command, config *github.Config)
AddFlags will add any request flags to the cobra `cmd`
func (NeedsRebaseMunger) EachLoop ¶
func (NeedsRebaseMunger) EachLoop() error
EachLoop is called at the start of every munge loop
func (NeedsRebaseMunger) Initialize ¶
func (NeedsRebaseMunger) Initialize(config *github.Config) error
Initialize will initialize the munger
func (NeedsRebaseMunger) Munge ¶
func (NeedsRebaseMunger) Munge(obj *github.MungeObject)
Munge is the workhorse the will actually make updates to the PR
func (NeedsRebaseMunger) Name ¶
func (NeedsRebaseMunger) Name() string
Name is the name usable in --pr-mungers
type OkToTestMunger ¶
type OkToTestMunger struct{}
OkToTestMunger looks for situations where a reviewer has LGTM'd a PR, but it isn't ok to test by the k8s-bot, and adds an 'ok to test' comment to the PR.
func (OkToTestMunger) AddFlags ¶
func (OkToTestMunger) AddFlags(cmd *cobra.Command, config *github.Config)
AddFlags will add any request flags to the cobra `cmd`
func (OkToTestMunger) EachLoop ¶
func (OkToTestMunger) EachLoop() error
EachLoop is called at the start of every munge loop
func (OkToTestMunger) Initialize ¶
func (OkToTestMunger) Initialize(config *github.Config) error
Initialize will initialize the munger
func (OkToTestMunger) Munge ¶
func (OkToTestMunger) Munge(obj *github.MungeObject)
Munge is the workhorse the will actually make updates to the PR
func (OkToTestMunger) Name ¶
func (OkToTestMunger) Name() string
Name is the name usable in --pr-mungers
type PathLabelMunger ¶
type PathLabelMunger struct {
// contains filtered or unexported fields
}
PathLabelMunger will add labels to PRs based on what files it modified. The mapping of files to labels if provided in a file in --path-label-config
func (*PathLabelMunger) AddFlags ¶
func (p *PathLabelMunger) AddFlags(cmd *cobra.Command, config *github.Config)
AddFlags will add any request flags to the cobra `cmd`
func (*PathLabelMunger) EachLoop ¶
func (p *PathLabelMunger) EachLoop() error
EachLoop is called at the start of every munge loop
func (*PathLabelMunger) Initialize ¶
func (p *PathLabelMunger) Initialize(config *github.Config) error
Initialize will initialize the munger
func (*PathLabelMunger) Munge ¶
func (p *PathLabelMunger) Munge(obj *github.MungeObject)
Munge is the workhorse the will actually make updates to the PR
func (*PathLabelMunger) Name ¶
func (p *PathLabelMunger) Name() string
Name is the name usable in --pr-mungers
type PingCIMunger ¶
type PingCIMunger struct{}
PingCIMunger looks for situations CI (Travis | Shippable) has flaked for some reason and we want to re-run them. Achieves this by closing and re-opening the pr
func (PingCIMunger) AddFlags ¶
func (PingCIMunger) AddFlags(cmd *cobra.Command, config *github.Config)
AddFlags will add any request flags to the cobra `cmd`
func (PingCIMunger) EachLoop ¶
func (PingCIMunger) EachLoop() error
EachLoop is called at the start of every munge loop
func (PingCIMunger) Initialize ¶
func (PingCIMunger) Initialize(config *github.Config) error
Initialize will initialize the munger
func (PingCIMunger) Munge ¶
func (PingCIMunger) Munge(obj *github.MungeObject)
Munge is the workhorse the will actually make updates to the PR
func (PingCIMunger) Name ¶
func (PingCIMunger) Name() string
Name is the name usable in --pr-mungers
type SizeMunger ¶
type SizeMunger struct {
// contains filtered or unexported fields
}
SizeMunger will update a label on a PR based on how many lines are changed. It will exclude certain files in it's calculations based on the config file provided in --generated-files-config
func (*SizeMunger) AddFlags ¶
func (s *SizeMunger) AddFlags(cmd *cobra.Command, config *github.Config)
AddFlags will add any request flags to the cobra `cmd`
func (SizeMunger) EachLoop ¶
func (SizeMunger) EachLoop() error
EachLoop is called at the start of every munge loop
func (SizeMunger) Initialize ¶
func (SizeMunger) Initialize(config *github.Config) error
Initialize will initialize the munger
func (*SizeMunger) Munge ¶
func (s *SizeMunger) Munge(obj *github.MungeObject)
Munge is the workhorse the will actually make updates to the PR
type SubmitQueue ¶
type SubmitQueue struct { JenkinsJobs []string JenkinsHost string Whitelist string RequiredStatusContexts []string WhitelistOverride string Committers string Address string DontRequireE2ELabel string E2EStatusContext string WWWRoot string sync.Mutex // contains filtered or unexported fields }
SubmitQueue will merge PR which meet a set of requirements.
PR must have LGTM after the last commit PR must have passed all github CI checks if user not in whitelist PR must have "ok-to-merge" The google internal jenkins instance must be passing the JenkinsJobs e2e tests
func (*SubmitQueue) AddFlags ¶
func (sq *SubmitQueue) AddFlags(cmd *cobra.Command, config *github.Config)
AddFlags will add any request flags to the cobra `cmd`
func (*SubmitQueue) EachLoop ¶
func (sq *SubmitQueue) EachLoop() error
EachLoop is called at the start of every munge loop
func (*SubmitQueue) Initialize ¶
func (sq *SubmitQueue) Initialize(config *github.Config) error
Initialize will initialize the munger
func (*SubmitQueue) Munge ¶
func (sq *SubmitQueue) Munge(obj *github.MungeObject)
Munge is the workhorse the will actually make updates to the PR
func (SubmitQueue) Name ¶
func (sq SubmitQueue) Name() string
Name is the name usable in --pr-mungers
func (*SubmitQueue) RefreshWhitelist ¶
func (sq *SubmitQueue) RefreshWhitelist()
RefreshWhitelist updates the whitelist, re-getting the list of committers. called with sq.Lock() held!
func (*SubmitQueue) SetMergeStatus ¶
func (sq *SubmitQueue) SetMergeStatus(obj *github.MungeObject, reason string, record bool)
SetMergeStatus will set the status given a particular PR. This function should but used instead of manipulating the prStatus directly as sq.Lock() must be called when manipulating that structure `obj` is the active github object `reason` is the new 'status' for this object `record` is wether we should show this status on the web page or not
In general we do not show the status updates for PRs which didn't reach the 're-run github e2e' state as these are more obvious, change less, and don't seem to ever confuse people.