diff --git a/app/models/project_services/chat_message/deployment_message.rb b/app/models/project_services/chat_message/deployment_message.rb index 656a3e6ab4b670a55e988227e7b6fc57804a1ffb..dae3a56116e150a9fa4e564dc1d321113c540493 100644 --- a/app/models/project_services/chat_message/deployment_message.rb +++ b/app/models/project_services/chat_message/deployment_message.rb @@ -2,27 +2,31 @@ module ChatMessage class DeploymentMessage < BaseMessage + attr_reader :commit_title attr_reader :commit_url attr_reader :deployable_id attr_reader :deployable_url attr_reader :environment attr_reader :short_sha attr_reader :status + attr_reader :user_url def initialize(data) super + @commit_title = data[:commit_title] @commit_url = data[:commit_url] @deployable_id = data[:deployable_id] @deployable_url = data[:deployable_url] @environment = data[:environment] @short_sha = data[:short_sha] @status = data[:status] + @user_url = data[:user_url] end def attachments [{ - text: "#{project_link}\n#{deployment_link}, SHA #{commit_link}, by #{user_combined_name}", + text: "#{project_link} with job #{deployment_link} by #{user_link}\n#{commit_link}: #{commit_title}", color: color }] end @@ -55,7 +59,11 @@ module ChatMessage end def deployment_link - link("Job ##{deployable_id}", deployable_url) + link("##{deployable_id}", deployable_url) + end + + def user_link + link(user_combined_name, user_url) end def commit_link diff --git a/changelogs/unreleased/issue-61038-deploy-chat-message-update.yml b/changelogs/unreleased/issue-61038-deploy-chat-message-update.yml new file mode 100644 index 0000000000000000000000000000000000000000..c85ddc7b91c54c572368a926f80f5648f026a078 --- /dev/null +++ b/changelogs/unreleased/issue-61038-deploy-chat-message-update.yml @@ -0,0 +1,5 @@ +--- +title: Update deployment event chat notification message +merge_request: 27972 +author: +type: changed diff --git a/lib/gitlab/data_builder/deployment.rb b/lib/gitlab/data_builder/deployment.rb index 26705dd1f6f0e5f00684b53be652ad932f3e7c0c..f11e032ab843aa888115cb0359448647abccf007 100644 --- a/lib/gitlab/data_builder/deployment.rb +++ b/lib/gitlab/data_builder/deployment.rb @@ -15,7 +15,9 @@ module Gitlab project: deployment.project.hook_attrs, short_sha: deployment.short_sha, user: deployment.user.hook_attrs, - commit_url: Gitlab::UrlBuilder.build(deployment.commit) + user_url: Gitlab::UrlBuilder.build(deployment.user), + commit_url: Gitlab::UrlBuilder.build(deployment.commit), + commit_title: deployment.commit.title } end end diff --git a/lib/gitlab/url_builder.rb b/lib/gitlab/url_builder.rb index 169ce8ab026a7c5630c1685f12deec6943981cc9..42cf1ec1f0e911b5e44cb012c847c7689d4a4251 100644 --- a/lib/gitlab/url_builder.rb +++ b/lib/gitlab/url_builder.rb @@ -32,6 +32,8 @@ module Gitlab milestone_url(object) when ::Ci::Build project_job_url(object.project, object) + when User + user_url(object) else raise NotImplementedError.new("No URL builder defined for #{object.class}") end diff --git a/spec/lib/gitlab/data_builder/deployment_spec.rb b/spec/lib/gitlab/data_builder/deployment_spec.rb index b89a44e178b9354bf2ee4172af4f857fe405ea7b..0a6e2302b09cc98cf7cfb5598478823092a1b7d0 100644 --- a/spec/lib/gitlab/data_builder/deployment_spec.rb +++ b/spec/lib/gitlab/data_builder/deployment_spec.rb @@ -19,6 +19,7 @@ describe Gitlab::DataBuilder::Deployment do deployment = create(:deployment, status: :failed, environment: environment, sha: commit.sha, project: project) deployable = deployment.deployable expected_deployable_url = Gitlab::Routing.url_helpers.project_job_url(deployable.project, deployable) + expected_user_url = Gitlab::Routing.url_helpers.user_url(deployment.user) expected_commit_url = Gitlab::UrlBuilder.build(commit) data = described_class.build(deployment) @@ -30,7 +31,9 @@ describe Gitlab::DataBuilder::Deployment do expect(data[:project]).to eq(project.hook_attrs) expect(data[:short_sha]).to eq(deployment.short_sha) expect(data[:user]).to eq(deployment.user.hook_attrs) + expect(data[:user_url]).to eq(expected_user_url) expect(data[:commit_url]).to eq(expected_commit_url) + expect(data[:commit_title]).to eq(commit.title) end end end diff --git a/spec/models/project_services/chat_message/deployment_message_spec.rb b/spec/models/project_services/chat_message/deployment_message_spec.rb index 86565ce8b01488a4e5bfd26d6b77acd8db7b8bea..42c1689db3d1876289de24d6d97a04c70d247a77 100644 --- a/spec/models/project_services/chat_message/deployment_message_spec.rb +++ b/spec/models/project_services/chat_message/deployment_message_spec.rb @@ -89,8 +89,10 @@ describe ChatMessage::DeploymentMessage do name: "Jane Person", username: "jane" }, + user_url: "user_url", short_sha: "12345678", - commit_url: "commit_url" + commit_url: "commit_url", + commit_title: "commit title text" }.merge(params) end @@ -104,12 +106,13 @@ describe ChatMessage::DeploymentMessage do deployment = create(:deployment, :success, deployable: ci_build, environment: environment, project: project, user: user, sha: commit.sha) job_url = Gitlab::Routing.url_helpers.project_job_url(project, ci_build) commit_url = Gitlab::UrlBuilder.build(deployment.commit) + user_url = Gitlab::Routing.url_helpers.user_url(user) data = Gitlab::DataBuilder::Deployment.build(deployment) message = described_class.new(data) expect(message.attachments).to eq([{ - text: "[myspace/myproject](#{project.web_url})\n[Job ##{ci_build.id}](#{job_url}), SHA [#{deployment.short_sha}](#{commit_url}), by John Smith (smith)", + text: "[myspace/myproject](#{project.web_url}) with job [##{ci_build.id}](#{job_url}) by [John Smith (smith)](#{user_url})\n[#{deployment.short_sha}](#{commit_url}): #{commit.title}", color: "good" }]) end @@ -120,7 +123,7 @@ describe ChatMessage::DeploymentMessage do message = described_class.new(data) expect(message.attachments).to eq([{ - text: "[project_path_with_namespace](project_web_url)\n[Job #3](deployable_url), SHA [12345678](commit_url), by Jane Person (jane)", + text: "[project_path_with_namespace](project_web_url) with job [#3](deployable_url) by [Jane Person (jane)](user_url)\n[12345678](commit_url): commit title text", color: "danger" }]) end @@ -131,7 +134,7 @@ describe ChatMessage::DeploymentMessage do message = described_class.new(data) expect(message.attachments).to eq([{ - text: "[project_path_with_namespace](project_web_url)\n[Job #3](deployable_url), SHA [12345678](commit_url), by Jane Person (jane)", + text: "[project_path_with_namespace](project_web_url) with job [#3](deployable_url) by [Jane Person (jane)](user_url)\n[12345678](commit_url): commit title text", color: "warning" }]) end @@ -142,7 +145,7 @@ describe ChatMessage::DeploymentMessage do message = described_class.new(data) expect(message.attachments).to eq([{ - text: "[project_path_with_namespace](project_web_url)\n[Job #3](deployable_url), SHA [12345678](commit_url), by Jane Person (jane)", + text: "[project_path_with_namespace](project_web_url) with job [#3](deployable_url) by [Jane Person (jane)](user_url)\n[12345678](commit_url): commit title text", color: "#334455" }]) end