Commit b0c5d357 authored by Kamil Trzciński's avatar Kamil Trzciński Committed by Alejandro Rodríguez

Merge branch 'improve-deploy-message' into 'master'

Improve deploy message

## What does this MR do?
Improves deploy message to make it more descriptive and useable then what is already offered by deploy command.

## Does this MR meet the acceptance criteria?

- [ ] [Changelog entry](https://docs.gitlab.com/ce/development/changelog.html) added
- [ ] [Documentation created/updated](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/doc/development/doc_styleguide.md)
- [ ] API support added
- Tests
  - [ ] Added for this feature/bug
  - [ ] All builds are passing
- [ ] Conform by the [merge request performance guides](http://docs.gitlab.com/ce/development/merge_request_performance_guidelines.html)
- [ ] Conform by the [style guides](https://gitlab.com/gitlab-org/gitlab-ce/blob/master/CONTRIBUTING.md#style-guides)
- [ ] Branch has no merge conflicts with `master` (if it does - rebase it please)
- [ ] [Squashed related commits together](https://git-scm.com/book/en/Git-Tools-Rewriting-History#Squashing-Commits)

## What are the relevant issue numbers?

See merge request !7629
parent 4d5cae13
module Gitlab module Gitlab
module ChatCommands module ChatCommands
class Deploy < BaseCommand class Deploy < BaseCommand
include Gitlab::Routing.url_helpers
def self.match(text) def self.match(text)
/\Adeploy\s+(?<from>.*)\s+to+\s+(?<to>.*)\z/.match(text) /\Adeploy\s+(?<from>.*)\s+to+\s+(?<to>.*)\z/.match(text)
end end
...@@ -25,7 +27,7 @@ module Gitlab ...@@ -25,7 +27,7 @@ module Gitlab
return unless actions.present? return unless actions.present?
if actions.one? if actions.one?
actions.first.play(current_user) play!(from, to, actions.first)
else else
Result.new(:error, 'Too many actions defined') Result.new(:error, 'Too many actions defined')
end end
...@@ -33,12 +35,23 @@ module Gitlab ...@@ -33,12 +35,23 @@ module Gitlab
private private
def play!(from, to, action)
new_action = action.play(current_user)
Result.new(:success, "Deployment from #{from} to #{to} started. Follow the progress: #{url(new_action)}.")
end
def find_actions(from, to) def find_actions(from, to)
environment = project.environments.find_by(name: from) environment = project.environments.find_by(name: from)
return unless environment return unless environment
environment.actions_for(to).select(&:starts_environment?) environment.actions_for(to).select(&:starts_environment?)
end end
def url(subject)
polymorphic_url(
[ subject.project.namespace.becomes(Namespace), subject.project, subject ])
end
end end
end end
end end
...@@ -49,8 +49,13 @@ module Mattermost ...@@ -49,8 +49,13 @@ module Mattermost
private private
def show_result(result) def show_result(result)
case result.type
when :success
in_channel_response(result.message)
else
ephemeral_response(result.message) ephemeral_response(result.message)
end end
end
def not_found def not_found
ephemeral_response("404 not found! GitLab couldn't find what you were looking for! :boom:") ephemeral_response("404 not found! GitLab couldn't find what you were looking for! :boom:")
......
...@@ -74,7 +74,7 @@ describe Gitlab::ChatCommands::Command, service: true do ...@@ -74,7 +74,7 @@ describe Gitlab::ChatCommands::Command, service: true do
end end
it 'returns action' do it 'returns action' do
expect(subject[:text]).to include(manual.name) expect(subject[:text]).to include('Deployment from staging to production started')
expect(subject[:response_type]).to be(:in_channel) expect(subject[:response_type]).to be(:in_channel)
end end
......
...@@ -36,8 +36,9 @@ describe Gitlab::ChatCommands::Deploy, service: true do ...@@ -36,8 +36,9 @@ describe Gitlab::ChatCommands::Deploy, service: true do
create(:ci_build, :manual, project: project, pipeline: build.pipeline, name: 'first', environment: 'production') create(:ci_build, :manual, project: project, pipeline: build.pipeline, name: 'first', environment: 'production')
end end
it 'returns action' do it 'returns success result' do
expect(subject).to eq(manual1) expect(subject.type).to eq(:success)
expect(subject.message).to include('Deployment from staging to production started')
end end
context 'when duplicate action exists' do context 'when duplicate action exists' do
...@@ -46,7 +47,8 @@ describe Gitlab::ChatCommands::Deploy, service: true do ...@@ -46,7 +47,8 @@ describe Gitlab::ChatCommands::Deploy, service: true do
end end
it 'returns error' do it 'returns error' do
expect(subject.message).to eq('Too many actions defined') expect(subject.type).to eq(:error)
expect(subject.message).to include('Too many actions defined')
end end
end end
...@@ -57,8 +59,9 @@ describe Gitlab::ChatCommands::Deploy, service: true do ...@@ -57,8 +59,9 @@ describe Gitlab::ChatCommands::Deploy, service: true do
name: 'teardown', environment: 'production') name: 'teardown', environment: 'production')
end end
it 'returns error' do it 'returns success result' do
expect(subject).to eq(manual1) expect(subject.type).to eq(:success)
expect(subject.message).to include('Deployment from staging to production started')
end end
end end
end end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment