gitlab_ci_service.rb 1.69 KB
Newer Older
1
2
3
4
# == Schema Information
#
# Table name: services
#
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
5
6
7
8
9
10
11
12
13
#  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)
14
15
16
17
18
#

class GitlabCiService < Service
  attr_accessible :project_url

19
20
  validates :project_url, presence: true, if: :activated?
  validates :token, presence: true, if: :activated?
21
22
23

  delegate :execute, to: :service_hook, prefix: nil

24
25
  after_save :compose_service_hook, if: :activated?

26
27
28
29
30
  def compose_service_hook
    hook = service_hook || build_service_hook
    hook.url = [project_url, "/build", "?token=#{token}"].join("")
    hook.save
  end
Dmitriy Zaporozhets's avatar
Dmitriy Zaporozhets committed
31

32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
  def commit_status_path sha
    project_url + "/builds/#{sha}/status.json?token=#{token}"
  end

  def commit_status sha
    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
49
50
51
52
53
54
55
56

  def builds_path
    project_url + "?ref=" + project.default_branch
  end

  def status_img_path
    project_url + "/status.png?ref=" + project.default_branch
  end
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75

  def title
    'GitLab CI'
  end

  def description
    'Continuous integration server from GitLab'
  end

  def to_param
    'gitlab_ci'
  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
76
end