diff options
author | Kamil Trzcinski <ayufan@ayufan.eu> | 2016-10-07 14:55:47 +0200 |
---|---|---|
committer | Z.J. van de Weg <zegerjan@gitlab.com> | 2016-10-10 20:12:33 +0200 |
commit | aad504d1ad172c8f9f0c31687077a9d9119980e7 (patch) | |
tree | 4cee37d270a08b9f98d084ce4bce9ab0020c33ea /app/services | |
parent | 0ce0c1be95728191e976f8f72843fd59719b06c7 (diff) | |
download | gitlab-ce-aad504d1ad172c8f9f0c31687077a9d9119980e7.tar.gz |
WIP
Diffstat (limited to 'app/services')
-rw-r--r-- | app/services/mattermost/deploy_service.rb | 34 |
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 |