in slack/main.go [107:137]
func (s *slackNotifier) writeMessage() (*slack.WebhookMessage, error) {
build := s.tmplView.Build
_, err := notifiers.AddUTMParams(build.LogUrl, notifiers.ChatMedium)
if err != nil {
return nil, fmt.Errorf("failed to add UTM params: %w", err)
}
var clr string
switch build.Status {
case cbpb.Build_SUCCESS:
clr = "#22bb33"
case cbpb.Build_FAILURE, cbpb.Build_INTERNAL_ERROR, cbpb.Build_TIMEOUT:
clr = "#bb2124"
default:
clr = "#f0ad4e"
}
var buf bytes.Buffer
if err := s.tmpl.Execute(&buf, s.tmplView); err != nil {
return nil, err
}
var blocks slack.Blocks
err = blocks.UnmarshalJSON(buf.Bytes())
if err != nil {
return nil, fmt.Errorf("failed to unmarshal templating JSON: %w", err)
}
return &slack.WebhookMessage{Attachments: []slack.Attachment{{Color: clr, Blocks: blocks}}}, nil
}