community.rb
2.36 KB
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
require_dependency 'community'
class Community
settings_items :allow_sonar_integration, :type => :boolean, :default => true
settings_items :allow_gitlab_integration, :type => :boolean, :default => true
settings_items :allow_jenkins_integration, :type => :boolean, :default => true
settings_items :serpro_integration_plugin_gitlab, :type => Hash, :default => {}
settings_items :serpro_integration_plugin_jenkins, :type => Hash, :default => {}
settings_items :serpro_integration_plugin_sonar, :type => Hash, :default => {}
attr_accessible :allow_unauthenticated_comments, :allow_gitlab_integration, :allow_sonar_integration, :allow_jenkins_integration, :serpro_integration_plugin_gitlab, :serpro_integration_plugin_jenkins, :serpro_integration_plugin_sonar
before_update :create_integration_projects
def create_integration_projects
return unless setting_changed?(:serpro_integration_plugin_gitlab)
if allow_gitlab_integration
gitlab_integration = SerproIntegrationPlugin::GitlabIntegration.new(gitlab_host, gitlab_private_token)
gitlab_project = gitlab_integration.create_gitlab_project(self)
serpro_integration_plugin_gitlab[:project_id] = gitlab_project.id
if allow_jenkins_integration
jenkins_integration = SerproIntegrationPlugin::JenkinsIntegration.new(jenkins_host, jenkins_private_token, jenkins_user)
jenkins_integration.create_jenkis_project(self, gitlab_project.path_with_namespace, gitlab_project.web_url, gitlab_project.http_url_to_repo)
end
end
end
def serpro_integration_plugin_settings
@settings ||= Noosfero::Plugin::Settings.new(environment, SerproIntegrationPlugin)
end
def gitlab_group
serpro_integration_plugin_gitlab[:group] || self.identifier
end
def gitlab_project_name
serpro_integration_plugin_gitlab[:project_name] || self.identifier
end
def gitlab_host
serpro_integration_plugin_settings.gitlab[:host]
end
def gitlab_private_token
serpro_integration_plugin_settings.gitlab[:private_token]
end
def jenkins_host
serpro_integration_plugin_settings.jenkins[:host]
end
def jenkins_private_token
serpro_integration_plugin_settings.jenkins[:private_token]
end
def jenkins_user
serpro_integration_plugin_settings.jenkins[:user]
end
def jenkins_project_name
serpro_integration_plugin_jenkins[:project_name] || self.identifier
end
end