summaryrefslogtreecommitdiff
path: root/jobs/gitlab_merge_requests.rb
diff options
context:
space:
mode:
Diffstat (limited to 'jobs/gitlab_merge_requests.rb')
-rw-r--r--jobs/gitlab_merge_requests.rb36
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