diff --git a/services/logs2notifications/go.mod b/services/logs2notifications/go.mod
index b205e9aa44..1a3a5b48ba 100644
--- a/services/logs2notifications/go.mod
+++ b/services/logs2notifications/go.mod
@@ -5,7 +5,6 @@ go 1.22
require (
github.com/aws/aws-sdk-go v1.55.5
github.com/cheshir/go-mq/v2 v2.0.1
- github.com/dgrijalva/jwt-go v3.2.0+incompatible
github.com/matryer/try v0.0.0-20161228173917-9ac251b645a2
github.com/slack-go/slack v0.13.1
github.com/uselagoon/machinery v0.0.29
diff --git a/services/logs2notifications/go.sum b/services/logs2notifications/go.sum
index 3814b9458d..7ca567c854 100644
--- a/services/logs2notifications/go.sum
+++ b/services/logs2notifications/go.sum
@@ -306,7 +306,6 @@ github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/denverdino/aliyungo v0.0.0-20190125010748-a747050bb1ba/go.mod h1:dV8lFg6daOBZbT6/BDGIz6Y3WFGn8juu6G+CQ6LHtl0=
github.com/dgrijalva/jwt-go v0.0.0-20170104182250-a601269ab70c/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
-github.com/dgrijalva/jwt-go v3.2.0+incompatible h1:7qlOGliEKZXTDg6OTjfoBKDXWrumCAMpl/TFQ4/5kLM=
github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no=
github.com/dnaeon/go-vcr v1.0.1/go.mod h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyGc8n1E=
diff --git a/services/logs2notifications/internal/handler/email_events.go b/services/logs2notifications/internal/handler/email_events.go
index 251abb5be3..b656a33915 100644
--- a/services/logs2notifications/internal/handler/email_events.go
+++ b/services/logs2notifications/internal/handler/email_events.go
@@ -5,6 +5,7 @@ import (
"crypto/tls"
"fmt"
"log"
+ "regexp"
"strconv"
"strings"
"text/template"
@@ -96,9 +97,9 @@ func (h *Messaging) processEmailTemplates(notification *Notification) (string, s
mainHTMLTpl = `{{.OpenshiftProject}}
not deleted.`
plainTextTpl = `[{{.ProjectName}}] {{.OpenshiftProject}} not deleted. {{.Error}}`
case "deployError":
- mainHTMLTpl = `[{{.ProjectName}}] {{.BranchName}}
{{ if ne .ShortSha "" }} ({{.ShortSha}}){{end}} Build {{.BuildName}}
error.
+ mainHTMLTpl = `[{{.ProjectName}}] {{.BranchName}}
{{ if ne .ShortSha "" }} ({{.ShortSha}}){{end}} Build {{.BuildName}}
failed at build step ` + "`{{.BuildStep}}`" + `.
{{if ne .LogLink ""}} Logs{{end}}`
- plainTextTpl = `[{{.ProjectName}}] {{.BranchName}}{{ if ne .ShortSha "" }} ({{.ShortSha}}){{end}} Build {{.BuildName}} error.
+ plainTextTpl = `[{{.ProjectName}}] {{.BranchName}}{{ if ne .ShortSha "" }} ({{.ShortSha}}){{end}} Build {{.BuildName}} failed at build step {{.BuildStep}}.
{{if ne .LogLink ""}} [Logs]({{.LogLink}}){{end}}`
subject += fmt.Sprintf("[%s] %s Build %s error.",
notification.Meta.ProjectName,
@@ -106,7 +107,13 @@ func (h *Messaging) processEmailTemplates(notification *Notification) (string, s
notification.Meta.BuildName,
)
case "deployFinished":
- mainHTMLTpl = `[{{.ProjectName}}] {{.BranchName}}
{{ if ne .ShortSha "" }} ({{.ShortSha}}){{end}} Build {{.BuildName}}
complete. {{if ne .LogLink ""}}Logs{{end}}
+ match, _ := regexp.MatchString(".*WithWarnings$", notification.Meta.BuildStep)
+ msg := "completed"
+ if match {
+ emoji = warningEmoji
+ msg = "completed with warnings, check the build log for more information"
+ }
+ mainHTMLTpl = `[{{.ProjectName}}] {{.BranchName}}
{{ if ne .ShortSha "" }} ({{.ShortSha}}){{end}} Build {{.BuildName}}
` + msg + `. {{if ne .LogLink ""}}Logs{{end}}
@@ -115,14 +122,15 @@ func (h *Messaging) processEmailTemplates(notification *Notification) (string, s
{{.Route}}
{{range .Routes}}{{if ne . $.Route}}
{{.}}
{{end}}{{end}}`
- plainTextTpl = `[{{.ProjectName}}] {{.BranchName}}{{ if ne .ShortSha "" }} ({{.ShortSha}}){{end}} Build {{.BuildName}} complete. {{if ne .LogLink ""}}[Logs]({{.LogLink}}){{end}}
+ plainTextTpl = `[{{.ProjectName}}] {{.BranchName}}{{ if ne .ShortSha "" }} ({{.ShortSha}}){{end}} Build {{.BuildName}} ` + msg + `. {{if ne .LogLink ""}}[Logs]({{.LogLink}}){{end}}
{{.Route}}
{{range .Routes}}{{if ne . $.Route}}{{.}}
{{end}}{{end}}`
- subject += fmt.Sprintf("[%s] %s Build %s complete.",
+ subject += fmt.Sprintf("[%s] %s Build %s %s.",
notification.Meta.ProjectName,
notification.Meta.BranchName,
notification.Meta.BuildName,
+ msg,
)
case "problemNotification":
eventSplit := strings.Split(notification.Event, ":")
@@ -221,70 +229,52 @@ func getEmailEvent(msgEvent string) (string, string, string, error) {
}
var emailEvent = map[string]EventMap{
- "github:pull_request:opened:handled": {Emoji: "ℹ️", Color: "#E8E8E8", Template: "mergeRequestOpened"},
- "gitlab:merge_request:opened:handled": {Emoji: "ℹ️", Color: "#E8E8E8", Template: "mergeRequestOpened"},
- "bitbucket:pullrequest:created:opened:handled": {Emoji: "ℹ️", Color: "#E8E8E8", Template: "mergeRequestOpened"}, //not in slack
- "bitbucket:pullrequest:created:handled": {Emoji: "ℹ️", Color: "#E8E8E8", Template: "mergeRequestOpened"}, //not in teams
+ "github:pull_request:opened:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "mergeRequestOpened"},
+ "gitlab:merge_request:opened:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "mergeRequestOpened"},
+ "bitbucket:pullrequest:created:opened:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "mergeRequestOpened"}, //not in slack
+ "bitbucket:pullrequest:created:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "mergeRequestOpened"}, //not in teams
- "github:pull_request:synchronize:handled": {Emoji: "ℹ️", Color: "#E8E8E8", Template: "mergeRequestUpdated"},
- "gitlab:merge_request:updated:handled": {Emoji: "ℹ️", Color: "#E8E8E8", Template: "mergeRequestUpdated"},
- "bitbucket:pullrequest:updated:opened:handled": {Emoji: "ℹ️", Color: "#E8E8E8", Template: "mergeRequestUpdated"}, //not in slack
- "bitbucket:pullrequest:updated:handled": {Emoji: "ℹ️", Color: "#E8E8E8", Template: "mergeRequestUpdated"}, //not in teams
+ "github:pull_request:synchronize:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "mergeRequestUpdated"},
+ "gitlab:merge_request:updated:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "mergeRequestUpdated"},
+ "bitbucket:pullrequest:updated:opened:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "mergeRequestUpdated"}, //not in slack
+ "bitbucket:pullrequest:updated:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "mergeRequestUpdated"}, //not in teams
- "github:pull_request:closed:handled": {Emoji: "ℹ️", Color: "#E8E8E8", Template: "mergeRequestClosed"},
- "bitbucket:pullrequest:fulfilled:handled": {Emoji: "ℹ️", Color: "#E8E8E8", Template: "mergeRequestClosed"},
- "bitbucket:pullrequest:rejected:handled": {Emoji: "ℹ️", Color: "#E8E8E8", Template: "mergeRequestClosed"},
- "gitlab:merge_request:closed:handled": {Emoji: "ℹ️", Color: "#E8E8E8", Template: "mergeRequestClosed"},
+ "github:pull_request:closed:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "mergeRequestClosed"},
+ "bitbucket:pullrequest:fulfilled:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "mergeRequestClosed"},
+ "bitbucket:pullrequest:rejected:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "mergeRequestClosed"},
+ "gitlab:merge_request:closed:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "mergeRequestClosed"},
- "github:delete:handled": {Emoji: "ℹ️", Color: "#E8E8E8", Template: "deleteEnvironment"},
- "gitlab:remove:handled": {Emoji: "ℹ️", Color: "#E8E8E8", Template: "deleteEnvironment"}, //not in slack
- "bitbucket:delete:handled": {Emoji: "ℹ️", Color: "#E8E8E8", Template: "deleteEnvironment"}, //not in slack
- "api:deleteEnvironment": {Emoji: "ℹ️", Color: "#E8E8E8", Template: "deleteEnvironment"}, //not in teams
+ "github:delete:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "deleteEnvironment"},
+ "gitlab:remove:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "deleteEnvironment"}, //not in slack
+ "bitbucket:delete:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "deleteEnvironment"}, //not in slack
+ "api:deleteEnvironment": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "deleteEnvironment"}, //not in teams
- "github:push:handled": {Emoji: "ℹ️", Color: "#E8E8E8", Template: "repoPushHandled"},
- "bitbucket:repo:push:handled": {Emoji: "ℹ️", Color: "#E8E8E8", Template: "repoPushHandled"},
- "gitlab:push:handled": {Emoji: "ℹ️", Color: "#E8E8E8", Template: "repoPushHandled"},
+ "github:push:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "repoPushHandled"},
+ "bitbucket:repo:push:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "repoPushHandled"},
+ "gitlab:push:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "repoPushHandled"},
- "github:push:skipped": {Emoji: "ℹ️", Color: "#E8E8E8", Template: "repoPushSkipped"},
- "gitlab:push:skipped": {Emoji: "ℹ️", Color: "#E8E8E8", Template: "repoPushSkipped"},
- "bitbucket:push:skipped": {Emoji: "ℹ️", Color: "#E8E8E8", Template: "repoPushSkipped"},
+ "github:push:skipped": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "repoPushSkipped"},
+ "gitlab:push:skipped": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "repoPushSkipped"},
+ "bitbucket:push:skipped": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "repoPushSkipped"},
- "api:deployEnvironmentLatest": {Emoji: "ℹ️", Color: "#E8E8E8", Template: "deployEnvironment"},
- "api:deployEnvironmentBranch": {Emoji: "ℹ️", Color: "#E8E8E8", Template: "deployEnvironment"},
+ "api:deployEnvironmentLatest": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "deployEnvironment"},
+ "api:deployEnvironmentBranch": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "deployEnvironment"},
- "task:deploy-openshift:finished": {Emoji: "✅", Color: "lawngreen", Template: "deployFinished"},
- "task:remove-openshift-resources:finished": {Emoji: "✅", Color: "lawngreen", Template: "deployFinished"},
- "task:builddeploy-openshift:complete": {Emoji: "✅", Color: "lawngreen", Template: "deployFinished"},
- "task:builddeploy-kubernetes:complete": {Emoji: "✅", Color: "lawngreen", Template: "deployFinished"}, //not in teams
+ "task:deploy-openshift:finished": {Emoji: successEmoji, Color: "lawngreen", Template: "deployFinished"},
+ "task:remove-openshift-resources:finished": {Emoji: successEmoji, Color: "lawngreen", Template: "deployFinished"},
+ "task:builddeploy-openshift:complete": {Emoji: successEmoji, Color: "lawngreen", Template: "deployFinished"},
+ "task:builddeploy-kubernetes:complete": {Emoji: successEmoji, Color: "lawngreen", Template: "deployFinished"}, //not in teams
- "task:remove-openshift:finished": {Emoji: "✅", Color: "lawngreen", Template: "removeFinished"},
- "task:remove-kubernetes:finished": {Emoji: "✅", Color: "lawngreen", Template: "removeFinished"},
+ "task:remove-openshift:finished": {Emoji: successEmoji, Color: "lawngreen", Template: "removeFinished"},
+ "task:remove-kubernetes:finished": {Emoji: successEmoji, Color: "lawngreen", Template: "removeFinished"},
"task:remove-openshift:error": {Emoji: "‼️", Color: "red", Template: "deployError"},
"task:remove-kubernetes:error": {Emoji: "‼️", Color: "red", Template: "deployError"},
"task:builddeploy-kubernetes:failed": {Emoji: "‼️", Color: "red", Template: "deployError"}, //not in teams
"task:builddeploy-openshift:failed": {Emoji: "‼️", Color: "red", Template: "deployError"},
- "github:pull_request:closed:CannotDeleteProductionEnvironment": {Emoji: "⚠️", Color: "gold", Template: "notDeleted"},
- "github:push:CannotDeleteProductionEnvironment": {Emoji: "⚠️", Color: "gold", Template: "notDeleted"},
- "bitbucket:repo:push:CannotDeleteProductionEnvironment": {Emoji: "⚠️", Color: "gold", Template: "notDeleted"},
- "gitlab:push:CannotDeleteProductionEnvironment": {Emoji: "⚠️", Color: "gold", Template: "notDeleted"},
-
- // deprecated
- // "rest:remove:CannotDeleteProductionEnvironment": {Emoji: "⚠️", Color: "gold"},
- // "rest:deploy:receive": {Emoji: "ℹ️", Color: "#E8E8E8"},
- // "rest:remove:receive": {Emoji: "ℹ️", Color: "#E8E8E8"},
- // "rest:promote:receive": {Emoji: "ℹ️", Color: "#E8E8E8"},
- // "rest:pullrequest:deploy": {Emoji: "ℹ️", Color: "#E8E8E8"},
- // "rest:pullrequest:remove": {Emoji: "ℹ️", Color: "#E8E8E8"},
-
- // deprecated
- // "task:deploy-openshift:error": {Emoji: "‼️", Color: "red", Template: "deployError"},
- // "task:remove-openshift-resources:error": {Emoji: "‼️", Color: "red", Template: "deployError"},
-
- // deprecated
- // "task:deploy-openshift:retry": {Emoji: "⚠️", Color: "gold", Template: "removeRetry"},
- // "task:remove-openshift:retry": {Emoji: "⚠️", Color: "gold", Template: "removeRetry"},
- // "task:remove-kubernetes:retry": {Emoji: "⚠️", Color: "gold", Template: "removeRetry"},
- // "task:remove-openshift-resources:retry": {Emoji: "⚠️", Color: "gold", Template: "removeRetry"},
+ "github:pull_request:closed:CannotDeleteProductionEnvironment": {Emoji: warningEmoji, Color: "gold", Template: "notDeleted"},
+ "github:push:CannotDeleteProductionEnvironment": {Emoji: warningEmoji, Color: "gold", Template: "notDeleted"},
+ "bitbucket:repo:push:CannotDeleteProductionEnvironment": {Emoji: warningEmoji, Color: "gold", Template: "notDeleted"},
+ "gitlab:push:CannotDeleteProductionEnvironment": {Emoji: warningEmoji, Color: "gold", Template: "notDeleted"},
}
diff --git a/services/logs2notifications/internal/handler/main.go b/services/logs2notifications/internal/handler/main.go
index 8c81d5f6ce..a9051906fc 100644
--- a/services/logs2notifications/internal/handler/main.go
+++ b/services/logs2notifications/internal/handler/main.go
@@ -98,6 +98,8 @@ type Notification struct {
Timestamp string `json:"timestamp"`
ShortSha string `json:"shortSha"`
BuildName string `json:"buildName"`
+ BuildPhase string `json:"buildPhase"`
+ BuildStep string `json:"buildStep"`
CommitURL string `json:"commitUrl"`
Environment string `json:"environment"`
EnvironmentID string `json:"environmentId"`
@@ -134,6 +136,13 @@ type EventMap struct {
Template string `json:"template"`
}
+var (
+ warningEmoji string = "⚠️"
+ infoEmoji string = "ℹ️"
+ successEmoji string = "✅"
+ failEmoji string = "🛑"
+)
+
// NewMessaging returns a messaging with config
func NewMessaging(config mq.Config,
lagoonAPI LagoonAPI,
diff --git a/services/logs2notifications/internal/handler/main_test.go b/services/logs2notifications/internal/handler/main_test.go
index f10ad3b316..36772772da 100644
--- a/services/logs2notifications/internal/handler/main_test.go
+++ b/services/logs2notifications/internal/handler/main_test.go
@@ -2,7 +2,7 @@ package handler
import (
"encoding/json"
- "io/ioutil"
+ "os"
"testing"
mq "github.com/cheshir/go-mq/v2"
@@ -107,6 +107,16 @@ func TestProcessing(t *testing.T) {
teams: "testdata/deployError/teams.txt",
webhook: "testdata/deployError/webhook.txt",
},
+ "deployErrorImageBuild": {
+ description: "test github repo push deleted events",
+ input: "testdata/input.deployErrorImageBuild.json",
+ slack: "testdata/deployErrorImageBuild/slack.txt",
+ rocketchat: "testdata/deployErrorImageBuild/rocketchat.txt",
+ emailhtml: "testdata/deployErrorImageBuild/emailhtml.txt",
+ emailplain: "testdata/deployErrorImageBuild/emailplain.txt",
+ teams: "testdata/deployErrorImageBuild/teams.txt",
+ webhook: "testdata/deployErrorImageBuild/webhook.txt",
+ },
"deployFinished": {
description: "test github repo push deleted events",
input: "testdata/input.deployFinished.json",
@@ -117,6 +127,16 @@ func TestProcessing(t *testing.T) {
teams: "testdata/deployFinished/teams.txt",
webhook: "testdata/deployFinished/webhook.txt",
},
+ "deployFinishedWithWarnings": {
+ description: "test github repo push deleted events",
+ input: "testdata/input.deployFinishedWithWarnings.json",
+ slack: "testdata/deployFinishedWithWarnings/slack.txt",
+ rocketchat: "testdata/deployFinishedWithWarnings/rocketchat.txt",
+ emailhtml: "testdata/deployFinishedWithWarnings/emailhtml.txt",
+ emailplain: "testdata/deployFinishedWithWarnings/emailplain.txt",
+ teams: "testdata/deployFinishedWithWarnings/teams.txt",
+ webhook: "testdata/deployFinishedWithWarnings/webhook.txt",
+ },
"mergeRequestClosed": {
description: "test github repo push handled events",
input: "testdata/input.mergeRequestClosed.json",
@@ -157,7 +177,7 @@ func TestProcessing(t *testing.T) {
for name, tc := range testCases {
t.Run(name, func(tt *testing.T) {
// read the input into a the notification struct
- inputBytes, err := ioutil.ReadFile(tc.input) // just pass the file name
+ inputBytes, err := os.ReadFile(tc.input) // just pass the file name
if err != nil {
tt.Fatalf("unexpected error %v", err)
}
@@ -165,7 +185,7 @@ func TestProcessing(t *testing.T) {
json.Unmarshal(inputBytes, notification)
// process slack template
- resultBytes, err := ioutil.ReadFile(tc.slack) // just pass the file name
+ resultBytes, err := os.ReadFile(tc.slack) // just pass the file name
if err != nil {
tt.Fatalf("unexpected error %v", err)
}
@@ -174,11 +194,11 @@ func TestProcessing(t *testing.T) {
tt.Fatalf("unexpected error %v", err)
}
if message != string(resultBytes) {
- tt.Fatalf("message doesn't match, wanted `%s` got `%s`", message, string(resultBytes))
+ tt.Fatalf("slack message doesn't match, wanted `%s` got `%s`", message, string(resultBytes))
}
// process rocketchat template
- resultBytes, err = ioutil.ReadFile(tc.rocketchat) // just pass the file name
+ resultBytes, err = os.ReadFile(tc.rocketchat) // just pass the file name
if err != nil {
tt.Fatalf("unexpected error %v", err)
}
@@ -187,15 +207,15 @@ func TestProcessing(t *testing.T) {
tt.Fatalf("unexpected error %v", err)
}
if message != string(resultBytes) {
- tt.Fatalf("message doesn't match, wanted `%s` got `%s`", message, string(resultBytes))
+ tt.Fatalf("rocketchat message doesn't match, wanted `%s` got `%s`", message, string(resultBytes))
}
// process email templates
- resultBytesHTML, err := ioutil.ReadFile(tc.emailhtml) // just pass the file name
+ resultBytesHTML, err := os.ReadFile(tc.emailhtml) // just pass the file name
if err != nil {
tt.Fatalf("unexpected error %v", err)
}
- resultBytesPlainText, err := ioutil.ReadFile(tc.emailplain) // just pass the file name
+ resultBytesPlainText, err := os.ReadFile(tc.emailplain) // just pass the file name
if err != nil {
tt.Fatalf("unexpected error %v", err)
}
@@ -204,14 +224,14 @@ func TestProcessing(t *testing.T) {
tt.Fatalf("unexpected error %v", err)
}
if htmlMessage != string(resultBytesHTML) {
- tt.Fatalf("html doesn't match, wanted `%s` got `%s`", string(htmlMessage), string(resultBytes))
+ tt.Fatalf("html doesn't match, wanted `%s` got `%s`", string(htmlMessage), string(resultBytesHTML))
}
if plaintextMessage != string(resultBytesPlainText) {
- tt.Fatalf("plaintextmessage doesn't match, wanted `%s` got `%s`", string(plaintextMessage), string(resultBytes))
+ tt.Fatalf("plaintextmessage doesn't match, wanted `%s` got `%s`", string(plaintextMessage), string(resultBytesPlainText))
}
// process teams template
- resultBytes, err = ioutil.ReadFile(tc.teams) // just pass the file name
+ resultBytes, err = os.ReadFile(tc.teams) // just pass the file name
if err != nil {
tt.Fatalf("unexpected error %v", err)
}
@@ -220,12 +240,12 @@ func TestProcessing(t *testing.T) {
tt.Fatalf("unexpected error %v", err)
}
if message != string(resultBytes) {
- tt.Fatalf("message doesn't match, wanted `%s` got `%s`", message, string(resultBytes))
+ tt.Fatalf("teams message doesn't match, wanted `%s` got `%s`", message, string(resultBytes))
}
// process webhook template
if tc.webhook != "" {
- resultBytes, err = ioutil.ReadFile(tc.webhook) // just pass the file name
+ resultBytes, err = os.ReadFile(tc.webhook) // just pass the file name
if err != nil {
tt.Fatalf("unexpected error %v", err)
}
@@ -235,7 +255,7 @@ func TestProcessing(t *testing.T) {
}
messageBytes, _ := json.Marshal(&message)
if string(messageBytes) != string(resultBytes) {
- tt.Fatalf("message doesn't match, wanted `%s` got `%s`", string(messageBytes), string(resultBytes))
+ tt.Fatalf("webhook message doesn't match, wanted `%s` got `%s`", string(messageBytes), string(resultBytes))
}
}
})
diff --git a/services/logs2notifications/internal/handler/microsoftteams_events.go b/services/logs2notifications/internal/handler/microsoftteams_events.go
index bd97a9e82e..8096e3087f 100644
--- a/services/logs2notifications/internal/handler/microsoftteams_events.go
+++ b/services/logs2notifications/internal/handler/microsoftteams_events.go
@@ -6,6 +6,7 @@ import (
"fmt"
"log"
"net/http"
+ "regexp"
"strings"
"text/template"
)
@@ -71,9 +72,15 @@ func (h *Messaging) processMicrosoftTeamsTemplate(notification *Notification) (s
case "notDeleted":
teamsTpl = "`{{.BranchName}}`" + ` not deleted. {{.Error}}`
case "deployError":
- teamsTpl = "`{{.BranchName}}`" + `{{ if ne .ShortSha "" }} ({{.ShortSha}}){{end}} Build ` + "`{{.BuildName}}`" + ` Failed. {{if ne .LogLink ""}} [Logs]({{.LogLink}}){{end}}`
+ teamsTpl = "`{{.BranchName}}`" + `{{ if ne .ShortSha "" }} ({{.ShortSha}}){{end}} Build ` + "`{{.BuildName}}`" + ` failed at build step ` + "`{{.BuildStep}}`" + `. {{if ne .LogLink ""}} [Logs]({{.LogLink}}){{end}}`
case "deployFinished":
- teamsTpl = "`{{.BranchName}}`" + `{{ if ne .ShortSha "" }} ({{.ShortSha}}){{end}} Build ` + "`{{.BuildName}}`" + ` Succeeded. {{if ne .LogLink ""}} [Logs]({{.LogLink}}){{end}}
+ match, _ := regexp.MatchString(".*WithWarnings$", notification.Meta.BuildStep)
+ msg := "Succeeded"
+ if match {
+ emoji = ":warning:"
+ msg = "Succeeded with warnings, check the build log for more information"
+ }
+ teamsTpl = "`{{.BranchName}}`" + `{{ if ne .ShortSha "" }} ({{.ShortSha}}){{end}} Build ` + "`{{.BuildName}}` " + msg + `. {{if ne .LogLink ""}} [Logs]({{.LogLink}}){{end}}
* {{.Route}}{{range .Routes}}{{if ne . $.Route}}* {{.}}{{end}}
{{end}}`
case "problemNotification":
@@ -187,22 +194,4 @@ var microsoftTeamsEvent = map[string]EventMap{
"github:push:CannotDeleteProductionEnvironment": {Emoji: ":warning:", Color: "gold", Template: "notDeleted"},
"bitbucket:repo:push:CannotDeleteProductionEnvironment": {Emoji: ":warning:", Color: "gold", Template: "notDeleted"},
"gitlab:push:CannotDeleteProductionEnvironment": {Emoji: ":warning:", Color: "gold", Template: "notDeleted"},
-
- // deprecated
- // "rest:remove:CannotDeleteProductionEnvironment": {Emoji: ":warning:", Color: "gold"},
- // "rest:deploy:receive": {Emoji: ":information_source:", Color: "#E8E8E8"},
- // "rest:remove:receive": {Emoji: ":information_source:", Color: "#E8E8E8"},
- // "rest:promote:receive": {Emoji: ":information_source:", Color: "#E8E8E8"},
- // "rest:pullrequest:deploy": {Emoji: ":information_source:", Color: "#E8E8E8"},
- // "rest:pullrequest:remove": {Emoji: ":information_source:", Color: "#E8E8E8"},
-
- // deprecated
- // "task:deploy-openshift:error": {Emoji: ":bangbang:", Color: "red", Template: "deployError"},
- // "task:remove-openshift-resources:error": {Emoji: ":bangbang:", Color: "red", Template: "deployError"},
-
- // deprecated
- // "task:deploy-openshift:retry": {Emoji: ":warning:", Color: "gold", Template: "removeRetry"},
- // "task:remove-openshift:retry": {Emoji: ":warning:", Color: "gold", Template: "removeRetry"},
- // "task:remove-kubernetes:retry": {Emoji: ":warning:", Color: "gold", Template: "removeRetry"},
- // "task:remove-openshift-resources:retry": {Emoji: ":warning:", Color: "gold", Template: "removeRetry"},
}
diff --git a/services/logs2notifications/internal/handler/rocketchat_events.go b/services/logs2notifications/internal/handler/rocketchat_events.go
index 4e5c6c237a..421b953680 100644
--- a/services/logs2notifications/internal/handler/rocketchat_events.go
+++ b/services/logs2notifications/internal/handler/rocketchat_events.go
@@ -6,6 +6,7 @@ import (
"fmt"
"log"
"net/http"
+ "regexp"
"strings"
"text/template"
)
@@ -75,9 +76,15 @@ func (h *Messaging) processRocketChatTemplate(notification *Notification) (strin
case "notDeleted":
rcTpl = `*[{{.ProjectName}}]* ` + "`{{.BranchName}}`" + ` not deleted. {{.Error}}`
case "deployError":
- rcTpl = `*[{{.ProjectName}}]* ` + "`{{.BranchName}}`" + `{{ if ne .ShortSha "" }} ({{.ShortSha}}){{end}} Build ` + "`{{.BuildName}}`" + ` Failed. {{if ne .LogLink ""}} [Logs]({{.LogLink}}){{end}}`
+ rcTpl = `*[{{.ProjectName}}]* ` + "`{{.BranchName}}`" + `{{ if ne .ShortSha "" }} ({{.ShortSha}}){{end}} Build ` + "`{{.BuildName}}`" + ` failed at build step ` + "`{{.BuildStep}}`" + `. {{if ne .LogLink ""}} [Logs]({{.LogLink}}){{end}}`
case "deployFinished":
- rcTpl = `*[{{.ProjectName}}]* ` + "`{{.BranchName}}`" + `{{ if ne .ShortSha "" }} ({{.ShortSha}}){{end}} Build ` + "`{{.BuildName}}`" + ` Succeeded. {{if ne .LogLink ""}} [Logs]({{.LogLink}}){{end}}
+ match, _ := regexp.MatchString(".*WithWarnings$", notification.Meta.BuildStep)
+ msg := "Succeeded"
+ if match {
+ emoji = warningEmoji
+ msg = "Succeeded with warnings, check the build log for more information"
+ }
+ rcTpl = `*[{{.ProjectName}}]* ` + "`{{.BranchName}}`" + `{{ if ne .ShortSha "" }} ({{.ShortSha}}){{end}} Build ` + "`{{.BuildName}}` " + msg + `. {{if ne .LogLink ""}} [Logs]({{.LogLink}}){{end}}
* {{.Route}}{{range .Routes}}{{if ne . $.Route}}* {{.}}{{end}}
{{end}}`
case "problemNotification":
@@ -145,70 +152,52 @@ func getRocketChatEvent(msgEvent string) (string, string, string, error) {
}
var rocketChatEventTypeMap = map[string]EventMap{
- "github:pull_request:opened:handled": {Emoji: "ℹ️", Color: "#E8E8E8", Template: "mergeRequestOpened"},
- "gitlab:merge_request:opened:handled": {Emoji: "ℹ️", Color: "#E8E8E8", Template: "mergeRequestOpened"},
- "bitbucket:pullrequest:created:opened:handled": {Emoji: "ℹ️", Color: "#E8E8E8", Template: "mergeRequestOpened"}, //not in slack
- "bitbucket:pullrequest:created:handled": {Emoji: "ℹ️", Color: "#E8E8E8", Template: "mergeRequestOpened"}, //not in teams
-
- "github:pull_request:synchronize:handled": {Emoji: "ℹ️", Color: "#E8E8E8", Template: "mergeRequestUpdated"},
- "gitlab:merge_request:updated:handled": {Emoji: "ℹ️", Color: "#E8E8E8", Template: "mergeRequestUpdated"},
- "bitbucket:pullrequest:updated:opened:handled": {Emoji: "ℹ️", Color: "#E8E8E8", Template: "mergeRequestUpdated"}, //not in slack
- "bitbucket:pullrequest:updated:handled": {Emoji: "ℹ️", Color: "#E8E8E8", Template: "mergeRequestUpdated"}, //not in teams
-
- "github:pull_request:closed:handled": {Emoji: "ℹ️", Color: "#E8E8E8", Template: "mergeRequestClosed"},
- "bitbucket:pullrequest:fulfilled:handled": {Emoji: "ℹ️", Color: "#E8E8E8", Template: "mergeRequestClosed"},
- "bitbucket:pullrequest:rejected:handled": {Emoji: "ℹ️", Color: "#E8E8E8", Template: "mergeRequestClosed"},
- "gitlab:merge_request:closed:handled": {Emoji: "ℹ️", Color: "#E8E8E8", Template: "mergeRequestClosed"},
-
- "github:delete:handled": {Emoji: "ℹ️", Color: "#E8E8E8", Template: "deleteEnvironment"},
- "gitlab:remove:handled": {Emoji: "ℹ️", Color: "#E8E8E8", Template: "deleteEnvironment"}, //not in slack
- "bitbucket:delete:handled": {Emoji: "ℹ️", Color: "#E8E8E8", Template: "deleteEnvironment"}, //not in slack
- "api:deleteEnvironment": {Emoji: "ℹ️", Color: "#E8E8E8", Template: "deleteEnvironment"}, //not in teams
-
- "github:push:handled": {Emoji: "ℹ️", Color: "#E8E8E8", Template: "repoPushHandled"},
- "bitbucket:repo:push:handled": {Emoji: "ℹ️", Color: "#E8E8E8", Template: "repoPushHandled"},
- "gitlab:push:handled": {Emoji: "ℹ️", Color: "#E8E8E8", Template: "repoPushHandled"},
-
- "github:push:skipped": {Emoji: "ℹ️", Color: "#E8E8E8", Template: "repoPushSkipped"},
- "gitlab:push:skipped": {Emoji: "ℹ️", Color: "#E8E8E8", Template: "repoPushSkipped"},
- "bitbucket:push:skipped": {Emoji: "ℹ️", Color: "#E8E8E8", Template: "repoPushSkipped"},
-
- "api:deployEnvironmentLatest": {Emoji: "ℹ️", Color: "#E8E8E8", Template: "deployEnvironment"},
- "api:deployEnvironmentBranch": {Emoji: "ℹ️", Color: "#E8E8E8", Template: "deployEnvironment"},
-
- "task:deploy-openshift:finished": {Emoji: "✅", Color: "lawngreen", Template: "deployFinished"},
- "task:remove-openshift-resources:finished": {Emoji: "✅", Color: "lawngreen", Template: "deployFinished"},
- "task:builddeploy-openshift:complete": {Emoji: "✅", Color: "lawngreen", Template: "deployFinished"},
- "task:builddeploy-kubernetes:complete": {Emoji: "✅", Color: "lawngreen", Template: "deployFinished"}, //not in teams
-
- "task:remove-openshift:finished": {Emoji: "✅", Color: "lawngreen", Template: "removeFinished"},
- "task:remove-kubernetes:finished": {Emoji: "✅", Color: "lawngreen", Template: "removeFinished"},
-
- "task:remove-openshift:error": {Emoji: "🛑", Color: "red", Template: "deployError"},
- "task:remove-kubernetes:error": {Emoji: "🛑", Color: "red", Template: "deployError"},
- "task:builddeploy-kubernetes:failed": {Emoji: "🛑", Color: "red", Template: "deployError"}, //not in teams
- "task:builddeploy-openshift:failed": {Emoji: "🛑", Color: "red", Template: "deployError"},
-
- "github:pull_request:closed:CannotDeleteProductionEnvironment": {Emoji: "⚠️", Color: "gold", Template: "notDeleted"},
- "github:push:CannotDeleteProductionEnvironment": {Emoji: "⚠️", Color: "gold", Template: "notDeleted"},
- "bitbucket:repo:push:CannotDeleteProductionEnvironment": {Emoji: "⚠️", Color: "gold", Template: "notDeleted"},
- "gitlab:push:CannotDeleteProductionEnvironment": {Emoji: "⚠️", Color: "gold", Template: "notDeleted"},
-
- // deprecated
- // "rest:remove:CannotDeleteProductionEnvironment": {Emoji: "⚠️", Color: "gold"},
- // "rest:deploy:receive": {Emoji: "ℹ️", Color: "#E8E8E8"},
- // "rest:remove:receive": {Emoji: "ℹ️", Color: "#E8E8E8"},
- // "rest:promote:receive": {Emoji: "ℹ️", Color: "#E8E8E8"},
- // "rest:pullrequest:deploy": {Emoji: "ℹ️", Color: "#E8E8E8"},
- // "rest:pullrequest:remove": {Emoji: "ℹ️", Color: "#E8E8E8"},
-
- // deprecated
- // "task:deploy-openshift:error": {Emoji: "🛑", Color: "red", Template: "deployError"},
- // "task:remove-openshift-resources:error": {Emoji: "🛑", Color: "red", Template: "deployError"},
-
- // deprecated
- // "task:deploy-openshift:retry": {Emoji: "⚠️", Color: "gold", Template: "removeRetry"},
- // "task:remove-openshift:retry": {Emoji: "⚠️", Color: "gold", Template: "removeRetry"},
- // "task:remove-kubernetes:retry": {Emoji: "⚠️", Color: "gold", Template: "removeRetry"},
- // "task:remove-openshift-resources:retry": {Emoji: "⚠️", Color: "gold", Template: "removeRetry"},
+ "github:pull_request:opened:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "mergeRequestOpened"},
+ "gitlab:merge_request:opened:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "mergeRequestOpened"},
+ "bitbucket:pullrequest:created:opened:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "mergeRequestOpened"}, //not in slack
+ "bitbucket:pullrequest:created:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "mergeRequestOpened"}, //not in teams
+
+ "github:pull_request:synchronize:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "mergeRequestUpdated"},
+ "gitlab:merge_request:updated:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "mergeRequestUpdated"},
+ "bitbucket:pullrequest:updated:opened:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "mergeRequestUpdated"}, //not in slack
+ "bitbucket:pullrequest:updated:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "mergeRequestUpdated"}, //not in teams
+
+ "github:pull_request:closed:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "mergeRequestClosed"},
+ "bitbucket:pullrequest:fulfilled:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "mergeRequestClosed"},
+ "bitbucket:pullrequest:rejected:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "mergeRequestClosed"},
+ "gitlab:merge_request:closed:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "mergeRequestClosed"},
+
+ "github:delete:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "deleteEnvironment"},
+ "gitlab:remove:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "deleteEnvironment"}, //not in slack
+ "bitbucket:delete:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "deleteEnvironment"}, //not in slack
+ "api:deleteEnvironment": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "deleteEnvironment"}, //not in teams
+
+ "github:push:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "repoPushHandled"},
+ "bitbucket:repo:push:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "repoPushHandled"},
+ "gitlab:push:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "repoPushHandled"},
+
+ "github:push:skipped": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "repoPushSkipped"},
+ "gitlab:push:skipped": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "repoPushSkipped"},
+ "bitbucket:push:skipped": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "repoPushSkipped"},
+
+ "api:deployEnvironmentLatest": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "deployEnvironment"},
+ "api:deployEnvironmentBranch": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "deployEnvironment"},
+
+ "task:deploy-openshift:finished": {Emoji: successEmoji, Color: "lawngreen", Template: "deployFinished"},
+ "task:remove-openshift-resources:finished": {Emoji: successEmoji, Color: "lawngreen", Template: "deployFinished"},
+ "task:builddeploy-openshift:complete": {Emoji: successEmoji, Color: "lawngreen", Template: "deployFinished"},
+ "task:builddeploy-kubernetes:complete": {Emoji: successEmoji, Color: "lawngreen", Template: "deployFinished"}, //not in teams
+
+ "task:remove-openshift:finished": {Emoji: successEmoji, Color: "lawngreen", Template: "removeFinished"},
+ "task:remove-kubernetes:finished": {Emoji: successEmoji, Color: "lawngreen", Template: "removeFinished"},
+
+ "task:remove-openshift:error": {Emoji: failEmoji, Color: "red", Template: "deployError"},
+ "task:remove-kubernetes:error": {Emoji: failEmoji, Color: "red", Template: "deployError"},
+ "task:builddeploy-kubernetes:failed": {Emoji: failEmoji, Color: "red", Template: "deployError"}, //not in teams
+ "task:builddeploy-openshift:failed": {Emoji: failEmoji, Color: "red", Template: "deployError"},
+
+ "github:pull_request:closed:CannotDeleteProductionEnvironment": {Emoji: warningEmoji, Color: "gold", Template: "notDeleted"},
+ "github:push:CannotDeleteProductionEnvironment": {Emoji: warningEmoji, Color: "gold", Template: "notDeleted"},
+ "bitbucket:repo:push:CannotDeleteProductionEnvironment": {Emoji: warningEmoji, Color: "gold", Template: "notDeleted"},
+ "gitlab:push:CannotDeleteProductionEnvironment": {Emoji: warningEmoji, Color: "gold", Template: "notDeleted"},
}
diff --git a/services/logs2notifications/internal/handler/slack_events.go b/services/logs2notifications/internal/handler/slack_events.go
index 9b2a60657e..3bf026a5fa 100644
--- a/services/logs2notifications/internal/handler/slack_events.go
+++ b/services/logs2notifications/internal/handler/slack_events.go
@@ -4,6 +4,7 @@ import (
"bytes"
"fmt"
"log"
+ "regexp"
"strings"
"text/template"
@@ -55,9 +56,15 @@ func (h *Messaging) processSlackTemplate(notification *Notification) (string, st
case "notDeleted":
slackTpl = `*[{{.ProjectName}}]* ` + "`{{.BranchName}}`" + ` not deleted. {{.Error}}`
case "deployError":
- slackTpl = `*[{{.ProjectName}}]* ` + "`{{.BranchName}}`" + `{{ if ne .ShortSha "" }} ({{.ShortSha}}){{end}} Build ` + "`{{.BuildName}}`" + ` Failed. {{if ne .LogLink ""}} <{{.LogLink}}|Logs>{{end}}`
+ slackTpl = `*[{{.ProjectName}}]* ` + "`{{.BranchName}}`" + `{{ if ne .ShortSha "" }} ({{.ShortSha}}){{end}} Build ` + "`{{.BuildName}}`" + ` failed at build step ` + "`{{.BuildStep}}`" + `. {{if ne .LogLink ""}} <{{.LogLink}}|Logs>{{end}}`
case "deployFinished":
- slackTpl = `*[{{.ProjectName}}]* ` + "`{{.BranchName}}`" + `{{ if ne .ShortSha "" }} ({{.ShortSha}}){{end}} Build ` + "`{{.BuildName}}`" + ` Succeeded. {{if ne .LogLink ""}} <{{.LogLink}}|Logs>{{end}}
+ match, _ := regexp.MatchString(".*WithWarnings$", notification.Meta.BuildStep)
+ msg := "Succeeded"
+ if match {
+ emoji = warningEmoji
+ msg = "Succeeded with warnings, check the build log for more information"
+ }
+ slackTpl = `*[{{.ProjectName}}]* ` + "`{{.BranchName}}`" + `{{ if ne .ShortSha "" }} ({{.ShortSha}}){{end}} Build ` + "`{{.BuildName}}` " + msg + `. {{if ne .LogLink ""}} <{{.LogLink}}|Logs>{{end}}
{{.Route}}
{{range .Routes}}{{if ne . $.Route}}{{.}}{{end}}
{{end}}`
@@ -112,70 +119,52 @@ func getSlackEvent(msgEvent string) (string, string, string, error) {
}
var slackEventTypeMap = map[string]EventMap{
- "github:pull_request:opened:handled": {Emoji: "ℹ️", Color: "#E8E8E8", Template: "mergeRequestOpened"},
- "gitlab:merge_request:opened:handled": {Emoji: "ℹ️", Color: "#E8E8E8", Template: "mergeRequestOpened"},
- "bitbucket:pullrequest:created:opened:handled": {Emoji: "ℹ️", Color: "#E8E8E8", Template: "mergeRequestOpened"}, //not in slack
- "bitbucket:pullrequest:created:handled": {Emoji: "ℹ️", Color: "#E8E8E8", Template: "mergeRequestOpened"}, //not in teams
-
- "github:pull_request:synchronize:handled": {Emoji: "ℹ️", Color: "#E8E8E8", Template: "mergeRequestUpdated"},
- "gitlab:merge_request:updated:handled": {Emoji: "ℹ️", Color: "#E8E8E8", Template: "mergeRequestUpdated"},
- "bitbucket:pullrequest:updated:opened:handled": {Emoji: "ℹ️", Color: "#E8E8E8", Template: "mergeRequestUpdated"}, //not in slack
- "bitbucket:pullrequest:updated:handled": {Emoji: "ℹ️", Color: "#E8E8E8", Template: "mergeRequestUpdated"}, //not in teams
-
- "github:pull_request:closed:handled": {Emoji: "ℹ️", Color: "#E8E8E8", Template: "mergeRequestClosed"},
- "bitbucket:pullrequest:fulfilled:handled": {Emoji: "ℹ️", Color: "#E8E8E8", Template: "mergeRequestClosed"},
- "bitbucket:pullrequest:rejected:handled": {Emoji: "ℹ️", Color: "#E8E8E8", Template: "mergeRequestClosed"},
- "gitlab:merge_request:closed:handled": {Emoji: "ℹ️", Color: "#E8E8E8", Template: "mergeRequestClosed"},
-
- "github:delete:handled": {Emoji: "ℹ️", Color: "#E8E8E8", Template: "deleteEnvironment"},
- "gitlab:remove:handled": {Emoji: "ℹ️", Color: "#E8E8E8", Template: "deleteEnvironment"}, //not in slack
- "bitbucket:delete:handled": {Emoji: "ℹ️", Color: "#E8E8E8", Template: "deleteEnvironment"}, //not in slack
- "api:deleteEnvironment": {Emoji: "ℹ️", Color: "#E8E8E8", Template: "deleteEnvironment"}, //not in teams
-
- "github:push:handled": {Emoji: "ℹ️", Color: "#E8E8E8", Template: "repoPushHandled"},
- "bitbucket:repo:push:handled": {Emoji: "ℹ️", Color: "#E8E8E8", Template: "repoPushHandled"},
- "gitlab:push:handled": {Emoji: "ℹ️", Color: "#E8E8E8", Template: "repoPushHandled"},
-
- "github:push:skipped": {Emoji: "ℹ️", Color: "#E8E8E8", Template: "repoPushSkipped"},
- "gitlab:push:skipped": {Emoji: "ℹ️", Color: "#E8E8E8", Template: "repoPushSkipped"},
- "bitbucket:push:skipped": {Emoji: "ℹ️", Color: "#E8E8E8", Template: "repoPushSkipped"},
-
- "api:deployEnvironmentLatest": {Emoji: "ℹ️", Color: "#E8E8E8", Template: "deployEnvironment"},
- "api:deployEnvironmentBranch": {Emoji: "ℹ️", Color: "#E8E8E8", Template: "deployEnvironment"},
-
- "task:deploy-openshift:finished": {Emoji: "✅", Color: "good", Template: "deployFinished"},
- "task:remove-openshift-resources:finished": {Emoji: "✅", Color: "good", Template: "deployFinished"},
- "task:builddeploy-openshift:complete": {Emoji: "✅", Color: "good", Template: "deployFinished"},
- "task:builddeploy-kubernetes:complete": {Emoji: "✅", Color: "good", Template: "deployFinished"}, //not in teams
-
- "task:remove-openshift:finished": {Emoji: "✅", Color: "good", Template: "removeFinished"},
- "task:remove-kubernetes:finished": {Emoji: "✅", Color: "good", Template: "removeFinished"},
-
- "task:remove-openshift:error": {Emoji: "🛑", Color: "danger", Template: "deployError"},
- "task:remove-kubernetes:error": {Emoji: "🛑", Color: "danger", Template: "deployError"},
- "task:builddeploy-kubernetes:failed": {Emoji: "🛑", Color: "danger", Template: "deployError"}, //not in teams
- "task:builddeploy-openshift:failed": {Emoji: "🛑", Color: "danger", Template: "deployError"},
-
- "github:pull_request:closed:CannotDeleteProductionEnvironment": {Emoji: "⚠️", Color: "warning", Template: "notDeleted"},
- "github:push:CannotDeleteProductionEnvironment": {Emoji: "⚠️", Color: "warning", Template: "notDeleted"},
- "bitbucket:repo:push:CannotDeleteProductionEnvironment": {Emoji: "⚠️", Color: "warning", Template: "notDeleted"},
- "gitlab:push:CannotDeleteProductionEnvironment": {Emoji: "⚠️", Color: "warning", Template: "notDeleted"},
-
- // deprecated
- // "rest:remove:CannotDeleteProductionEnvironment": {Emoji: "⚠️", Color: "warning"},
- // "rest:deploy:receive": {Emoji: "ℹ️", Color: "#E8E8E8"},
- // "rest:remove:receive": {Emoji: "ℹ️", Color: "#E8E8E8"},
- // "rest:promote:receive": {Emoji: "ℹ️", Color: "#E8E8E8"},
- // "rest:pullrequest:deploy": {Emoji: "ℹ️", Color: "#E8E8E8"},
- // "rest:pullrequest:remove": {Emoji: "ℹ️", Color: "#E8E8E8"},
-
- // deprecated
- // "task:deploy-openshift:error": {Emoji: "🛑", Color: "danger", Template: "deployError"},
- // "task:remove-openshift-resources:error": {Emoji: "🛑", Color: "danger", Template: "deployError"},
-
- // deprecated
- // "task:deploy-openshift:retry": {Emoji: "⚠️", Color: "warning", Template: "removeRetry"},
- // "task:remove-openshift:retry": {Emoji: "⚠️", Color: "warning", Template: "removeRetry"},
- // "task:remove-kubernetes:retry": {Emoji: "⚠️", Color: "warning", Template: "removeRetry"},
- // "task:remove-openshift-resources:retry": {Emoji: "⚠️", Color: "warning", Template: "removeRetry"},
+ "github:pull_request:opened:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "mergeRequestOpened"},
+ "gitlab:merge_request:opened:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "mergeRequestOpened"},
+ "bitbucket:pullrequest:created:opened:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "mergeRequestOpened"}, //not in slack
+ "bitbucket:pullrequest:created:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "mergeRequestOpened"}, //not in teams
+
+ "github:pull_request:synchronize:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "mergeRequestUpdated"},
+ "gitlab:merge_request:updated:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "mergeRequestUpdated"},
+ "bitbucket:pullrequest:updated:opened:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "mergeRequestUpdated"}, //not in slack
+ "bitbucket:pullrequest:updated:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "mergeRequestUpdated"}, //not in teams
+
+ "github:pull_request:closed:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "mergeRequestClosed"},
+ "bitbucket:pullrequest:fulfilled:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "mergeRequestClosed"},
+ "bitbucket:pullrequest:rejected:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "mergeRequestClosed"},
+ "gitlab:merge_request:closed:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "mergeRequestClosed"},
+
+ "github:delete:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "deleteEnvironment"},
+ "gitlab:remove:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "deleteEnvironment"}, //not in slack
+ "bitbucket:delete:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "deleteEnvironment"}, //not in slack
+ "api:deleteEnvironment": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "deleteEnvironment"}, //not in teams
+
+ "github:push:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "repoPushHandled"},
+ "bitbucket:repo:push:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "repoPushHandled"},
+ "gitlab:push:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "repoPushHandled"},
+
+ "github:push:skipped": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "repoPushSkipped"},
+ "gitlab:push:skipped": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "repoPushSkipped"},
+ "bitbucket:push:skipped": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "repoPushSkipped"},
+
+ "api:deployEnvironmentLatest": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "deployEnvironment"},
+ "api:deployEnvironmentBranch": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "deployEnvironment"},
+
+ "task:deploy-openshift:finished": {Emoji: successEmoji, Color: "good", Template: "deployFinished"},
+ "task:remove-openshift-resources:finished": {Emoji: successEmoji, Color: "good", Template: "deployFinished"},
+ "task:builddeploy-openshift:complete": {Emoji: successEmoji, Color: "good", Template: "deployFinished"},
+ "task:builddeploy-kubernetes:complete": {Emoji: successEmoji, Color: "good", Template: "deployFinished"}, //not in teams
+
+ "task:remove-openshift:finished": {Emoji: successEmoji, Color: "good", Template: "removeFinished"},
+ "task:remove-kubernetes:finished": {Emoji: successEmoji, Color: "good", Template: "removeFinished"},
+
+ "task:remove-openshift:error": {Emoji: failEmoji, Color: "danger", Template: "deployError"},
+ "task:remove-kubernetes:error": {Emoji: failEmoji, Color: "danger", Template: "deployError"},
+ "task:builddeploy-kubernetes:failed": {Emoji: failEmoji, Color: "danger", Template: "deployError"}, //not in teams
+ "task:builddeploy-openshift:failed": {Emoji: failEmoji, Color: "danger", Template: "deployError"},
+
+ "github:pull_request:closed:CannotDeleteProductionEnvironment": {Emoji: warningEmoji, Color: "warning", Template: "notDeleted"},
+ "github:push:CannotDeleteProductionEnvironment": {Emoji: warningEmoji, Color: "warning", Template: "notDeleted"},
+ "bitbucket:repo:push:CannotDeleteProductionEnvironment": {Emoji: warningEmoji, Color: "warning", Template: "notDeleted"},
+ "gitlab:push:CannotDeleteProductionEnvironment": {Emoji: warningEmoji, Color: "warning", Template: "notDeleted"},
}
diff --git a/services/logs2notifications/internal/handler/testdata/deployError/emailhtml.txt b/services/logs2notifications/internal/handler/testdata/deployError/emailhtml.txt
index caa0842373..53a6736358 100644
--- a/services/logs2notifications/internal/handler/testdata/deployError/emailhtml.txt
+++ b/services/logs2notifications/internal/handler/testdata/deployError/emailhtml.txt
@@ -1,2 +1,2 @@
-[ci-github-openshift]
lagoon-type-override
Build
lagoon-build-1234
error.
+[ci-github-openshift]
lagoon-type-override
Build
lagoon-build-1234
failed at build step `applyingDeployments`.
Logs
\ No newline at end of file
diff --git a/services/logs2notifications/internal/handler/testdata/deployError/emailplain.txt b/services/logs2notifications/internal/handler/testdata/deployError/emailplain.txt
index 6e842187b3..85106493ad 100644
--- a/services/logs2notifications/internal/handler/testdata/deployError/emailplain.txt
+++ b/services/logs2notifications/internal/handler/testdata/deployError/emailplain.txt
@@ -1,2 +1,2 @@
-[ci-github-openshift] lagoon-type-override Build lagoon-build-1234 error.
+[ci-github-openshift] lagoon-type-override Build lagoon-build-1234 failed at build step applyingDeployments.
[Logs](https://logs)
\ No newline at end of file
diff --git a/services/logs2notifications/internal/handler/testdata/deployError/rocketchat.txt b/services/logs2notifications/internal/handler/testdata/deployError/rocketchat.txt
index 3188762d78..29c83d3ecc 100644
--- a/services/logs2notifications/internal/handler/testdata/deployError/rocketchat.txt
+++ b/services/logs2notifications/internal/handler/testdata/deployError/rocketchat.txt
@@ -1 +1 @@
-*[ci-github-openshift]* `lagoon-type-override` Build `lagoon-build-1234` Failed. [Logs](https://logs)
\ No newline at end of file
+*[ci-github-openshift]* `lagoon-type-override` Build `lagoon-build-1234` failed at build step `applyingDeployments`. [Logs](https://logs)
\ No newline at end of file
diff --git a/services/logs2notifications/internal/handler/testdata/deployError/slack.txt b/services/logs2notifications/internal/handler/testdata/deployError/slack.txt
index cb1126de73..c964a36600 100644
--- a/services/logs2notifications/internal/handler/testdata/deployError/slack.txt
+++ b/services/logs2notifications/internal/handler/testdata/deployError/slack.txt
@@ -1 +1 @@
-*[ci-github-openshift]* `lagoon-type-override` Build `lagoon-build-1234` Failed.
\ No newline at end of file
+*[ci-github-openshift]* `lagoon-type-override` Build `lagoon-build-1234` failed at build step `applyingDeployments`.
\ No newline at end of file
diff --git a/services/logs2notifications/internal/handler/testdata/deployError/teams.txt b/services/logs2notifications/internal/handler/testdata/deployError/teams.txt
index ca2fa8daf9..dd828111e5 100644
--- a/services/logs2notifications/internal/handler/testdata/deployError/teams.txt
+++ b/services/logs2notifications/internal/handler/testdata/deployError/teams.txt
@@ -1 +1 @@
-`lagoon-type-override` Build `lagoon-build-1234` Failed. [Logs](https://logs)
\ No newline at end of file
+`lagoon-type-override` Build `lagoon-build-1234` failed at build step `applyingDeployments`. [Logs](https://logs)
\ No newline at end of file
diff --git a/services/logs2notifications/internal/handler/testdata/deployError/webhook.txt b/services/logs2notifications/internal/handler/testdata/deployError/webhook.txt
index 140e01021c..54f8402c12 100644
--- a/services/logs2notifications/internal/handler/testdata/deployError/webhook.txt
+++ b/services/logs2notifications/internal/handler/testdata/deployError/webhook.txt
@@ -1 +1 @@
-{"type":"DEPLOYMENT","event":"task:builddeploy-kubernetes:failed","project":"ci-github-openshift","environment":"lagoon-type-override","buildName":"lagoon-build-1234","logLink":"https://logs"}
\ No newline at end of file
+{"type":"DEPLOYMENT","event":"task:builddeploy-kubernetes:failed","project":"ci-github-openshift","environment":"lagoon-type-override","buildName":"lagoon-build-1234","buildStep":"applyingDeployments","logLink":"https://logs"}
\ No newline at end of file
diff --git a/services/logs2notifications/internal/handler/testdata/deployErrorImageBuild/emailhtml.txt b/services/logs2notifications/internal/handler/testdata/deployErrorImageBuild/emailhtml.txt
new file mode 100644
index 0000000000..5b8c9b897e
--- /dev/null
+++ b/services/logs2notifications/internal/handler/testdata/deployErrorImageBuild/emailhtml.txt
@@ -0,0 +1,2 @@
+[ci-github-openshift] lagoon-type-override
Build lagoon-build-1234
failed at build step `buildingImages`.
+ Logs
\ No newline at end of file
diff --git a/services/logs2notifications/internal/handler/testdata/deployErrorImageBuild/emailplain.txt b/services/logs2notifications/internal/handler/testdata/deployErrorImageBuild/emailplain.txt
new file mode 100644
index 0000000000..a7944b1250
--- /dev/null
+++ b/services/logs2notifications/internal/handler/testdata/deployErrorImageBuild/emailplain.txt
@@ -0,0 +1,2 @@
+[ci-github-openshift] lagoon-type-override Build lagoon-build-1234 failed at build step buildingImages.
+ [Logs](https://logs)
\ No newline at end of file
diff --git a/services/logs2notifications/internal/handler/testdata/deployErrorImageBuild/rocketchat.txt b/services/logs2notifications/internal/handler/testdata/deployErrorImageBuild/rocketchat.txt
new file mode 100644
index 0000000000..792a6b5a7c
--- /dev/null
+++ b/services/logs2notifications/internal/handler/testdata/deployErrorImageBuild/rocketchat.txt
@@ -0,0 +1 @@
+*[ci-github-openshift]* `lagoon-type-override` Build `lagoon-build-1234` failed at build step `buildingImages`. [Logs](https://logs)
\ No newline at end of file
diff --git a/services/logs2notifications/internal/handler/testdata/deployErrorImageBuild/slack.txt b/services/logs2notifications/internal/handler/testdata/deployErrorImageBuild/slack.txt
new file mode 100644
index 0000000000..082cb1b8d4
--- /dev/null
+++ b/services/logs2notifications/internal/handler/testdata/deployErrorImageBuild/slack.txt
@@ -0,0 +1 @@
+*[ci-github-openshift]* `lagoon-type-override` Build `lagoon-build-1234` failed at build step `buildingImages`.
\ No newline at end of file
diff --git a/services/logs2notifications/internal/handler/testdata/deployErrorImageBuild/teams.txt b/services/logs2notifications/internal/handler/testdata/deployErrorImageBuild/teams.txt
new file mode 100644
index 0000000000..222fa2eb2c
--- /dev/null
+++ b/services/logs2notifications/internal/handler/testdata/deployErrorImageBuild/teams.txt
@@ -0,0 +1 @@
+`lagoon-type-override` Build `lagoon-build-1234` failed at build step `buildingImages`. [Logs](https://logs)
\ No newline at end of file
diff --git a/services/logs2notifications/internal/handler/testdata/deployErrorImageBuild/webhook.txt b/services/logs2notifications/internal/handler/testdata/deployErrorImageBuild/webhook.txt
new file mode 100644
index 0000000000..e28bcbd768
--- /dev/null
+++ b/services/logs2notifications/internal/handler/testdata/deployErrorImageBuild/webhook.txt
@@ -0,0 +1 @@
+{"type":"DEPLOYMENT","event":"task:builddeploy-kubernetes:failed","project":"ci-github-openshift","environment":"lagoon-type-override","buildName":"lagoon-build-1234","buildStep":"buildingImages","logLink":"https://logs"}
\ No newline at end of file
diff --git a/services/logs2notifications/internal/handler/testdata/deployFinished/emailhtml.txt b/services/logs2notifications/internal/handler/testdata/deployFinished/emailhtml.txt
index 26155d23c4..6e4b8a4ec1 100644
--- a/services/logs2notifications/internal/handler/testdata/deployFinished/emailhtml.txt
+++ b/services/logs2notifications/internal/handler/testdata/deployFinished/emailhtml.txt
@@ -1,4 +1,4 @@
-[ci-github-openshift] lagoon-type-override
Build lagoon-build-1234
complete. Logs
+[ci-github-openshift] lagoon-type-override
Build lagoon-build-1234
completed. Logs