summaryrefslogtreecommitdiff
path: root/jobs/gitlab_builds.rb
blob: 007183551120b9a50c92ded7165ce7cc0326f5bd (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
require 'gitlab'
require 'date'
require 'pp'

endpoint      = 'https://0xacab.org/api/v3'
#group_path    = 'leap'
#group_id      = 52
token         = '8vw3vWRrzFw8B6XH9e6d'
broken_builds = []

Gitlab.configure do |config|
  # API endpoint URL, default
  config.endpoint       = endpoint

  # User's private token or OAuth2 access token
  config.private_token  = token
end

# find group id by name
#my_group = Gitlab.groups(:search => group_path).find do |group|
  #group.path == group_path
#end
#my_group_id = my_group.id


SCHEDULER.every '60s', :first_in => 0 do

  projects = [
  #  {:id=>327, :name=>"zeromq3", :path=>"leap/zeromq3"},
  #  {:id=>97,  :name=>"soledad", :path=>"leap/soledad"},
  #  {:id=>129, :name=>"platform", :path=>"leap/platfrom"},
    {:id=>241, :name=>"leap_cli", :path=>"leap/leap_cli"}
  ]

  # get a list of all projects
  #projects = Gitlab.group(group_id).projects.map do |proj|
    #pp 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
      proj[:date]        = pipeline[0].finished_at
    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
  #puts failed

  send_event('gitlab-builds', { failed: failed, header: "Gitlab builds", broken_builds: broken_builds })
end