diff options
author | Z.J. van de Weg <zegerjan@gitlab.com> | 2016-10-06 20:27:44 +0200 |
---|---|---|
committer | Z.J. van de Weg <zegerjan@gitlab.com> | 2016-10-10 20:12:02 +0200 |
commit | 8015f96e0a30617df3e576f36b494f7c2bc21dff (patch) | |
tree | 39696fa0599b87f6ceb6b628ab97eecd70739aed | |
parent | a012701162df40e22e920633019865bdddc4cfa3 (diff) | |
download | gitlab-ce-8015f96e0a30617df3e576f36b494f7c2bc21dff.tar.gz |
Start for /deploy command
-rw-r--r-- | app/services/mattermost/base_service.rb | 2 | ||||
-rw-r--r-- | app/services/mattermost/deploy_service.rb | 33 |
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 |