summaryrefslogtreecommitdiff
path: root/app/services
diff options
context:
space:
mode:
authorKamil Trzcinski <ayufan@ayufan.eu>2016-10-07 14:55:47 +0200
committerZ.J. van de Weg <zegerjan@gitlab.com>2016-10-10 20:12:33 +0200
commitaad504d1ad172c8f9f0c31687077a9d9119980e7 (patch)
tree4cee37d270a08b9f98d084ce4bce9ab0020c33ea /app/services
parent0ce0c1be95728191e976f8f72843fd59719b06c7 (diff)
downloadgitlab-ce-aad504d1ad172c8f9f0c31687077a9d9119980e7.tar.gz
WIP
Diffstat (limited to 'app/services')
-rw-r--r--app/services/mattermost/deploy_service.rb34
1 files changed, 23 insertions, 11 deletions
diff --git a/app/services/mattermost/deploy_service.rb b/app/services/mattermost/deploy_service.rb
index 761abfde0f1..f23ad3007d8 100644
--- a/app/services/mattermost/deploy_service.rb
+++ b/app/services/mattermost/deploy_service.rb
@@ -1,17 +1,24 @@
module Mattermost
class DeployService < BaseService
def execute
- environment_name, action = parse_command
+ environment_name, action_name = parse_command
environment = project.environments.find_by(name: environment_name)
-
return respond_404 unless can?(current_user, :read_environment, environment)
deployment = environment.last_deployment
- return respond_404 unless can?(current_user, :create_deployment, deployment) && deployment.deployable
-
- build = environment.last_deployment.other_actions.find { |action| action.name = action }
-
- generate_response(build.play(current_user))
+ return respond_404 unless can?(current_user, :create_deployment, deployment)
+
+ build = deployment.manual_actions.find { |action| action.name = action_name }
+
+ if build
+ new_build = build.play(current_user)
+ generate_response(new_build)
+ else
+ {
+ response_type: :ephemeral,
+ text: "No action '#{action_name}' defined for #{environment_name}."
+ }
+ end
end
private
@@ -19,15 +26,20 @@ module Mattermost
def single_resource(build)
{
response_type: :in_channel,
- text: "Deploy started: "
+ text: "Action '#{action_name}' started on '#{environment_name}' you can [follow the progress](#{link(new_build)})."
}
end
+ def link(build)
+ Gitlab::Routing.
+ url_helpers.
+ namespace_project_build_url(project.namespace, project, build)
+ end
+
def parse_command
- matches = params[:text].match(/\A\/deploy (?<name>\w+) to (?<action>\w+)/)
- respond_404 unless matches
+ matches = params[:text].match(/\A(?<name>\w+) to (?<action>\w+)/)
- matches[:name], matches[:action]
+ matches ? [matches[:name], matches[:action]] : nil
end
end
end