diff --git a/services/logs2notifications/internal/handler/email_events.go b/services/logs2notifications/internal/handler/email_events.go index 8a565c8a21..f4cb1d9f42 100644 --- a/services/logs2notifications/internal/handler/email_events.go +++ b/services/logs2notifications/internal/handler/email_events.go @@ -186,16 +186,23 @@ var emailEvent = map[string]EventMap{ "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:pr: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 + "bitbucket:pr:modified:opened:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "mergeRequestUpdated"}, //not in slack + "bitbucket:pr:modified:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "mergeRequestUpdated"}, //not in teams + "bitbucket:pr:from_ref_updated:opened:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "mergeRequestUpdated"}, //not in slack + "bitbucket:pr:from_ref_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"}, + "bitbucket:pr:declined:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "mergeRequestClosed"}, + "bitbucket:pr:merged: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"}, @@ -203,9 +210,10 @@ var emailEvent = map[string]EventMap{ "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:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "repoPushHandled"}, + "bitbucket:repo:push:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "repoPushHandled"}, + "bitbucket:repo:refs_changed: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"}, @@ -227,8 +235,9 @@ var emailEvent = map[string]EventMap{ "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: 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"}, + "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"}, + "bitbucket:repo:refs_changed:CannotDeleteProductionEnvironment": {Emoji: warningEmoji, Color: "gold", Template: "notDeleted"}, + "gitlab:push:CannotDeleteProductionEnvironment": {Emoji: warningEmoji, Color: "gold", Template: "notDeleted"}, } diff --git a/services/logs2notifications/internal/handler/microsoftteams_events.go b/services/logs2notifications/internal/handler/microsoftteams_events.go index 7439c0c987..23fc24570e 100644 --- a/services/logs2notifications/internal/handler/microsoftteams_events.go +++ b/services/logs2notifications/internal/handler/microsoftteams_events.go @@ -152,16 +152,24 @@ var microsoftTeamsEvent = map[string]EventMap{ "github:pull_request:opened:handled": {Emoji: ":information_source:", Color: "#E8E8E8", Template: "mergeRequestOpened"}, "gitlab:merge_request:opened:handled": {Emoji: ":information_source:", Color: "#E8E8E8", Template: "mergeRequestOpened"}, "bitbucket:pullrequest:created:opened:handled": {Emoji: ":information_source:", Color: "#E8E8E8", Template: "mergeRequestOpened"}, //not in slack + "bitbucket:pr:opened:opened:handled": {Emoji: ":information_source:", Color: "#E8E8E8", Template: "mergeRequestOpened"}, //not in slack "bitbucket:pullrequest:created:handled": {Emoji: ":information_source:", Color: "#E8E8E8", Template: "mergeRequestOpened"}, //not in teams + "bitbucket:pr:opened:handled": {Emoji: ":information_source:", Color: "#E8E8E8", Template: "mergeRequestOpened"}, //not in teams "github:pull_request:synchronize:handled": {Emoji: ":information_source:", Color: "#E8E8E8", Template: "mergeRequestUpdated"}, "gitlab:merge_request:updated:handled": {Emoji: ":information_source:", Color: "#E8E8E8", Template: "mergeRequestUpdated"}, "bitbucket:pullrequest:updated:opened:handled": {Emoji: ":information_source:", Color: "#E8E8E8", Template: "mergeRequestUpdated"}, //not in slack "bitbucket:pullrequest:updated:handled": {Emoji: ":information_source:", Color: "#E8E8E8", Template: "mergeRequestUpdated"}, //not in teams + "bitbucket:pr:modified:opened:handled": {Emoji: ":information_source:", Color: "#E8E8E8", Template: "mergeRequestUpdated"}, //not in slack + "bitbucket:pr:modified:handled": {Emoji: ":information_source:", Color: "#E8E8E8", Template: "mergeRequestUpdated"}, //not in teams + "bitbucket:pr:from_ref_updated:opened:handled": {Emoji: ":information_source:", Color: "#E8E8E8", Template: "mergeRequestUpdated"}, //not in slack + "bitbucket:pr:from_ref_updated:handled": {Emoji: ":information_source:", Color: "#E8E8E8", Template: "mergeRequestUpdated"}, //not in teams "github:pull_request:closed:handled": {Emoji: ":information_source:", Color: "#E8E8E8", Template: "mergeRequestClosed"}, "bitbucket:pullrequest:fulfilled:handled": {Emoji: ":information_source:", Color: "#E8E8E8", Template: "mergeRequestClosed"}, + "bitbucket:pr:merged:handled": {Emoji: ":information_source:", Color: "#E8E8E8", Template: "mergeRequestClosed"}, "bitbucket:pullrequest:rejected:handled": {Emoji: ":information_source:", Color: "#E8E8E8", Template: "mergeRequestClosed"}, + "bitbucket:pr:declined:handled": {Emoji: ":information_source:", Color: "#E8E8E8", Template: "mergeRequestClosed"}, "gitlab:merge_request:closed:handled": {Emoji: ":information_source:", Color: "#E8E8E8", Template: "mergeRequestClosed"}, "github:delete:handled": {Emoji: ":information_source:", Color: "#E8E8E8", Template: "deleteEnvironment"}, @@ -169,9 +177,10 @@ var microsoftTeamsEvent = map[string]EventMap{ "bitbucket:delete:handled": {Emoji: ":information_source:", Color: "#E8E8E8", Template: "deleteEnvironment"}, //not in slack "api:deleteEnvironment": {Emoji: ":information_source:", Color: "#E8E8E8", Template: "deleteEnvironment"}, //not in teams - "github:push:handled": {Emoji: ":information_source:", Color: "#E8E8E8", Template: "repoPushHandled"}, - "bitbucket:repo:push:handled": {Emoji: ":information_source:", Color: "#E8E8E8", Template: "repoPushHandled"}, - "gitlab:push:handled": {Emoji: ":information_source:", Color: "#E8E8E8", Template: "repoPushHandled"}, + "github:push:handled": {Emoji: ":information_source:", Color: "#E8E8E8", Template: "repoPushHandled"}, + "bitbucket:repo:push:handled": {Emoji: ":information_source:", Color: "#E8E8E8", Template: "repoPushHandled"}, + "bitbucket:repo:refs_changed:handled": {Emoji: ":information_source:", Color: "#E8E8E8", Template: "repoPushHandled"}, + "gitlab:push:handled": {Emoji: ":information_source:", Color: "#E8E8E8", Template: "repoPushHandled"}, "github:push:skipped": {Emoji: ":information_source:", Color: "#E8E8E8", Template: "repoPushSkipped"}, "gitlab:push:skipped": {Emoji: ":information_source:", Color: "#E8E8E8", Template: "repoPushSkipped"}, @@ -193,8 +202,9 @@ var microsoftTeamsEvent = map[string]EventMap{ "task:builddeploy-kubernetes:failed": {Emoji: ":bangbang:", Color: "red", Template: "deployError"}, //not in teams "task:builddeploy-openshift:failed": {Emoji: ":bangbang:", Color: "red", Template: "deployError"}, - "github:pull_request:closed:CannotDeleteProductionEnvironment": {Emoji: ":warning:", Color: "gold", Template: "notDeleted"}, - "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"}, + "github:pull_request:closed:CannotDeleteProductionEnvironment": {Emoji: ":warning:", Color: "gold", Template: "notDeleted"}, + "github:push:CannotDeleteProductionEnvironment": {Emoji: ":warning:", Color: "gold", Template: "notDeleted"}, + "bitbucket:repo:push:CannotDeleteProductionEnvironment": {Emoji: ":warning:", Color: "gold", Template: "notDeleted"}, + "bitbucket:repo:refs_changed:CannotDeleteProductionEnvironment": {Emoji: ":warning:", Color: "gold", Template: "notDeleted"}, + "gitlab:push:CannotDeleteProductionEnvironment": {Emoji: ":warning:", Color: "gold", Template: "notDeleted"}, } diff --git a/services/logs2notifications/internal/handler/rocketchat_events.go b/services/logs2notifications/internal/handler/rocketchat_events.go index 3583359e4c..53ccd77cc5 100644 --- a/services/logs2notifications/internal/handler/rocketchat_events.go +++ b/services/logs2notifications/internal/handler/rocketchat_events.go @@ -158,16 +158,23 @@ var rocketChatEventTypeMap = map[string]EventMap{ "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:pr: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 + "bitbucket:pr:modified:opened:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "mergeRequestUpdated"}, //not in slack + "bitbucket:pr:modified:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "mergeRequestUpdated"}, //not in teams + "bitbucket:pr:from_ref_updated:opened:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "mergeRequestUpdated"}, //not in slack + "bitbucket:pr:from_ref_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"}, + "bitbucket:pr:declined:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "mergeRequestClosed"}, + "bitbucket:pr:merged: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"}, @@ -175,9 +182,10 @@ var rocketChatEventTypeMap = map[string]EventMap{ "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:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "repoPushHandled"}, + "bitbucket:repo:push:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "repoPushHandled"}, + "bitbucket:repo:refs_changed: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"}, @@ -199,8 +207,9 @@ var rocketChatEventTypeMap = map[string]EventMap{ "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"}, + "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"}, + "bitbucket:repo:refs_changed: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 9f570ad1c3..06f70dede3 100644 --- a/services/logs2notifications/internal/handler/slack_events.go +++ b/services/logs2notifications/internal/handler/slack_events.go @@ -125,16 +125,23 @@ var slackEventTypeMap = map[string]EventMap{ "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:pr: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 + "bitbucket:pr:modified:opened:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "mergeRequestUpdated"}, //not in slack + "bitbucket:pr:modified:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "mergeRequestUpdated"}, //not in teams + "bitbucket:pr:from_ref_updated:opened:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "mergeRequestUpdated"}, //not in slack + "bitbucket:pr:from_ref_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"}, + "bitbucket:pr:declined:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "mergeRequestClosed"}, + "bitbucket:pr:merged: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"}, @@ -142,9 +149,10 @@ var slackEventTypeMap = map[string]EventMap{ "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:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "repoPushHandled"}, + "bitbucket:repo:push:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "repoPushHandled"}, + "bitbucket:repo:refs_changed: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"}, @@ -166,8 +174,9 @@ var slackEventTypeMap = map[string]EventMap{ "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"}, + "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"}, + "bitbucket:repo:refs_changed:CannotDeleteProductionEnvironment": {Emoji: warningEmoji, Color: "warning", Template: "notDeleted"}, + "gitlab:push:CannotDeleteProductionEnvironment": {Emoji: warningEmoji, Color: "warning", Template: "notDeleted"}, } diff --git a/services/logs2notifications/internal/handler/webhook_events.go b/services/logs2notifications/internal/handler/webhook_events.go index 1136434951..4a4894983b 100644 --- a/services/logs2notifications/internal/handler/webhook_events.go +++ b/services/logs2notifications/internal/handler/webhook_events.go @@ -104,16 +104,24 @@ var webhookEventTypeMap = map[string]EventMap{ "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:pr:opened:opened:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "mergeRequestOpened"}, //not in slack "bitbucket:pullrequest:created:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "mergeRequestOpened"}, //not in teams + "bitbucket:pr:opened: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 + "bitbucket:pr:modified:opened:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "mergeRequestUpdated"}, //not in slack + "bitbucket:pr:modified:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "mergeRequestUpdated"}, //not in teams + "bitbucket:pr:from_ref_updated:opened:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "mergeRequestUpdated"}, //not in slack + "bitbucket:pr:from_ref_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"}, + "bitbucket:pr:declined:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "mergeRequestClosed"}, + "bitbucket:pr:merged: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"}, @@ -121,9 +129,10 @@ var webhookEventTypeMap = map[string]EventMap{ "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:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "repoPushHandled"}, + "bitbucket:repo:push:handled": {Emoji: infoEmoji, Color: "#E8E8E8", Template: "repoPushHandled"}, + "bitbucket:repo:refs_changed: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"}, @@ -145,8 +154,9 @@ var webhookEventTypeMap = map[string]EventMap{ "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"}, + "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"}, + "bitbucket:repo:refs_changed:CannotDeleteProductionEnvironment": {Emoji: warningEmoji, Color: "warning", Template: "notDeleted"}, + "gitlab:push:CannotDeleteProductionEnvironment": {Emoji: warningEmoji, Color: "warning", Template: "notDeleted"}, } diff --git a/services/webhook-handler/src/extractWebhookData.ts b/services/webhook-handler/src/extractWebhookData.ts index 79596a3ff3..c1a2422aa8 100644 --- a/services/webhook-handler/src/extractWebhookData.ts +++ b/services/webhook-handler/src/extractWebhookData.ts @@ -58,26 +58,61 @@ export function extractWebhookData(req: IncomingMessage, body: string): WebhookR } } } else if ('x-event-key' in req.headers) { - webhooktype = 'bitbucket' - event = req.headers['x-event-key'] - uuid = req.headers['x-request-uuid'] - // Bitbucket does not provide a git-ssh URI to the repo in the webhook payload - // We the html repo link (example https://bitbucket.org/teamawesome/repository) to extract the correct target domain (bitbucket.org) - // this could be bitbuck.org(.com) or a private bitbucket server - // Also the git server could be running on another port than 22, so there is a second regex match for `:[0-9]` - const regexmatch = bodyObj.repository.links.html.href.match(/https?:\/\/([a-z0-9-_.]*)(:[0-9]*)?\//i) - // The first match is the domain - const domain = regexmatch[1] - if (!regexmatch[2]) { - // If there is no 2nd regex match, ther is no port found and it's not added to the URL - // use the extracted domain and repo full_name (teamawesome/repository) to build the git URI, example git@bitbucket.org:teamawesome/repository.git - giturl = `git@${domain}:${bodyObj.repository.full_name}.git` - } else { - // If there is a second regex match, we add the port to the url and also format the url with `ssh://` in front which is needed for requests with anoter port - const port = regexmatch[2] - giturl = `ssh://git@${domain}${port}/${bodyObj.repository.full_name}.git` + webhooktype = 'bitbucket'; + event = req.headers['x-event-key']; + uuid = req.headers['x-request-uuid']; + + const cloneLinks = bodyObj.repository.links?.clone; + + // Bitbucket Server (Data Center) uses the 'clone' links to provide SSH and HTTP URLs + if (Array.isArray(cloneLinks)) { + const sshLink = cloneLinks.find(link => link.name === 'ssh'); + const httpLink = cloneLinks.find(link => link.name === 'http'); + if (sshLink?.href) { + giturl = sshLink.href; + } else if (httpLink?.href) { + + const match = httpLink.href.match(/https?:\/\/([^\/]+)\/scm\/([^\.]+)\.git/i); + if (match) { + const domain = match[1]; + const projectAndRepo = match[2]; + giturl = `git@${domain}:${projectAndRepo}.git`; + } else { + throw new Error(`Could not parse project/repo from http clone link: ${httpLink.href}`); + } + } } - // TODO: Use when single snapshot data is fixed + if (!giturl) { + let repoHref = null; + + if (bodyObj.repository.links?.html?.href) { + repoHref = bodyObj.repository.links.html.href; + } else if (bodyObj.repository.links?.self?.[0]?.href) { + repoHref = bodyObj.repository.links.self[0].href; + } else { + throw new Error('Could not determine repository URL from webhook payload.'); + } + + const regexmatch = repoHref.match(/https?:\/\/([a-z0-9-_.]*)(:[0-9]*)?\//i); + if (!regexmatch) { + throw new Error(`Could not parse domain from repository href: ${repoHref}`); + } + + const domain = regexmatch[1]; + + if (!bodyObj.repository.full_name) { + throw new Error('Missing repository.full_name in webhook payload.'); + } + + if (!regexmatch[2]) { + giturl = `git@${domain}:${bodyObj.repository.full_name}.git`; + } else { + const port = regexmatch[2]; + giturl = `ssh://git@${domain}${port}/${bodyObj.repository.full_name}.git`; + } + } + + // TODO: Use when single snapshot data is fixed // } else if (bodyObj.backup_metrics) { // webhooktype = 'resticbackup'; // event = 'snapshot:finished' diff --git a/services/webhooks2tasks/src/webhooks/projects.ts b/services/webhooks2tasks/src/webhooks/projects.ts index 9a2fc6ff10..273ce9e8e4 100644 --- a/services/webhooks2tasks/src/webhooks/projects.ts +++ b/services/webhooks2tasks/src/webhooks/projects.ts @@ -291,6 +291,7 @@ export async function processProjects( break; case 'bitbucket:repo:push': + case 'bitbucket:repo:refs_changed': if (body.push.changes[0].closed === true) { await handle( bitbucketBranchDeleted, @@ -311,6 +312,9 @@ export async function processProjects( case 'bitbucket:pullrequest:created': case 'bitbucket:pullrequest:updated': + case 'bitbucket:pr:opened': + case 'bitbucket:pr:modified': + case 'bitbucket:pr:from_ref_updated': await handle( bitbucketPullRequestUpdated, webhook, @@ -320,6 +324,8 @@ export async function processProjects( break; case 'bitbucket:pullrequest:rejected': case 'bitbucket:pullrequest:fulfilled': + case 'bitbucket:pr:declined': + case 'bitbucket:pr:merged': await handle( bitbucketPullRequestClosed, webhook,