Documentation
¶
Overview ¶
Package keeper contains a controller for managing a keeper pool of PRs. The controller will automatically retest PRs in the pool and merge them if they pass tests.
Index ¶
Constants ¶
const ( Wait Action = "WAIT" Trigger = "TRIGGER" TriggerBatch = "TRIGGER_BATCH" Merge = "MERGE" MergeBatch = "MERGE_BATCH" PoolBlocked = "BLOCKED" )
Constants for various actions the controller might take
const (
// StatusContextLabelEnvVar is the environment variable we look to for the overriding status context label.
StatusContextLabelEnvVar = "LIGHTHOUSE_KEEPER_STATUS_CONTEXT_LABEL"
)
Variables ¶
This section is empty.
Functions ¶
func GetStatusContextLabel ¶ added in v0.0.543
func GetStatusContextLabel() string
GetStatusContextLabel gets the label used for the keeper status context, defaulting to "keeper" if the env var above isn't set.
Types ¶
type Action ¶
type Action string
Action represents what actions the controller can take. It will take exactly one action each sync.
type Context ¶
type Context struct {
Context githubql.String
Description githubql.String
State githubql.StatusState
}
Context holds graphql response data for github contexts.
type Controller ¶
type Controller interface {
Sync() error
Shutdown()
GetPools() []Pool
ServeHTTP(w http.ResponseWriter, r *http.Request)
GetHistory() *history.History
}
Controller the interface for all keeper controllers whether regular or the GitHub App flavour which has to handle tokens differently
type DefaultController ¶
type DefaultController struct {
History *history.History
// contains filtered or unexported fields
}
DefaultController knows how to sync PRs and PJs.
func NewController ¶
func NewController(spcSync, spcStatus *scmprovider.Client, launcherClient launcher, tektonClient tektonclient.Interface, lighthouseClient clientset.Interface, ns string, cfg config.Getter, gc git.Client, maxRecordsPerPool int, historyURI, statusURI string, logger *logrus.Entry) (*DefaultController, error)
NewController makes a DefaultController out of the given clients.
func (*DefaultController) GetHistory ¶
func (c *DefaultController) GetHistory() *history.History
GetHistory returns the history
func (*DefaultController) GetPools ¶
func (c *DefaultController) GetPools() []Pool
GetPools returns the pool status
func (*DefaultController) ServeHTTP ¶
func (c *DefaultController) ServeHTTP(w http.ResponseWriter, r *http.Request)
func (*DefaultController) Shutdown ¶
func (c *DefaultController) Shutdown()
Shutdown signals the statusController to stop working and waits for it to finish its last update loop before terminating. DefaultController.Sync() should not be used after this function is called.
func (*DefaultController) Sync ¶
func (c *DefaultController) Sync() error
Sync runs one sync iteration.
type PRNode ¶
type PRNode struct {
PullRequest PullRequest `graphql:"... on PullRequest"`
}
PRNode a node containing a PR
type Pool ¶
type Pool struct {
Org string
Repo string
Branch string
// PRs with passing tests, pending tests, and missing or failed tests.
// Note that these results are rolled up. If all tests for a PR are passing
// except for one pending, it will be in PendingPRs.
SuccessPRs []PullRequest
PendingPRs []PullRequest
MissingPRs []PullRequest
// Empty if there is no pending batch.
BatchPending []PullRequest
// Which action did we last take, and to what target(s), if any.
Action Action
Target []PullRequest
Blockers []blockers.Blocker
Error string
}
Pool represents information about a keeper pool. There is one for every org/repo/branch combination that has PRs in the pool.
type PullRequest ¶
type PullRequest struct {
Number githubql.Int
Author struct {
Login githubql.String
}
BaseRef struct {
Name githubql.String
Prefix githubql.String
}
HeadRefName githubql.String `graphql:"headRefName"`
HeadRefOID githubql.String `graphql:"headRefOid"`
Mergeable githubql.MergeableState
Repository Repository
Commits struct {
Nodes []struct {
Commit Commit
}
} `graphql:"commits(last: 4)"`
Labels struct {
Nodes []struct {
Name githubql.String
}
} `graphql:"labels(first: 100)"`
Milestone *struct {
Title githubql.String
}
Body githubql.String
Title githubql.String
UpdatedAt githubql.DateTime
}
PullRequest holds graphql data about a PR, including its commits and their contexts.