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, mpClient metapipeline.Client, 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.