luci: go.chromium.org/luci/luci_notify/notify Index | Files

package notify

import "go.chromium.org/luci/luci_notify/notify"

Define the constants to use in notify

Index

Package Files

commits.go constants.go emailgen.go gitiles.go notify.go pubsub.go srcman.go tree_status.go

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

func BlamelistRepoWhiteset Uses

func BlamelistRepoWhiteset(notifications notifypb.Notifications) stringset.Set

BlamelistRepoWhiteset computes the aggregate repository whitelist for all blamelist notification configurations in a given set of notifications.

func BuildbucketPubSubHandler Uses

func BuildbucketPubSubHandler(ctx *router.Context, d *tq.Dispatcher) 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. Its primary purpose is to unwrap context boilerplate and deal with progress-stopping errors.

func Filter Uses

func Filter(n *notifypb.Notifications, oldStatus buildbucketpb.Status, newBuild *buildbucketpb.Build) notifypb.Notifications

Filter filters out Notification objects from Notifications by checking if we ShouldNotify based on two build statuses.

func InitDispatcher Uses

func InitDispatcher(d *tq.Dispatcher)

InitDispatcher registers the send email task with the given dispatcher.

func Notify Uses

func Notify(c context.Context, d *tq.Dispatcher, 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 SendEmail Uses

func SendEmail(c context.Context, task proto.Message) error

SendEmail is a push queue handler that attempts to send an email.

func ShouldNotify Uses

func ShouldNotify(n *notifypb.Notification, oldStatus buildbucketpb.Status, newBuild *buildbucketpb.Build) bool

ShouldNotify is the predicate function for whether a trigger's conditions have been met.

func UpdateTreeClosers Uses

func UpdateTreeClosers(c context.Context, build *buildbucketpb.Build) error

UpdateTreeClosers finds all the TreeClosers that care about a particular build, and updates their status according to the results of the build.

func UpdateTreeStatus Uses

func UpdateTreeStatus(c *router.Context)

UpdateTreeStatus is the HTTP handler triggered by cron when it's time to check tree closers and update tree status if necessary.

type Build Uses

type Build struct {
    BuildbucketHostname string
    buildbucketpb.Build
    EmailNotify []EmailNotify
}

Build is buildbucketpb.Build along with the parsed 'email_notify' values.

type Checkout Uses

type Checkout map[string]string

Checkout represents a Git checkout of multiple repositories. It is a mapping of repository URLs to Git revisions.

func NewCheckout Uses

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 Uses

func (c Checkout) Filter(whiteset stringset.Set) Checkout

Filter filters out repositories from the Checkout which are not in the whitelist and returns a new Checkout.

func (Checkout) ToGitilesCommits Uses

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 Uses

type CheckoutFunc func(context.Context, *Build) (Checkout, error)

CheckoutFunc is a function that given a Build, produces a source checkout related to that build.

type EmailNotify Uses

type EmailNotify struct {
    Email    string `json:"email"`
    Template string `json:"template"`
}

EmailNotify contains information for delivery and personalization of notification emails.

func ComputeRecipients Uses

func ComputeRecipients(c context.Context, notifications notifypb.Notifications, 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 Uses

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 Uses

type Logs map[string][]*gitpb.Commit

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 Uses

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 Uses

func (l Logs) Blamelist(template string) []EmailNotify

Blamelist computes a set of email notifications from the Logs.

func (Logs) Filter Uses

func (l Logs) Filter(whiteset stringset.Set) Logs

Filter filters out repositories from the Logs which are not in the whitelist and returns a new Logs.

Package notify imports 48 packages (graph) and is imported by 1 packages. Updated 2020-04-07. Refresh now. Tools for package owners.