Documentation ¶
Overview ¶
Package tide contains a controller for managing a tide 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" )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type Action ¶
type Action string
Action represents what actions the controller can take. It will take exactly one action each sync.
type Controller ¶
type Controller struct {
// contains filtered or unexported fields
}
Controller knows how to sync PRs and PJs.
func NewController ¶
func NewController(ghcSync, ghcStatus *github.Client, kc *kube.Client, ca *config.Agent, gc *git.Client, logger *logrus.Entry) *Controller
NewController makes a Controller out of the given clients.
func (*Controller) ServeHTTP ¶
func (c *Controller) ServeHTTP(w http.ResponseWriter, r *http.Request)
func (*Controller) Shutdown ¶
func (c *Controller) Shutdown()
Shutdown signals the statusController to stop working and waits for it to finish its last update loop before terminating. Controller.Sync() should not be used after this function is called.
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 }
Pool represents information about a tide 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 struct { Name githubql.String NameWithOwner githubql.String Owner struct { Login githubql.String } } Commits struct { Nodes []struct { Commit Commit } } `graphql:"commits(last: 4)"` Labels struct { Nodes []struct { Name githubql.String } } `graphql:"labels(first: 10)"` Milestone *struct { Title githubql.String } }