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
This commit is contained in:
commit
0472bc66f3
4 changed files with 29 additions and 8 deletions
|
@ -1,6 +1,8 @@
|
|||
module Gitlab
|
||||
module ChatCommands
|
||||
class Deploy < BaseCommand
|
||||
include Gitlab::Routing.url_helpers
|
||||
|
||||
def self.match(text)
|
||||
/\Adeploy\s+(?<from>.*)\s+to+\s+(?<to>.*)\z/.match(text)
|
||||
end
|
||||
|
@ -25,7 +27,7 @@ module Gitlab
|
|||
return unless actions.present?
|
||||
|
||||
if actions.one?
|
||||
actions.first.play(current_user)
|
||||
play!(from, to, actions.first)
|
||||
else
|
||||
Result.new(:error, 'Too many actions defined')
|
||||
end
|
||||
|
@ -33,12 +35,23 @@ module Gitlab
|
|||
|
||||
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)
|
||||
environment = project.environments.find_by(name: from)
|
||||
return unless environment
|
||||
|
||||
environment.actions_for(to).select(&:starts_environment?)
|
||||
end
|
||||
|
||||
def url(subject)
|
||||
polymorphic_url(
|
||||
[ subject.project.namespace.becomes(Namespace), subject.project, subject ])
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -49,7 +49,12 @@ module Mattermost
|
|||
private
|
||||
|
||||
def show_result(result)
|
||||
ephemeral_response(result.message)
|
||||
case result.type
|
||||
when :success
|
||||
in_channel_response(result.message)
|
||||
else
|
||||
ephemeral_response(result.message)
|
||||
end
|
||||
end
|
||||
|
||||
def not_found
|
||||
|
|
|
@ -74,7 +74,7 @@ describe Gitlab::ChatCommands::Command, service: true do
|
|||
end
|
||||
|
||||
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)
|
||||
end
|
||||
|
||||
|
|
|
@ -36,8 +36,9 @@ describe Gitlab::ChatCommands::Deploy, service: true do
|
|||
create(:ci_build, :manual, project: project, pipeline: build.pipeline, name: 'first', environment: 'production')
|
||||
end
|
||||
|
||||
it 'returns action' do
|
||||
expect(subject).to eq(manual1)
|
||||
it 'returns success result' do
|
||||
expect(subject.type).to eq(:success)
|
||||
expect(subject.message).to include('Deployment from staging to production started')
|
||||
end
|
||||
|
||||
context 'when duplicate action exists' do
|
||||
|
@ -46,7 +47,8 @@ describe Gitlab::ChatCommands::Deploy, service: true do
|
|||
end
|
||||
|
||||
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
|
||||
|
||||
|
@ -57,8 +59,9 @@ describe Gitlab::ChatCommands::Deploy, service: true do
|
|||
name: 'teardown', environment: 'production')
|
||||
end
|
||||
|
||||
it 'returns error' do
|
||||
expect(subject).to eq(manual1)
|
||||
it 'returns success result' do
|
||||
expect(subject.type).to eq(:success)
|
||||
expect(subject.message).to include('Deployment from staging to production started')
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue