Documentation ¶
Index ¶
- func GetLogFileLocation(fileLocation string) string
- func NewBool(b bool) *bool
- func NewInt(n int) *int
- func NewInt32(n int32) *int32
- func NewInt64(n int64) *int64
- func NewString(s string) *string
- func PingEventFromJSON(data io.Reader) *github.PingEvent
- func SetupLogging(c *Config) error
- type ChecksService
- type CloudRepository
- type Config
- type GitService
- type GithubClient
- type Integration
- type IssuesService
- type LabelResponse
- type MetricsProvider
- type MetricsTransport
- type OrganizationsService
- type Payload
- type PullRequestsService
- type RateLimitTransport
- type RepositoriesService
- type Repository
- type Server
- func (s *Server) AutoMergePR() error
- func (s *Server) CheckPRActivity()
- func (s *Server) CleanOutdatedPRs()
- func (s *Server) CleanUpLabels(pr *model.PullRequest)
- func (s *Server) GetIssueFromGithub(ctx context.Context, ghIssue *github.Issue) (*model.Issue, error)
- func (s *Server) GetPullRequestFromGithub(ctx context.Context, pullRequest *github.PullRequest, action string) (*model.PullRequest, error)
- func (s *Server) GetUpdateChecks(ctx context.Context, owner, repoName string, prNumber int) (*model.PullRequest, error)
- func (s *Server) IsBotUserFromCLAExclusionsList(user string) bool
- func (s *Server) IsInBotBlockList(user string) bool
- func (s *Server) IsOrgMember(user string) bool
- func (s *Server) RefreshMembers()
- func (s *Server) Start()
- func (s *Server) Stop() error
- func (s *Server) Tick()
- type TeamsService
- type WebhookValidationError
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func GetLogFileLocation ¶
func SetupLogging ¶
Types ¶
type ChecksService ¶
type ChecksService interface {
ListCheckRunsForRef(ctx context.Context, owner, repo, ref string, opts *github.ListCheckRunsOptions) (*github.ListCheckRunsResults, *github.Response, error)
}
type CloudRepository ¶ added in v0.16.10
type Config ¶
type Config struct { ListenAddress string MattermodURL string GithubAccessToken string GitHubTokenReserve int GithubUsername string GithubEmail string GitConfigMergeRenameLimit string GithubAccessTokenCherryPick string GitHubWebhookSecret string Org string Username string AutoAssignerTeam string AutoAssignerTeamID int64 TickRateMinutes int DriverName string DataSource string Repositories []*Repository CloudRepositories []*CloudRepository BlockPRMergeLabels []string AutoPRMergeLabel string BuildAppTag string BuildAppInitMessage string BuildAppDoneMessage string BuildAppFailedMessage string BuildAppBranchPrefix string EnterpriseReponame string EnterpriseTriggerReponame string EnterpriseWebappReponame string EnterpriseTriggerLabel string EnterpriseGithubStatusContext string EnterpriseGithubStatusTETests string EnterpriseGithubStatusEETests string EnterpriseWorkflowName string TranslationsMattermostWebhookURL string TranslationsMattermostMessage string TranslationsBot string TranslationsDoNotMergeLabel string TranslationsMergedMessage string TranslationsMergeFailureMessage string TranslationsMergePolicy string StartLoadtestTag string StartLoadtestMessage string CLAExclusionsList []string CLAGithubStatusContext string SignedCLAURL string PRWelcomeMessage string PrLabels []LabelResponse IssueLabels []LabelResponse IssueLabelsToCleanUp []string BlockListPathsGlobal []string BlockListPathsPerRepo map[string][]string // BlockListPathsPerRepo is a per repository list of blocked files BlockListBots []string // List of bots who are part of the org, but are not allowed to run slash commands. MattermostWebhookURL string LogSettings struct { ConsoleLevel string FileLevel string FileLocation string EnableConsole bool EnableColor bool ConsoleJSON bool EnableFile bool FileJSON bool } DaysUntilStale int ExemptStaleLabels []string StaleLabel string StaleComment string MetricsServerPort string RepoFolder string // folder containing local checkouts of repositories for cherry-picking ScriptsFolder string // folder containing the cherry-pick.sh script }
nolint:govet
type GitService ¶
type GitService interface { CreateRef(ctx context.Context, owner string, repo string, ref *github.Reference) (*github.Reference, *github.Response, error) DeleteRef(ctx context.Context, owner string, repo string, ref string) (*github.Response, error) GetRef(ctx context.Context, owner string, repo string, ref string) (*github.Reference, *github.Response, error) GetCommit(ctx context.Context, owner string, repo string, ref string) (*github.Commit, *github.Response, error) ListMatchingRefs(ctx context.Context, owner string, repo string, opts *github.ReferenceListOptions) ([]*github.Reference, *github.Response, error) }
type GithubClient ¶
type GithubClient struct { Checks ChecksService Git GitService Issues IssuesService Organizations OrganizationsService PullRequests PullRequestsService Repositories RepositoriesService Teams TeamsService // contains filtered or unexported fields }
GithubClient wraps the github.Client with relevant interfaces.
func NewGithubClient ¶
func NewGithubClient(accessToken string, limitTokens int, metrics MetricsProvider) (*GithubClient, error)
NewGithubClient returns a new Github client that will use a fixed 10 req/sec / 10 burst tokens rate limiter configuration
func NewGithubClientWithLimiter ¶
func NewGithubClientWithLimiter(accessToken string, limit rate.Limit, burstTokens int, metricsProvider MetricsProvider) *GithubClient
NewGithubClientWithLimiter returns a new Github client with the provided limit and burst tokens that will be used by the rate limit transport.
func (*GithubClient) RateLimits ¶
func (c *GithubClient) RateLimits(ctx context.Context) (*github.RateLimits, *github.Response, error)
type Integration ¶
type IssuesService ¶
type IssuesService interface { AddAssignees(ctx context.Context, owner, repo string, number int, assignees []string) (*github.Issue, *github.Response, error) AddLabelsToIssue(ctx context.Context, owner string, repo string, number int, labels []string) ([]*github.Label, *github.Response, error) CreateComment(ctx context.Context, owner string, repo string, number int, comment *github.IssueComment) (*github.IssueComment, *github.Response, error) DeleteComment(ctx context.Context, owner string, repo string, commentID int64) (*github.Response, error) Edit(ctx context.Context, owner string, repo string, number int, issue *github.IssueRequest) (*github.Issue, *github.Response, error) Get(ctx context.Context, owner string, repo string, number int) (*github.Issue, *github.Response, error) ListByRepo(ctx context.Context, owner string, repo string, opts *github.IssueListByRepoOptions) ([]*github.Issue, *github.Response, error) ListComments(ctx context.Context, owner string, repo string, number int, opts *github.IssueListCommentsOptions) ([]*github.IssueComment, *github.Response, error) ListLabelsByIssue(ctx context.Context, owner string, repo string, number int, opt *github.ListOptions) ([]*github.Label, *github.Response, error) RemoveLabelForIssue(ctx context.Context, owner string, repo string, number int, label string) (*github.Response, error) }
type LabelResponse ¶
type MetricsProvider ¶
type MetricsProvider interface { // ObserverHTTPRequestDuration stores the elapsed time for an HTTP request ObserveHTTPRequestDuration(method, handler, statusCode string, elapsed float64) // IncreaseWebhookRequest increases the counter for the webhook requests // identified by name IncreaseWebhookRequest(name string) // IncreaseWebhookErrors stores the number of errors identified by name IncreaseWebhookErrors(name string) // ObserveGithubRequestDuration stores the elapsed time for github requests ObserveGithubRequestDuration(method, handler, statusCode string, elapsed float64) // IncreaseGithubCacheHits stores the number of cache hits when a github request // is done. The information is stored using the HTTP method and the request handler IncreaseGithubCacheHits(method, handler string) // IncreaseGithubCacheMisses stores the number of cache misses when a github request // is done. The information is stored using the HTTP method and the request handler IncreaseGithubCacheMisses(method, handler string) // IncreaseRateLimiterErrors stores the number of errors received when trying to // rate limit the requests IncreaseRateLimiterErrors() // ObserverCronTaskDuration stores the elapsed time for a cron task ObserveCronTaskDuration(name string, elapsed float64) // IncreaseCronTaskErrors stores the number of errors for a cron task IncreaseCronTaskErrors(name string) }
MetricsProvider is the interface that exposes the communication with the metrics system this interface should be implemented by the different providers we want to include
type MetricsTransport ¶
type MetricsTransport struct { Base http.RoundTripper // contains filtered or unexported fields }
Transport is an HTTP transport that would check the requests and increase some metrics, cache errors, etc based on the requests and responses
func NewMetricsTransport ¶
func NewMetricsTransport(base http.RoundTripper, metrics MetricsProvider) *MetricsTransport
NewTransport returns a transport using a provided http.RoundTripper as the base and a metrics provider
func (*MetricsTransport) Client ¶
func (t *MetricsTransport) Client() *http.Client
Client returns a new http.Client using Transport as the default transport
type OrganizationsService ¶
type OrganizationsService interface { GetOrgMembership(ctx context.Context, user, org string) (*github.Membership, *github.Response, error) IsMember(ctx context.Context, org, user string) (bool, *github.Response, error) ListMembers(ctx context.Context, org string, opts *github.ListMembersOptions) ([]*github.User, *github.Response, error) }
type PullRequestsService ¶
type PullRequestsService interface { Get(ctx context.Context, owner string, repo string, number int) (*github.PullRequest, *github.Response, error) List(ctx context.Context, owner string, repo string, opts *github.PullRequestListOptions) ([]*github.PullRequest, *github.Response, error) ListFiles(ctx context.Context, owner string, repo string, number int, opts *github.ListOptions) ([]*github.CommitFile, *github.Response, error) ListReviewers(ctx context.Context, owner, repo string, number int, opts *github.ListOptions) (*github.Reviewers, *github.Response, error) ListReviews(ctx context.Context, owner, repo string, number int, opts *github.ListOptions) ([]*github.PullRequestReview, *github.Response, error) Merge(ctx context.Context, owner string, repo string, number int, commitMessage string, options *github.PullRequestOptions) (*github.PullRequestMergeResult, *github.Response, error) RequestReviewers(ctx context.Context, owner, repo string, number int, reviewers github.ReviewersRequest) (*github.PullRequest, *github.Response, error) UpdateBranch(ctx context.Context, owner, repo string, number int, opts *github.PullRequestBranchUpdateOptions) (*github.PullRequestBranchUpdateResponse, *github.Response, error) CreateReview(ctx context.Context, owner, repo string, number int, review *github.PullRequestReviewRequest) (*github.PullRequestReview, *github.Response, error) }
type RateLimitTransport ¶
type RateLimitTransport struct {
// contains filtered or unexported fields
}
RateLimitTransport will provide a layer based on http.RounTripper interface that provided rate limiting capability
func NewRateLimitTransport ¶
func NewRateLimitTransport(limit rate.Limit, tokens int, base http.RoundTripper, metrics MetricsProvider) *RateLimitTransport
NewRateLimitTransport will return a new transport that provides rate limiting capability based on the provided limit and burst tokens. It also needs the base RountTripper that will be called in case the rate limit is not needed
type RepositoriesService ¶
type RepositoriesService interface { CreateStatus(ctx context.Context, owner, repo, ref string, status *github.RepoStatus) (*github.RepoStatus, *github.Response, error) Get(ctx context.Context, owner, repo string) (*github.Repository, *github.Response, error) GetBranch(ctx context.Context, owner, repo, branch string, followRedirects bool) (*github.Branch, *github.Response, error) ListBranches(ctx context.Context, owner string, repo string, opts *github.BranchListOptions) ([]*github.Branch, *github.Response, error) GetCombinedStatus(ctx context.Context, owner, repo, ref string, opts *github.ListOptions) (*github.CombinedStatus, *github.Response, error) ListTeams(ctx context.Context, owner string, repo string, opts *github.ListOptions) ([]*github.Team, *github.Response, error) ListStatuses(ctx context.Context, owner, repo, ref string, opts *github.ListOptions) ([]*github.RepoStatus, *github.Response, error) }
type Repository ¶
type Repository struct { Owner string Name string BuildStatusContext string InstanceSetupScript string InstanceSetupUpgradeScript string JobName string GreetingTeam string // GreetingTeam is the GitHub team responsible for triaging non-member PRs for this repo. GreetingLabels []string // GreetingLabels are the labels applied automatically to non-member PRs for this repo. }
func GetRepository ¶
func GetRepository(repositories []*Repository, owner, name string) (*Repository, bool)
type Server ¶
type Server struct { Config *Config Store store.Store GithubClient *GithubClient OrgMembers []string StartTime time.Time Metrics MetricsProvider // contains filtered or unexported fields }
Server is the mattermod server. nolint:govet
func (*Server) AutoMergePR ¶
func (*Server) CheckPRActivity ¶
func (s *Server) CheckPRActivity()
func (*Server) CleanOutdatedPRs ¶
func (s *Server) CleanOutdatedPRs()
func (*Server) CleanUpLabels ¶
func (s *Server) CleanUpLabels(pr *model.PullRequest)
func (*Server) GetIssueFromGithub ¶
func (*Server) GetPullRequestFromGithub ¶
func (s *Server) GetPullRequestFromGithub(ctx context.Context, pullRequest *github.PullRequest, action string) (*model.PullRequest, error)
func (*Server) GetUpdateChecks ¶
func (*Server) IsBotUserFromCLAExclusionsList ¶
func (*Server) IsInBotBlockList ¶ added in v0.16.16
func (*Server) IsOrgMember ¶
func (*Server) RefreshMembers ¶
func (s *Server) RefreshMembers()
type TeamsService ¶ added in v0.5.8
type WebhookValidationError ¶
type WebhookValidationError struct {
// contains filtered or unexported fields
}
WebhookValidationError contains an error in the webhook payload.
func (*WebhookValidationError) Error ¶
func (e *WebhookValidationError) Error() string
Error implements the error interface.
Source Files ¶
- auto_merge.go
- autoassign.go
- block_pr_merge.go
- cherry_pick.go
- cla.go
- community.go
- config.go
- github.go
- github_client.go
- issue_comment_handler.go
- issue_handler.go
- metrics.go
- pr_from_issue_handler.go
- pull_request_handler.go
- rate_limit.go
- response_writer_wrapper.go
- review.go
- server.go
- translations.go
- update_branch.go
- utils.go
- validate_signature.go
- webhook.go