Created
March 3, 2014 13:35
-
-
Save darinkes/9325003 to your computer and use it in GitHub Desktop.
teamcity diff for gitlab
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/app/controllers/projects/merge_requests_controller.rb b/app/controllers/projects/merge_requests_controller.rb | |
index 51509ec..e4a472e 100644 | |
--- a/app/controllers/projects/merge_requests_controller.rb | |
+++ b/app/controllers/projects/merge_requests_controller.rb | |
@@ -166,7 +166,11 @@ class Projects::MergeRequestsController < Projects::ApplicationController | |
end | |
def ci_status | |
- status = @merge_request.source_project.gitlab_ci_service.commit_status(merge_request.last_commit.sha) | |
+ if @merge_request.source_project.gitlab_ci? | |
+ status = @merge_request.source_project.gitlab_ci_service.commit_status(merge_request.last_commit.sha) | |
+ elsif @merge_request.source_project.teamcity? | |
+ status = @merge_request.source_project.teamcity_service.commit_status(merge_request.last_commit.sha) | |
+ end | |
response = {status: status} | |
render json: response | |
diff --git a/app/helpers/merge_requests_helper.rb b/app/helpers/merge_requests_helper.rb | |
index b8285d4..b438af9 100644 | |
--- a/app/helpers/merge_requests_helper.rb | |
+++ b/app/helpers/merge_requests_helper.rb | |
@@ -32,7 +32,11 @@ module MergeRequestsHelper | |
end | |
def ci_build_details_path merge_request | |
- merge_request.source_project.gitlab_ci_service.build_page(merge_request.last_commit.sha) | |
+ if merge_request.source_project.gitlab_ci? | |
+ merge_request.source_project.gitlab_ci_service.build_page(merge_request.last_commit.sha) | |
+ elsif | |
+ merge_request.source_project.teamcity_service.build_page(merge_request.last_commit.sha) | |
+ end | |
end | |
def merge_path_description(merge_request, separator) | |
diff --git a/app/models/project.rb b/app/models/project.rb | |
index 47dc8a1..14290e9 100644 | |
--- a/app/models/project.rb | |
+++ b/app/models/project.rb | |
@@ -50,6 +50,7 @@ class Project < ActiveRecord::Base | |
has_one :last_event, -> {order 'events.created_at DESC'}, class_name: 'Event', foreign_key: 'project_id' | |
has_one :gitlab_ci_service, dependent: :destroy | |
+ has_one :teamcity_service, dependent: :destroy | |
has_one :campfire_service, dependent: :destroy | |
has_one :emails_on_push_service, dependent: :destroy | |
has_one :pivotaltracker_service, dependent: :destroy | |
@@ -277,11 +278,15 @@ class Project < ActiveRecord::Base | |
end | |
def available_services_names | |
- %w(gitlab_ci campfire hipchat pivotaltracker flowdock assembla emails_on_push gemnasium) | |
+ %w(gitlab_ci teamcity campfire hipchat pivotaltracker flowdock assembla emails_on_push gemnasium) | |
end | |
def gitlab_ci? | |
- gitlab_ci_service && gitlab_ci_service.active | |
+ gitlab_ci_service && gitlab_ci_service.active | |
+ end | |
+ | |
+ def teamcity? | |
+ teamcity_service && teamcity_service.active | |
end | |
# For compatibility with old code | |
diff --git a/app/models/project_services/teamcity_service.rb b/app/models/project_services/teamcity_service.rb | |
new file mode 100644 | |
index 0000000..dbc409d | |
--- /dev/null | |
+++ b/app/models/project_services/teamcity_service.rb | |
@@ -0,0 +1,77 @@ | |
+# == Schema Information | |
+# | |
+# Table name: services | |
+# | |
+# id :integer not null, primary key | |
+# type :string(255) | |
+# title :string(255) | |
+# token :string(255) | |
+# project_id :integer not null | |
+# created_at :datetime not null | |
+# updated_at :datetime not null | |
+# active :boolean default(FALSE), not null | |
+# project_url :string(255) | |
+# subdomain :string(255) | |
+# room :string(255) | |
+# api_key :string(255) | |
+# | |
+ | |
+class TeamcityService < Service | |
+ delegate :execute, to: :service_hook, prefix: nil | |
+ | |
+ after_save :compose_service_hook, if: :activated? | |
+ | |
+ def compose_service_hook | |
+ hook = service_hook || build_service_hook | |
+ hook.url = [project_url, "/build", "?token=#{token}"].join("") | |
+ hook.save | |
+ end | |
+ | |
+ def commit_status_path sha | |
+ #project_url + "/builds/#{sha}/status.json?token=#{token}" | |
+ "blabla" | |
+ end | |
+ | |
+ def commit_status sha | |
+ return "failed" | |
+ response = HTTParty.get(commit_status_path(sha)) | |
+ | |
+ if response.code == 200 and response["status"] | |
+ response["status"] | |
+ else | |
+ :error | |
+ end | |
+ end | |
+ | |
+ def build_page sha | |
+ #project_url + "/builds/#{sha}" | |
+ end | |
+ | |
+ def builds_path | |
+ #project_url + "?ref=" + project.default_branch | |
+ end | |
+ | |
+ def status_img_path | |
+ #project_url + "/status.png?ref=" + project.default_branch | |
+ "http://172.16.4.10/app/rest/builds/buildType:(id:bt3)/statusIcon" | |
+ end | |
+ | |
+ def title | |
+ 'TeamCity' | |
+ end | |
+ | |
+ def description | |
+ 'Continuous integration server TeamCity' | |
+ end | |
+ | |
+ def to_param | |
+ 'teamcity' | |
+ end | |
+ | |
+ def fields | |
+ [ | |
+ # { type: 'text', name: 'token', placeholder: 'GitLab CI project specific token' }, | |
+ # { type: 'text', name: 'project_url', placeholder: 'http://ci.gitlabhq.com/projects/3'} | |
+ ] | |
+ end | |
+end | |
diff --git a/app/views/projects/merge_requests/_show.html.haml b/app/views/projects/merge_requests/_show.html.haml | |
index c82afeb..c9ffacb 100644 | |
--- a/app/views/projects/merge_requests/_show.html.haml | |
+++ b/app/views/projects/merge_requests/_show.html.haml | |
@@ -7,7 +7,7 @@ | |
= render "projects/merge_requests/show/mr_accept" | |
- else | |
= render "projects/merge_requests/show/no_accept" | |
- - if @merge_request.source_project.gitlab_ci? | |
+ - if @merge_request.source_project.gitlab_ci? || @merge_request.source_project.teamcity? | |
= render "projects/merge_requests/show/mr_ci" | |
= render "projects/merge_requests/show/commits" | |
@@ -42,7 +42,7 @@ | |
url_to_automerge_check: "#{automerge_check_project_merge_request_path(@project, @merge_request)}", | |
check_enable: #{@merge_request.unchecked? ? "true" : "false"}, | |
url_to_ci_check: "#{ci_status_project_merge_request_path(@project, @merge_request)}", | |
- ci_enable: #{@project.gitlab_ci? ? "true" : "false"}, | |
+ ci_enable: #{@project.gitlab_ci? || @project.teamcity? ? "true" : "false"}, | |
current_status: "#{@merge_request.merge_status_name}", | |
action: "#{controller.action_name}" | |
}); | |
diff --git a/app/views/projects/show.html.haml b/app/views/projects/show.html.haml | |
index 8a1e1d3..436a213 100644 | |
--- a/app/views/projects/show.html.haml | |
+++ b/app/views/projects/show.html.haml | |
@@ -60,3 +60,7 @@ | |
%hr | |
= link_to @project.gitlab_ci_service.builds_path do | |
= image_tag @project.gitlab_ci_service.status_img_path, alt: "build status" | |
+ - if @project.teamcity? | |
+ %hr | |
+ = link_to @project.teamcity_service.builds_path do | |
+ = image_tag @project.teamcity_service.status_img_path, alt: "build status" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment