blob: 665f136fbe5e20c2c1d0cc07167fc98ce1ade793 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
|
# == Schema Information
#
# Table name: commits
#
# id :integer not null, primary key
# project_id :integer
# ref :string(255)
# sha :string(255)
# before_sha :string(255)
# push_data :text
# created_at :datetime
# updated_at :datetime
#
class Commit < ActiveRecord::Base
belongs_to :project
has_many :builds
serialize :push_data
validates_presence_of :ref, :sha, :before_sha, :push_data
validate :valid_commit_sha
def last_build
builds.last
end
def valid_commit_sha
if self.sha =~ /\A00000000/
self.errors.add(:sha, " cant be 00000000 (branch removal)")
end
end
def compare?
gitlab? && before_sha
end
def gitlab?
project.gitlab?
end
def ci_skip?
!!(git_commit_message =~ /(\[ci skip\])/)
end
def git_author_name
commit_data[:author][:name] if commit_data && commit_data[:author]
end
def git_author_email
commit_data[:author][:email] if commit_data && commit_data[:author]
end
def git_commit_message
commit_data[:message] if commit_data
end
def short_before_sha
before_sha[0..8]
end
def short_sha
sha[0..8]
end
def commit_data
push_data[:commits].each do |commit|
return commit if commit[:id] == sha
end
rescue
nil
end
# Build a clone-able repo url
# using http and basic auth
def repo_url
auth = "gitlab-ci-token:#{project.token}@"
url = project.gitlab_url + ".git"
url.sub(/^https?:\/\//) do |prefix|
prefix + auth
end
end
def allow_git_fetch
project.allow_git_fetch
end
def project_name
project.name
end
def project_recipients
recipients = project.email_recipients.split(' ')
recipients << git_author_email if project.email_add_committer?
recipients.uniq
end
end
|