diff options
Diffstat (limited to 'jobs/gitlab_merge_requests.rb')
-rw-r--r-- | jobs/gitlab_merge_requests.rb | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/jobs/gitlab_merge_requests.rb b/jobs/gitlab_merge_requests.rb new file mode 100644 index 0000000..f39caf9 --- /dev/null +++ b/jobs/gitlab_merge_requests.rb @@ -0,0 +1,36 @@ +require 'gitlab' +require 'date' + +# TODO: Move config to yaml +my_group_path = 'leap' +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 + +pr_widget_data_id = 'gitlab-merge-requests' +SCHEDULER.every '10m', :first_in => 0 do |job| + my_group = Gitlab.groups(:search => my_group_path).find do |group| + group.path == my_group_path + end + projects = Gitlab.group(my_group.id).projects.map do |proj| + { :id => proj['id'], :name => proj['name'] } + end + + open_merge_requests = projects.inject([]) { |merges, proj| + Gitlab.merge_requests(proj[:id], :state => 'opened').each do |request| + puts proj[:name] + ': ' + request.title + merges.push({ + title: request.title, + repo: proj[:name], + updated_at: DateTime.parse(request.updated_at).strftime("%b %-d %Y, %l:%m %p"), + creator: "@" + request.author.username + }) + end + merges + } + send_event(pr_widget_data_id, { header: "Open Merge Requests", merges: open_merge_requests }) +end |