Skip to content
Snippets Groups Projects
Commit d57e809c authored by Douwe Maan's avatar Douwe Maan
Browse files

Set supported events per project service.

parent 85fa334e
No related branches found
No related tags found
1 merge request!8686add "Uplaod" and "Replace" functionality
Showing
with 156 additions and 57 deletions
Loading
Loading
@@ -65,9 +65,12 @@ automatically inspected. Leave blank to include all branches.'
]
end
 
def supported_events
%w(push)
end
def execute(data)
object_kind = data[:object_kind]
return unless object_kind == "push"
return unless supported_events.include?(data[:object_kind])
 
Asana.configure do |client|
client.api_key = api_key
Loading
Loading
Loading
Loading
@@ -42,9 +42,12 @@ class AssemblaService < Service
]
end
 
def supported_events
%w(push)
end
def execute(data)
object_kind = data[:object_kind]
return unless object_kind == "push"
return unless supported_events.include?(data[:object_kind])
 
url = "https://atlas.assembla.com/spaces/#{subdomain}/github_tool?secret_key=#{token}"
AssemblaService.post(url, body: { payload: data }.to_json, headers: { 'Content-Type' => 'application/json' })
Loading
Loading
Loading
Loading
@@ -73,6 +73,10 @@ class BambooService < CiService
]
end
 
def supported_events
%w(push)
end
def build_info(sha)
url = URI.parse("#{bamboo_url}/rest/api/latest/result?label=#{sha}")
 
Loading
Loading
@@ -123,8 +127,7 @@ class BambooService < CiService
end
 
def execute(data)
object_kind = data[:object_kind]
return unless object_kind == "push"
return unless supported_events.include?(data[:object_kind])
 
# Bamboo requires a GET and does not take any data.
self.class.get("#{bamboo_url}/updateAndBuild.action?buildKey=#{build_key}",
Loading
Loading
Loading
Loading
@@ -36,9 +36,12 @@ class BuildboxService < CiService
hook.save
end
 
def supported_events
%w(push)
end
def execute(data)
object_kind = data[:object_kind]
return unless object_kind == "push"
return unless supported_events.include?(data[:object_kind])
 
service_hook.execute(data)
end
Loading
Loading
Loading
Loading
@@ -41,9 +41,12 @@ class CampfireService < Service
]
end
 
def supported_events
%w(push)
end
def execute(data)
object_kind = data[:object_kind]
return unless object_kind == "push"
return unless supported_events.include?(data[:object_kind])
 
room = gate.find_room_by_name(self.room)
return true unless room
Loading
Loading
Loading
Loading
@@ -25,6 +25,10 @@ class CiService < Service
:ci
end
 
def supported_events
%w(push)
end
# Return complete url to build page
#
# Ex.
Loading
Loading
Loading
Loading
@@ -33,9 +33,12 @@ class EmailsOnPushService < Service
'emails_on_push'
end
 
def supported_events
%w(push)
end
def execute(data)
object_kind = data[:object_kind]
return unless object_kind == "push"
return unless supported_events.include?(data[:object_kind])
 
EmailsOnPushWorker.perform_async(project_id, recipients, data)
end
Loading
Loading
Loading
Loading
@@ -41,9 +41,12 @@ class FlowdockService < Service
]
end
 
def supported_events
%w(push)
end
def execute(data)
object_kind = data[:object_kind]
return unless object_kind == "push"
return unless supported_events.include?(data[:object_kind])
 
Flowdock::Git.post(
data[:ref],
Loading
Loading
Loading
Loading
@@ -42,9 +42,12 @@ class GemnasiumService < Service
]
end
 
def supported_events
%w(push)
end
def execute(data)
object_kind = data[:object_kind]
return unless object_kind == "push"
return unless supported_events.include?(data[:object_kind])
 
Gemnasium::GitlabService.execute(
ref: data[:ref],
Loading
Loading
Loading
Loading
@@ -30,9 +30,12 @@ class GitlabCiService < CiService
hook.save
end
 
def supported_events
%w(push tag_push)
end
def execute(data)
object_kind = data[:object_kind]
return unless %w(push tag_push).include?(object_kind)
return unless supported_events.include?(data[:object_kind])
 
service_hook.execute(data)
end
Loading
Loading
Loading
Loading
@@ -44,9 +44,12 @@ class HipchatService < Service
]
end
 
def supported_events
%w(push)
end
def execute(data)
object_kind = data[:object_kind]
return unless object_kind == "push"
return unless supported_events.include?(data[:object_kind])
 
gate[room].send('GitLab', create_message(data))
end
Loading
Loading
Loading
Loading
@@ -69,9 +69,12 @@ class IssueTrackerService < Service
end
end
 
def supported_events
%w(push)
end
def execute(data)
object_kind = data[:object_kind]
return unless object_kind == "push"
return unless supported_events.include?(data[:object_kind])
 
message = "#{self.type} was unable to reach #{self.project_url}. Check the url and try again."
result = false
Loading
Loading
Loading
Loading
@@ -41,9 +41,12 @@ class PivotaltrackerService < Service
]
end
 
def supported_events
%w(push)
end
def execute(data)
object_kind = data[:object_kind]
return unless object_kind == "push"
return unless supported_events.include?(data[:object_kind])
 
url = 'https://www.pivotaltracker.com/services/v5/source_commits'
data[:commits].each do |commit|
Loading
Loading
Loading
Loading
@@ -80,9 +80,12 @@ class PushoverService < Service
]
end
 
def supported_events
%w(push)
end
def execute(data)
object_kind = data[:object_kind]
return unless object_kind == "push"
return unless supported_events.include?(data[:object_kind])
 
ref = data[:ref].gsub('refs/heads/', '')
before = data[:before]
Loading
Loading
Loading
Loading
@@ -42,7 +42,12 @@ class SlackService < Service
]
end
 
def supported_events
%w(push issue merge_request)
end
def execute(data)
return unless supported_events.include?(data[:object_kind])
return unless webhook.present?
 
object_kind = data[:object_kind]
Loading
Loading
Loading
Loading
@@ -61,6 +61,10 @@ class TeamcityService < CiService
'teamcity'
end
 
def supported_events
%w(push)
end
def fields
[
{ type: 'text', name: 'teamcity_url',
Loading
Loading
@@ -120,8 +124,7 @@ class TeamcityService < CiService
end
 
def execute(data)
object_kind = data[:object_kind]
return unless object_kind == "push"
return unless supported_events.include?(data[:object_kind])
 
auth = {
username: username,
Loading
Loading
Loading
Loading
@@ -80,6 +80,10 @@ class Service < ActiveRecord::Base
[]
end
 
def supported_events
%w(push tag_push issue merge_request)
end
def execute
# implement inside child
end
Loading
Loading
@@ -105,6 +109,8 @@ class Service < ActiveRecord::Base
end
 
def async_execute(data)
return unless supported_events.include?(data[:object_kind])
Sidekiq::Client.enqueue(ProjectServiceWorker, id, data)
end
 
Loading
Loading
Loading
Loading
@@ -14,6 +14,43 @@
= preserve do
= markdown @service.help
 
.form-group
= f.label :url, "Trigger", class: 'control-label'
- if @service.supported_events.length > 1
.col-sm-10
- if @service.supported_events.include?("push")
%div
= f.check_box :push_events, class: 'pull-left'
.prepend-left-20
= f.label :push_events, class: 'list-label' do
%strong Push events
%p.light
This url will be triggered by a push to the repository
- if @service.supported_events.include?("tag_push")
%div
= f.check_box :tag_push_events, class: 'pull-left'
.prepend-left-20
= f.label :tag_push_events, class: 'list-label' do
%strong Tag push events
%p.light
This url will be triggered when a new tag is pushed to the repository
- if @service.supported_events.include?("issue")
%div
= f.check_box :issues_events, class: 'pull-left'
.prepend-left-20
= f.label :issues_events, class: 'list-label' do
%strong Issues events
%p.light
This url will be triggered when an issue is created
- if @service.supported_events.include?("merge_request")
%div
= f.check_box :merge_requests_events, class: 'pull-left'
.prepend-left-20
= f.label :merge_requests_events, class: 'list-label' do
%strong Merge Request events
%p.light
This url will be triggered when a merge request is created
- @service.fields.each do |field|
- name = field[:name]
- value = @service.send(name) unless field[:type] == 'password'
Loading
Loading
Loading
Loading
@@ -29,35 +29,40 @@
 
.form-group
= f.label :url, "Trigger", class: 'control-label'
.col-sm-10
%div
= f.check_box :push_events, class: 'pull-left'
.prepend-left-20
= f.label :push_events, class: 'list-label' do
%strong Push events
%p.light
This url will be triggered by a push to the repository
%div
= f.check_box :tag_push_events, class: 'pull-left'
.prepend-left-20
= f.label :tag_push_events, class: 'list-label' do
%strong Tag push events
%p.light
This url will be triggered when a new tag is pushed to the repository
%div
= f.check_box :issues_events, class: 'pull-left'
.prepend-left-20
= f.label :issues_events, class: 'list-label' do
%strong Issues events
%p.light
This url will be triggered when an issue is created
%div
= f.check_box :merge_requests_events, class: 'pull-left'
.prepend-left-20
= f.label :merge_requests_events, class: 'list-label' do
%strong Merge Request events
%p.light
This url will be triggered when a merge request is created
- if @service.supported_events.length > 1
.col-sm-10
- if @service.supported_events.include?("push")
%div
= f.check_box :push_events, class: 'pull-left'
.prepend-left-20
= f.label :push_events, class: 'list-label' do
%strong Push events
%p.light
This url will be triggered by a push to the repository
- if @service.supported_events.include?("tag_push")
%div
= f.check_box :tag_push_events, class: 'pull-left'
.prepend-left-20
= f.label :tag_push_events, class: 'list-label' do
%strong Tag push events
%p.light
This url will be triggered when a new tag is pushed to the repository
- if @service.supported_events.include?("issue")
%div
= f.check_box :issues_events, class: 'pull-left'
.prepend-left-20
= f.label :issues_events, class: 'list-label' do
%strong Issues events
%p.light
This url will be triggered when an issue is created
- if @service.supported_events.include?("merge_request")
%div
= f.check_box :merge_requests_events, class: 'pull-left'
.prepend-left-20
= f.label :merge_requests_events, class: 'list-label' do
%strong Merge Request events
%p.light
This url will be triggered when a merge request is created
 
- @service.fields.each do |field|
- name = field[:name]
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment