From cce27a6a009cf93e0dcc8fa3f2f7a8e3fcd828dd Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Thu, 15 May 2014 11:06:17 +0300 Subject: [PATCH] Add parent CiService class for easy add of new services Signed-off-by: Dmitriy Zaporozhets --- app/models/project_services/ci_service.rb | 34 +++++++++++++++++++ .../project_services/gitlab_ci_service.rb | 2 +- .../project_services/jenkins_service.rb | 8 ++--- app/models/service.rb | 4 +++ 4 files changed, 41 insertions(+), 7 deletions(-) create mode 100644 app/models/project_services/ci_service.rb diff --git a/app/models/project_services/ci_service.rb b/app/models/project_services/ci_service.rb new file mode 100644 index 0000000000..fd34a2a35e --- /dev/null +++ b/app/models/project_services/ci_service.rb @@ -0,0 +1,34 @@ +# Base class for CI services +# List methods you need to implement to get your CI service +# working with GitLab Merge Requests +class CiService < Service + def category + :ci + end + + # Return complete url to build page + # + # Ex. + # http://jenkins.example.com:8888/job/test1/scm/bySHA1/12d65c + # + def build_page(sha) + # implement inside child + end + + # Return string with build status or :error symbol + # + # Allowed states: 'success', 'failed', 'running', 'pending' + # + # + # Ex. + # @service.commit_status('13be4ac') + # # => 'success' + # + # @service.commit_status('2abe4ac') + # # => 'running' + # + # + def commit_status(sha) + # implement inside child + end +end diff --git a/app/models/project_services/gitlab_ci_service.rb b/app/models/project_services/gitlab_ci_service.rb index ed1944f337..ef395e0ec6 100644 --- a/app/models/project_services/gitlab_ci_service.rb +++ b/app/models/project_services/gitlab_ci_service.rb @@ -17,7 +17,7 @@ # api_key :string(255) # -class GitlabCiService < Service +class GitlabCiService < CiService attr_accessible :project_url validates :project_url, presence: true, if: :activated? diff --git a/app/models/project_services/jenkins_service.rb b/app/models/project_services/jenkins_service.rb index efa7f2100d..c8cac62a01 100644 --- a/app/models/project_services/jenkins_service.rb +++ b/app/models/project_services/jenkins_service.rb @@ -17,7 +17,7 @@ # api_key :string(255) # -class JenkinsService < Service +class JenkinsService < CiService attr_accessible :project_url validates :project_url, presence: true, if: :activated? @@ -55,7 +55,7 @@ class JenkinsService < Service end def commit_status sha - response = HTTParty.get(commit_status_path(sha), verify: false) + response = HTTParty.get(build_page(sha), verify: false) if response.code == 200 if response.include?('alt="Success"') @@ -71,8 +71,4 @@ class JenkinsService < Service :error end end - - def commit_status_path sha - project_url + "/job/test1/scm/bySHA1/#{sha}" - end end diff --git a/app/models/service.rb b/app/models/service.rb index ea00039521..f0b65c7603 100644 --- a/app/models/service.rb +++ b/app/models/service.rb @@ -33,6 +33,10 @@ class Service < ActiveRecord::Base active end + def category + :common + end + def title # implement inside child end