diff --git a/ee/app/models/ee/user.rb b/ee/app/models/ee/user.rb index 9f08bbea781d5313148fdc98363a06bcea95551d..6a6568a3b4873f0cdb632730c4ed100d2c1555f2 100644 --- a/ee/app/models/ee/user.rb +++ b/ee/app/models/ee/user.rb @@ -74,7 +74,8 @@ module User scope :group_view_details, -> { where('group_view = ? OR group_view IS NULL', group_view[:details]) } enum bot_type: { - support_bot: 1 + support_bot: 1, + alert_bot: 2 } end @@ -90,6 +91,15 @@ def support_bot end end + def alert_bot + email_pattern = "alert%s@#{Settings.gitlab.host}" + + unique_internal(where(bot_type: :alert_bot), 'alert-bot', email_pattern) do |u| + u.bio = 'The GitLab alert bot' + u.name = 'GitLab Alert Bot' + end + end + override :internal def internal super.or(where.not(bot_type: nil)) diff --git a/ee/app/services/incident_management/create_issue_service.rb b/ee/app/services/incident_management/create_issue_service.rb index f30629d3cdfb6200b5a8a12a861d3053c9ab0b08..5fc8f9aac97f18a88c7f9491e8af635f40e615ea 100644 --- a/ee/app/services/incident_management/create_issue_service.rb +++ b/ee/app/services/incident_management/create_issue_service.rb @@ -24,9 +24,7 @@ def create_issue def issue_author strong_memoize(:issue_author) do - # This is a temporary solution before we've implemented User.alert_bot - # https://gitlab.com/gitlab-org/gitlab-ee/issues/10159 - User.ghost + User.alert_bot end end diff --git a/ee/changelogs/unreleased/10159-open-issues-from-alerts-as-gitlab-alert-bot.yml b/ee/changelogs/unreleased/10159-open-issues-from-alerts-as-gitlab-alert-bot.yml new file mode 100644 index 0000000000000000000000000000000000000000..dd21e25135fcab81439be75e964b4c954266f2a4 --- /dev/null +++ b/ee/changelogs/unreleased/10159-open-issues-from-alerts-as-gitlab-alert-bot.yml @@ -0,0 +1,5 @@ +--- +title: Let the GitLab Alert bot open incident issues +merge_request: 10460 +author: +type: added diff --git a/ee/spec/models/user_spec.rb b/ee/spec/models/user_spec.rb index d5cf39ccff2938b6807a1547b2f678daeebb013d..bd05cd42ea04332bd595edc6f33f1e2d47f50d19 100644 --- a/ee/spec/models/user_spec.rb +++ b/ee/spec/models/user_spec.rb @@ -524,8 +524,9 @@ let!(:user) { create(:user) } let!(:ghost) { described_class.ghost } let!(:support_bot) { described_class.support_bot } + let!(:alert_bot) { described_class.alert_bot } let!(:non_internal) { [user] } - let!(:internal) { [ghost, support_bot] } + let!(:internal) { [ghost, support_bot, alert_bot] } it 'returns non internal users' do expect(described_class.internal).to eq(internal) @@ -543,6 +544,7 @@ expect(ghost.bot?).to eq(false) expect(support_bot.bot?).to eq(true) + expect(alert_bot.bot?).to eq(true) end end end diff --git a/ee/spec/services/incident_management/create_issue_service_spec.rb b/ee/spec/services/incident_management/create_issue_service_spec.rb index f0841dae9ea898d9015665358f35726ad4774474..21d0b97b39371c129baabf377fc574e2f5c09788 100644 --- a/ee/spec/services/incident_management/create_issue_service_spec.rb +++ b/ee/spec/services/incident_management/create_issue_service_spec.rb @@ -28,7 +28,7 @@ expect(subject).to include(status: :success) issue = subject[:issue] - expect(issue.author).to eq(User.ghost) + expect(issue.author).to eq(User.alert_bot) expect(issue.title).to eq(alert_title) expect(issue.description).to include('Summary') expect(issue.description).to include(alert_title)