Documentation ¶
Overview ¶
Define the constants to use in notify
Index ¶
- Constants
- func BlamelistRepoAllowset(notifications *notifypb.Notifications) stringset.Set
- func BuildbucketPubSubHandler(ctx context.Context, message pubsub.Message, ...) (err error)
- func InitDispatcher(d *tq.Dispatcher)
- func NewHTTPTreeStatusClient(ctx context.Context, luciTreeStatusHost string) (*httpTreeStatusClient, error)
- func Notify(c context.Context, recipients []EmailNotify, ...) error
- func SendEmail(c context.Context, task proto.Message) error
- func ShouldNotify(ctx context.Context, n *notifypb.Notification, oldStatus buildbucketpb.Status, ...) (bool, []*buildbucketpb.Step)
- func UpdateTreeClosers(c context.Context, build *Build, oldStatus buildbucketpb.Status) error
- func UpdateTreeStatus(ctx context.Context) error
- type Build
- type Checkout
- type CheckoutFunc
- type EmailNotify
- type HistoryFunc
- type Logs
- type ToNotify
Constants ¶
const LOGDOG_REQUEST_TIMEOUT = 30 * time.Second
As Logdog request is a component of pubsub post request, LOGDOG_REQUEST_TIMEOUT should be smaller than PUBSUB_POST_REQUEST_TIMEOUT
const PUBSUB_POST_REQUEST_TIMEOUT = 60 * time.Second
Variables ¶
This section is empty.
Functions ¶
func BlamelistRepoAllowset ¶
func BlamelistRepoAllowset(notifications *notifypb.Notifications) stringset.Set
BlamelistRepoAllowset computes the aggregate repository allowlist for all blamelist notification configurations in a given set of notifications.
func BuildbucketPubSubHandler ¶
func BuildbucketPubSubHandler(ctx context.Context, message pubsub.Message, buildMsg *buildbucketpb.BuildsV2PubSub) (err error)
BuildbucketPubSubHandler is the main entrypoint for a new update from buildbucket's pubsub.
This handler delegates the actual processing of the build to handleBuild.
func InitDispatcher ¶
func InitDispatcher(d *tq.Dispatcher)
InitDispatcher registers the send email task with the given dispatcher.
func NewHTTPTreeStatusClient ¶
func Notify ¶
func Notify(c context.Context, recipients []EmailNotify, templateParams *notifypb.TemplateInput) error
Notify discovers, consolidates and filters recipients from a Builder's notifications, and 'email_notify' properties, then dispatches notifications if necessary. Does not dispatch a notification for same email, template and build more than once. Ignores current transaction in c, if any.
func ShouldNotify ¶
func ShouldNotify(ctx context.Context, n *notifypb.Notification, oldStatus buildbucketpb.Status, newBuild *buildbucketpb.Build) (bool, []*buildbucketpb.Step)
ShouldNotify determines whether a trigger's conditions have been met, and returns the list of steps matching the filters on the notification, if any.
func UpdateTreeClosers ¶
UpdateTreeClosers finds all the TreeClosers that care about a particular build, and updates their status according to the results of the build.
func UpdateTreeStatus ¶
UpdateTreeStatus is the HTTP handler triggered by cron when it's time to check tree closers and update tree status if necessary.
Types ¶
type Build ¶
type Build struct { BuildbucketHostname string buildbucketpb.Build EmailNotify []EmailNotify }
Build is buildbucketpb.Build along with the parsed 'email_notify' values.
type Checkout ¶
Checkout represents a Git checkout of multiple repositories. It is a mapping of repository URLs to Git revisions.
func NewCheckout ¶
func NewCheckout(commits *notifypb.GitilesCommits) Checkout
NewCheckout creates a new Checkout populated with the repositories and revision found in the GitilesCommits object.
func (Checkout) Filter ¶
Filter filters out repositories from the Checkout which are not in the allowlist and returns a new Checkout.
func (Checkout) ToGitilesCommits ¶
func (c Checkout) ToGitilesCommits() *notifypb.GitilesCommits
ToGitilesCommits converts the Checkout into a set of GitilesCommits which may be stored as part of a config.Builder.
type CheckoutFunc ¶
CheckoutFunc is a function that given a Build, produces a source checkout related to that build.
type EmailNotify ¶
type EmailNotify struct { Email string `json:"email"` Template string `json:"template"` MatchingSteps []*buildbucketpb.Step }
EmailNotify contains information for delivery and personalization of notification emails.
func ComputeRecipients ¶
func ComputeRecipients(c context.Context, notifications []ToNotify, inputBlame []*gitpb.Commit, outputBlame Logs) []EmailNotify
ComputeRecipients computes the set of recipients given a set of notifications, and potentially "input" and "output" blamelists.
An "input" blamelist is computed from the input commit to a build, while an "output" blamelist is derived from output commits.
type HistoryFunc ¶
type HistoryFunc func(ctx context.Context, luciProject, gerritHost, gerritProject, oldRevision, newRevision string) ([]*gitpb.Commit, error)
HistoryFunc is a function that gets a list of commits from Gitiles for a specific repository, between oldRevision and newRevision, inclusive.
If oldRevision is not reachable from newRevision, returns an empty slice and nil error.
type Logs ¶
Logs represents a set of Git diffs between two Checkouts.
It is a mapping of repository URLs to a list of Git commits, representing the Git log for that repository.
func ComputeLogs ¶
func ComputeLogs(c context.Context, luciProject string, oldCheckout, newCheckout Checkout, history HistoryFunc) (Logs, error)
ComputeLogs produces a set of Git diffs between oldCheckout and newCheckout, using the repositories in the newCheckout. historyFunc is used to grab the Git history.
func (Logs) Blamelist ¶
func (l Logs) Blamelist(template string) []EmailNotify
Blamelist computes a set of email notifications from the Logs.
type ToNotify ¶
type ToNotify struct { Notification *notifypb.Notification MatchingSteps []*buildbucketpb.Step }
ToNotify encapsulates a notification, along with the list of matching steps necessary to render templates for that notification. It's used to pass this data between the filtering/matching code and the code responsible for sending emails and updating tree status.
func Filter ¶
func Filter(ctx context.Context, n *notifypb.Notifications, oldStatus buildbucketpb.Status, newBuild *buildbucketpb.Build) []ToNotify
Filter filters out Notification objects from Notifications by checking if we ShouldNotify based on two build statuses.