From b207ea5f24cb52d5818d04d2b0c872cc8598628e Mon Sep 17 00:00:00 2001 From: Azul Date: Tue, 18 Jul 2017 12:57:44 +0200 Subject: refactor: GitlabStats to collect stats from gitlab Want to add stats about merge requests in the future while still fetching each project once. --- lib/gitlab_stats.rb | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 lib/gitlab_stats.rb (limited to 'lib/gitlab_stats.rb') diff --git a/lib/gitlab_stats.rb b/lib/gitlab_stats.rb new file mode 100644 index 0000000..5b41263 --- /dev/null +++ b/lib/gitlab_stats.rb @@ -0,0 +1,42 @@ +require 'gitlab' +require 'date' + +Gitlab.configure do |config| + # API endpoint URL, default + config.endpoint = ENV['GITLAB_ENDPOINT'] + + # User's private token or OAuth2 access token + config.private_token = ENV['GITLAB_TOKEN'] +end + +module GitlabStats + # get a list of all projects + def self.projects + Gitlab.group(ENV['GITLAB_GROUP_ID']).projects.map do |proj| + { :id => proj['id'], :name => proj['name'], :path => proj['path_with_namespace'], + :default_branch => proj['default_branch']} + end + end + + def self.add_pipeline_stats_to(proj) + pipelines = Gitlab.pipelines(proj[:id], { per_page: 10 }) + #pp pipeline[0] + pipeline = pipelines.find{|p| p.ref == proj[:default_branch]} + if pipeline.nil? + if pipelines.any? + proj[:status] = 'No builds run for default branch lately' + else + proj[:status] = 'No builds configured' + end + return + end + proj[:status] = pipeline.status + proj[:pipeline_id] = pipeline.id + proj[:ref] = pipeline.ref + date = DateTime.parse(pipeline.updated_at).strftime("%F %T") + proj[:date] = date + rescue e + proj[:status] = "Error: #{e}" + end + +end -- cgit v1.2.3