summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZ.J. van de Weg <zegerjan@gitlab.com>2016-10-06 20:27:44 +0200
committerZ.J. van de Weg <zegerjan@gitlab.com>2016-10-10 20:12:02 +0200
commit8015f96e0a30617df3e576f36b494f7c2bc21dff (patch)
tree39696fa0599b87f6ceb6b628ab97eecd70739aed
parenta012701162df40e22e920633019865bdddc4cfa3 (diff)
downloadgitlab-ce-8015f96e0a30617df3e576f36b494f7c2bc21dff.tar.gz
Start for /deploy command
-rw-r--r--app/services/mattermost/base_service.rb2
-rw-r--r--app/services/mattermost/deploy_service.rb33
2 files changed, 34 insertions, 1 deletions
diff --git a/app/services/mattermost/base_service.rb b/app/services/mattermost/base_service.rb
index 570416c61b3..83de4852ca4 100644
--- a/app/services/mattermost/base_service.rb
+++ b/app/services/mattermost/base_service.rb
@@ -37,7 +37,7 @@ module Mattermost
def respond_404
{
response_type: :ephemeral,
- text: "404 not found! Please make you use the right identifier. :boom:",
+ text: "404 not found! GitLab couldn't find what your were looking for! :boom:",
}
end
diff --git a/app/services/mattermost/deploy_service.rb b/app/services/mattermost/deploy_service.rb
index e69de29bb2d..761abfde0f1 100644
--- a/app/services/mattermost/deploy_service.rb
+++ b/app/services/mattermost/deploy_service.rb
@@ -0,0 +1,33 @@
+module Mattermost
+ class DeployService < BaseService
+ def execute
+ environment_name, action = 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))
+ end
+
+ private
+
+ def single_resource(build)
+ {
+ response_type: :in_channel,
+ text: "Deploy started: "
+ }
+ end
+
+ def parse_command
+ matches = params[:text].match(/\A\/deploy (?<name>\w+) to (?<action>\w+)/)
+ respond_404 unless matches
+
+ matches[:name], matches[:action]
+ end
+ end
+end