Documentation
¶
Index ¶
- Constants
- func GetActionsCfg(ghClient *Client, owner, repoName, ghSha string) (string, []byte, error)
- func IsHTTPErrorCode(err error, httpCode int) bool
- func IsNotFound(err error) bool
- type AutoMerge
- type BlockPRWith
- type Client
- func (c *Client) AutoLabel(labels []string, owner string, repoName string, prNumber int, ...) error
- func (c *Client) AutoMerge(cfg AutoMerge, owner, repoName string, base, head *gh.PullRequestBranch, ...) error
- func (c *Client) BlockPRWith(blockPRConfig BlockPRWith, owner, repoName string, prNumber int, ...) (bool, []string, error)
- func (c *Client) CommentAndOpenIssue(ctx context.Context, owner, repo string, issueNumber int, body string) error
- func (c *Client) CommitContains(msgsInCommit []MsgInCommit, owner, repoName string, prNumber int) error
- func (c *Client) CreateIssue(ctx context.Context, owner, repo string, title, body string, labels []string) (int, error)
- func (c *Client) CreateOrAppendComment(ctx context.Context, prNumber int, comment string, ...) error
- func (c *Client) CreateOrAppendCommentIssueComment(ctx context.Context, prNumber int, issueComment *gh.IssueComment, ...) error
- func (c *Client) GetConfigFile(owner, repoName, file, sha string) ([]byte, error)
- func (c *Client) GetFailedJenkinsURLs(parentCtx context.Context, owner, repoName string, sha string) ([]string, error)
- func (c *Client) GetFlakeIssues(ctx context.Context, owner, repo, creator string, labels []string) (map[int]jenkins.GHIssue, error)
- func (c *Client) GetPRFailure(ctx context.Context, pr *gh.PullRequest) ([]string, error)
- func (c *Client) GetPRFailures(ctx context.Context, prNumber int) ([]string, error)
- func (c *Client) GetPRsFailures(ctx context.Context, base string) (map[int][]string, error)
- func (c *Client) HandleCheckRunEvent(cfg PRBlockerConfig, e *gh.CheckRunEvent) error
- func (c *Client) HandleIssueCommentEvent(ctx context.Context, cfg *FlakeConfig, jobName string, pr *gh.PullRequest, ...) error
- func (c *Client) HandlePullRequestEvent(cfg PRBlockerConfig, pre *gh.PullRequestEvent) error
- func (c *Client) HandlePullRequestReviewEvent(cfg PRBlockerConfig, pre *gh.PullRequestReviewEvent) error
- func (c *Client) HandleStatusEvent(cfg PRBlockerConfig, se *gh.StatusEvent) error
- func (c *Client) Log() *zerolog.Logger
- func (c *Client) TriagePRFailure(ctx context.Context, jc *jenkins.JenkinsClient, flakeCfg *FlakeConfig, ...) (prJobName string, flakesFound map[int][]string, ...)
- func (c *Client) TriagePRFailures(ctx context.Context, jc *jenkins.JenkinsClient, flakeCfg *FlakeConfig, ...) error
- func (c *Client) UpdateMergeabilityCheck(owner string, repoName string, prNumber int, head *gh.PullRequestBranch, ...) error
- type FlakeConfig
- type IssueTrackConfig
- type JenkinsConfig
- type MLHCommand
- type MsgInCommit
- type PRBlockerConfig
- type PRLabelConfig
- type PRLabels
- type StableJobs
Constants ¶
const (
IssueCreator = "maintainer-s-little-helper"
)
Variables ¶
This section is empty.
Functions ¶
func GetActionsCfg ¶ added in v1.3.1
func IsHTTPErrorCode ¶ added in v1.1.0
func IsNotFound ¶ added in v1.1.0
IsNotFound returns true if the given error is a NotFound.
Types ¶
type BlockPRWith ¶ added in v1.1.0
type BlockPRWith struct { // LabelsUnset blocks the PR if any of the Labels are not set, i.e., if any // of the regex does not match any label set in the PR. LabelsUnset []PRLabelConfig `yaml:"labels-unset,omitempty"` // LabelsSet blocks the PR if any of the Labels are set, i.e., if any of the // regex matches any label set in the PR. LabelsSet []PRLabelConfig `yaml:"labels-set,omitempty"` }
type Client ¶ added in v1.1.0
func NewClientFromGHClient ¶ added in v1.1.0
func (*Client) AutoLabel ¶ added in v1.1.0
func (c *Client) AutoLabel(labels []string, owner string, repoName string, prNumber int, prLabels PRLabels) error
AutoLabel sets the labels automatically in a PR that is opened or reopened.
func (*Client) AutoMerge ¶ added in v1.1.0
func (c *Client) AutoMerge( cfg AutoMerge, owner, repoName string, base, head *gh.PullRequestBranch, prNumber int, prLabels PRLabels, review *gh.PullRequestReview, ) error
func (*Client) BlockPRWith ¶ added in v1.1.0
func (c *Client) BlockPRWith(blockPRConfig BlockPRWith, owner, repoName string, prNumber int, prLabels PRLabels) (bool, []string, error)
BlockPRWith returns true if the PR needs to be blocked based on the logic stored under config.BlockPRWith.
func (*Client) CommentAndOpenIssue ¶ added in v1.1.0
func (c *Client) CommentAndOpenIssue(ctx context.Context, owner, repo string, issueNumber int, body string) error
CommentAndOpenIssue creates a comment and (re-)opens a GH issue in case it is closed.
func (*Client) CommitContains ¶ added in v1.1.0
func (c *Client) CommitContains(msgsInCommit []MsgInCommit, owner, repoName string, prNumber int) error
CommitContains checks if all commits of the given PR Number contains the each msg provided for each MsgInCommit.
func (*Client) CreateIssue ¶ added in v1.1.0
func (c *Client) CreateIssue(ctx context.Context, owner, repo string, title, body string, labels []string) (int, error)
CreateIssue creates a new GH issue. Returns the issue number created.
func (*Client) CreateOrAppendComment ¶ added in v1.1.0
func (c *Client) CreateOrAppendComment(ctx context.Context, prNumber int, comment string, triggerRegexp *regexp.Regexp) error
CreateOrAppendComment creates or appends the 'comment' into the last comment from the PR 'prNumber' that matches the regex 'triggerRegexp'. If 'triggerRegexp' is not found then a new comment is created in the PR 'prNumber'.
func (*Client) CreateOrAppendCommentIssueComment ¶ added in v1.1.0
func (c *Client) CreateOrAppendCommentIssueComment(ctx context.Context, prNumber int, issueComment *gh.IssueComment, comment string) error
CreateOrAppendCommentIssueComment appends the 'comment' into 'issueComment'. If 'issueComment' is nil, it will create a new comment in the PR with the 'prNumber'.
func (*Client) GetConfigFile ¶ added in v1.1.0
func (*Client) GetFailedJenkinsURLs ¶ added in v1.1.0
func (c *Client) GetFailedJenkinsURLs(parentCtx context.Context, owner, repoName string, sha string) ([]string, error)
GetFailedJenkinsURLs returns a slice of URLs of tests that failed for the given commit SHA.
func (*Client) GetFlakeIssues ¶ added in v1.1.0
func (c *Client) GetFlakeIssues(ctx context.Context, owner, repo, creator string, labels []string) (map[int]jenkins.GHIssue, error)
GetFlakeIssues gets all "open" issues that are consider Jenkins flakes. and all "closed" and "open" issues created by the "creator".
func (*Client) GetPRFailure ¶ added in v1.1.0
func (*Client) GetPRFailures ¶ added in v1.1.0
GetPRFailures gets the jenkins URL failures of the given PR number.
func (*Client) GetPRsFailures ¶ added in v1.1.0
GetPRsFailures returns a map of 'open' non-draft PRs Numbers that maps to jenkins failures URLs.
func (*Client) HandleCheckRunEvent ¶ added in v1.3.1
func (c *Client) HandleCheckRunEvent(cfg PRBlockerConfig, e *gh.CheckRunEvent) error
func (*Client) HandleIssueCommentEvent ¶ added in v1.3.1
func (c *Client) HandleIssueCommentEvent(ctx context.Context, cfg *FlakeConfig, jobName string, pr *gh.PullRequest, event *gh.IssueCommentEvent) error
func (*Client) HandlePullRequestEvent ¶ added in v1.3.1
func (c *Client) HandlePullRequestEvent(cfg PRBlockerConfig, pre *gh.PullRequestEvent) error
func (*Client) HandlePullRequestReviewEvent ¶ added in v1.3.1
func (c *Client) HandlePullRequestReviewEvent(cfg PRBlockerConfig, pre *gh.PullRequestReviewEvent) error
func (*Client) HandleStatusEvent ¶ added in v1.3.1
func (c *Client) HandleStatusEvent(cfg PRBlockerConfig, se *gh.StatusEvent) error
func (*Client) TriagePRFailure ¶ added in v1.1.0
func (c *Client) TriagePRFailure( ctx context.Context, jc *jenkins.JenkinsClient, flakeCfg *FlakeConfig, prNumber int, jobFailURL string, issueKnownFlakes map[int]jenkins.GHIssue, jobNameToJenkinsFails map[string]jenkins.JenkinsFailures, ) ( prJobName string, flakesFound map[int][]string, flakesNotFound []jenkins.BuildFailure, err error, )
func (*Client) TriagePRFailures ¶ added in v1.1.0
func (*Client) UpdateMergeabilityCheck ¶ added in v1.1.0
func (c *Client) UpdateMergeabilityCheck( owner string, repoName string, prNumber int, head *gh.PullRequestBranch, blockPR bool, blockReasons []string, ) error
UpdateMergeabilityCheck sets the mergeability checker with "Success" or "Failure" in case the PR needs to be blocked from mergeability.
type FlakeConfig ¶ added in v1.1.0
type FlakeConfig struct { IssueTracker IssueTrackConfig `yaml:"issue-tracker-config"` JenkinsConfig JenkinsConfig `yaml:"jenkins-config"` MaxFlakesPerTest int `yaml:"max-flakes-per-test"` FlakeSimilarity float64 `yaml:"flake-similarity"` IgnoreFailures []string `yaml:"ignore-failures"` }
func (*FlakeConfig) CommonFailure ¶ added in v1.1.0
func (fc *FlakeConfig) CommonFailure(str string) bool
CommonFailure returns true if the given 'str' is part of the list of failures that should be ignored.
func (*FlakeConfig) GetMaxFlakesPerTest ¶ added in v1.1.0
func (fc *FlakeConfig) GetMaxFlakesPerTest() int
type IssueTrackConfig ¶ added in v1.1.0
type IssueTrackConfig struct { // Contains the labels that are going to be used to create the GH issues // tracked by MLH. IssueLabels []string `yaml:"issue-labels"` }
type JenkinsConfig ¶ added in v1.1.0
type JenkinsConfig struct { // JenkinsURL is the URL to access jenkins JenkinsURL string `yaml:"jenkins-url"` // RegexTrigger which is used to find which comment has triggered the CI // and so MLH can edit the comment with the tests failures. RegexTrigger string `yaml:"regex-trigger"` // StableJobNames contains the list of job names that are "stable" i.e. the // ones that have scheduled runs. StableJobNames []string `yaml:"stable-jobs"` // PRJobNames maps a PR job name to a list of stable jobs that are used to // correlate if a test failure is a flake or not. PRJobNames map[string]StableJobs `yaml:"pr-jobs"` }
type MLHCommand ¶ added in v1.1.0
type MLHCommand string
const ( MLHCommandNewFlake MLHCommand = "/mlh new-flake " MLHCommandNotFound MLHCommand = "" )
func IsMLHCommand ¶ added in v1.1.0
func IsMLHCommand(s string) MLHCommand
type MsgInCommit ¶ added in v1.1.0
type MsgInCommit struct { // Msg is the message that should be found in the commit message. Mutually // exclusive with RegexpMsg. Msg string `yaml:"msg,omitempty"` // RegexpMsg is a regular expression to match the commit message. Mutually // exclusive with Msg. RegexpMsg string `yaml:"regexpMsg,omitempty"` // Helper is the message that should be printed if the commit message // doesn't contains 'Msg' or doesn't match 'RegexpMsg'. Helper string `yaml:"helper,omitempty"` // SetLabels are the labels to be set in the PR if the commit message // doesn't contains 'Msg' or doesn't match 'RegexpMsg'. SetLabels []string `yaml:"set-labels,omitempty"` }
type PRBlockerConfig ¶ added in v1.1.0
type PRBlockerConfig struct { RequireMsgsInCommit []MsgInCommit `yaml:"require-msgs-in-commit,omitempty"` AutoLabel []string `yaml:"auto-label,omitempty"` BlockPRWith BlockPRWith `yaml:"block-pr-with,omitempty"` AutoMerge AutoMerge `yaml:"auto-merge,omitempty"` FlakeTracker *FlakeConfig `yaml:"flake-tracker,omitempty"` }
type PRLabelConfig ¶ added in v1.1.0
type PRLabelConfig struct { // RegexLabel contains the regex that will be used to find for labels. RegexLabel string `yaml:"regex-label,omitempty"` // Helper will print the a helper message in case the regex-label is or // isn't matched. Helper string `yaml:"helper,omitempty"` // SetLabels will set the labels in case the RegexLabel matches the labels // of a PR. SetLabels []string `yaml:"set-labels,omitempty"` }
type StableJobs ¶ added in v1.1.0
type StableJobs struct {
JobNames []string `yaml:"correlated-with-stable-jobs"`
}