From 4d6005b1e9c1aeee678415ff39da6f0364ae1fcf Mon Sep 17 00:00:00 2001 From: varac Date: Sat, 1 Oct 2016 00:02:01 +0200 Subject: Gitlab Build Status works now --- jobs/gitlab_build_status.rb | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 jobs/gitlab_build_status.rb (limited to 'jobs/gitlab_build_status.rb') diff --git a/jobs/gitlab_build_status.rb b/jobs/gitlab_build_status.rb new file mode 100644 index 0000000..addfaed --- /dev/null +++ b/jobs/gitlab_build_status.rb @@ -0,0 +1,44 @@ +require 'gitlab' +require 'date' +require 'pp' + +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 + +SCHEDULER.every '300s', :first_in => 0 do + broken_builds = [] + + # get a list of all projects + projects = Gitlab.group(ENV['GITLAB_GROUP_ID']).projects.map do |proj| + { :id => proj['id'], :name => proj['name'], :path => proj['path_with_namespace'] } + end + + projects.each do |proj| + + begin + pipeline = Gitlab.pipelines(proj[:id], { per_page: 1 }) + #pp pipeline[0] + proj[:status] = pipeline[0].status + proj[:pipeline_id] = pipeline[0].id + proj[:ref] = pipeline[0].ref + date = DateTime.parse(pipeline[0].updated_at).strftime("%F %T") + proj[:date] = date + rescue + proj[:status] = 'No builds configured' + end + + unless proj[:status] =~ /^success|running|No builds configured$/ + broken_builds << proj + end + puts proj + end + + failed = broken_builds.size > 0 + + send_event('gitlab-builds', { failed: failed, header: "Gitlab builds", broken_builds: broken_builds }) +end -- cgit v1.2.3