diff options
author | Azul <azul@riseup.net> | 2017-07-18 12:57:44 +0200 |
---|---|---|
committer | Azul <azul@riseup.net> | 2017-07-18 12:57:44 +0200 |
commit | 396e4cf638670bf00b8b929be154218a76b960b4 (patch) | |
tree | a7f7d733a753d78f1aa716e6c44426cad12cdd8e /lib/gitlab_stats.rb | |
parent | 877cb4f5bb863bcc1c75690bc33f2f2b98a08ca1 (diff) |
refactor: GitlabStats to collect stats from gitlab
Want to add stats about merge requests in the future while still
fetching each project once.
Diffstat (limited to 'lib/gitlab_stats.rb')
-rw-r--r-- | lib/gitlab_stats.rb | 42 |
1 files changed, 42 insertions, 0 deletions
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 |