diff options
author | varac <varacanero@zeromail.org> | 2016-08-27 21:15:34 +0200 |
---|---|---|
committer | varac <varacanero@zeromail.org> | 2016-08-27 21:59:00 +0200 |
commit | ad19d7f11b10092cdcb1f6be638072ef8d8b9867 (patch) | |
tree | f55c401f5e1af5f595d9fc45b2b4b4a11e692f72 | |
parent | 49528fa7c181829eed509b679d4aa584c8b985fc (diff) |
Gitlab merge reqs
-rw-r--r-- | Gemfile.lock | 8 | ||||
-rw-r--r-- | dashboards/dashboard.erb | 16 | ||||
-rw-r--r-- | dashboards/default.erb | 2 | ||||
-rw-r--r-- | dashing.gemspec | 1 | ||||
-rw-r--r-- | jobs/gitlab_merge_requests.rb | 36 | ||||
-rw-r--r-- | widgets/gitlab_merge_requests/gitlab_merge_requests.coffee | 9 | ||||
-rw-r--r-- | widgets/gitlab_merge_requests/gitlab_merge_requests.html | 18 | ||||
-rw-r--r-- | widgets/gitlab_merge_requests/gitlab_merge_requests.scss | 67 |
8 files changed, 149 insertions, 8 deletions
diff --git a/Gemfile.lock b/Gemfile.lock index fecabb2..fc509cd 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -5,6 +5,7 @@ PATH coffee-script (~> 2.2.0) crack execjs (~> 2.0.2) + gitlab nagiosharder rack (~> 1.5.4) rufus-scheduler (~> 2.0.24) @@ -38,15 +39,20 @@ GEM eventmachine (1.2.0.1) execjs (2.0.2) fakeweb (1.3.0) + gitlab (3.7.0) + httparty (~> 0.13.0) + terminal-table haml (4.0.7) tilt hashie (1.2.0) hike (1.2.3) http-cookie (1.0.2) domain_name (~> 0.5) - httparty (0.14.0) + httparty (0.13.7) + json (~> 1.8) multi_xml (>= 0.5.2) i18n (0.7.0) + json (1.8.3) metaclass (0.0.4) mime-types (3.1) mime-types-data (~> 3.2015) diff --git a/dashboards/dashboard.erb b/dashboards/dashboard.erb index 7d187ea..35ae341 100644 --- a/dashboards/dashboard.erb +++ b/dashboards/dashboard.erb @@ -1,21 +1,25 @@ -<li data-row="1" data-col="1" data-sizex="2" data-sizey="3"> +<li data-row="1" data-col="1" data-sizex="2" data-sizey="4"> <div data-id="jenkinsBuildStatus" data-view="JenkinsBuildStatus" data-title="Jenkins"></div> </li> -<li data-row="1" data-col="2" data-sizex="2" data-sizey="1"> +<li data-row="1" data-col="3" data-sizex="2" data-sizey="1"> <div data-id="nagios-mail" data-view="Nagios" data-unordered="true" data-title="Nagios mail.bitmask" data-moreinfo="Unacknowledged events"></div> </li> -<li data-row="1" data-col="3" data-sizex="2" data-sizey="1"> +<li data-row="1" data-col="5" data-sizex="2" data-sizey="1"> <div data-id="nagios-demo" data-view="Nagios" data-unordered="true" data-title="Nagios demo.bitmask" data-moreinfo="Unacknowledged events"></div> </li> -<li data-row="2" data-col="2" data-sizex="2" data-sizey="1"> +<li data-row="2" data-col="3" data-sizex="2" data-sizey="1"> <div data-id="nagios-dev" data-view="Nagios" data-unordered="true" data-title="Nagios dev.bitmask" data-moreinfo="Unacknowledged events"></div> </li> -<li data-row="2" data-col="3" data-sizex="2" data-sizey="1"> +<li data-row="2" data-col="5" data-sizex="2" data-sizey="1"> <div data-id="nagios-unstable" data-view="Nagios" data-unordered="true" data-title="Nagios unstable.bitmask" data-moreinfo="Unacknowledged events"></div> </li> -<li data-row="2" data-col="4" data-sizex="2" data-sizey="1"> +<li data-row="3" data-col="3" data-sizex="2" data-sizey="1"> <div data-id="nagios-cdev" data-view="Nagios" data-unordered="true" data-title="Nagios cdev.bitmask" data-moreinfo="Unacknowledged events"></div> </li> + +<li data-row="1" data-col="7" data-sizex="2" data-sizey="4"> + <div data-view="GitlabMergeRequests" data-id="gitlab-merge-requests"></div> +</li> diff --git a/dashboards/default.erb b/dashboards/default.erb index d5441b8..86110c0 100644 --- a/dashboards/default.erb +++ b/dashboards/default.erb @@ -3,7 +3,7 @@ $(function() { // These settings override the defaults set in application.coffee. You can do this on a per dashboard basis. Dashing.widget_margins = [2, 2] Dashing.widget_base_dimensions = [235, 295] - Dashing.numColumns = 6 + Dashing.numColumns = 8 }); </script> diff --git a/dashing.gemspec b/dashing.gemspec index 774fde0..ad299f4 100644 --- a/dashing.gemspec +++ b/dashing.gemspec @@ -30,6 +30,7 @@ Gem::Specification.new do |s| # additional deps s.add_dependency('crack') s.add_dependency('nagiosharder') + s.add_dependency('gitlab') s.add_development_dependency('rake', '~> 10.1.0') 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 diff --git a/widgets/gitlab_merge_requests/gitlab_merge_requests.coffee b/widgets/gitlab_merge_requests/gitlab_merge_requests.coffee new file mode 100644 index 0000000..e68c3f6 --- /dev/null +++ b/widgets/gitlab_merge_requests/gitlab_merge_requests.coffee @@ -0,0 +1,9 @@ +class Dashing.GitlabMergeRequests extends Dashing.Widget + + ready: -> + # This is fired when the widget is done being rendered + + onData: (data) -> + # Handle incoming data + # You can access the html node of this widget with `@node` + # Example: $(@node).fadeOut().fadeIn() will make the node flash each time data comes in.
\ No newline at end of file diff --git a/widgets/gitlab_merge_requests/gitlab_merge_requests.html b/widgets/gitlab_merge_requests/gitlab_merge_requests.html new file mode 100644 index 0000000..396da97 --- /dev/null +++ b/widgets/gitlab_merge_requests/gitlab_merge_requests.html @@ -0,0 +1,18 @@ +<h1 class="header">GitLab</h1> +<h2 class="sub-header" data-bind="header"></h2> + +<ul class="list"> + <li data-foreach-merge="merges" class="merge"> + <div class="merge-title" data-bind="merge.title"></div> + <div class="merge-info"> + <div data-bind="merge.creator"></div> + <div> · </div> + <div data-bind="merge.repo"></div> + <div> · </div> + <div data-bind="merge.updated_at"></div> + </div> + <div style="clear: both;"></div> + </li> +</ul> + +<p class="updated-at" data-bind="updatedAtMessage"></p> diff --git a/widgets/gitlab_merge_requests/gitlab_merge_requests.scss b/widgets/gitlab_merge_requests/gitlab_merge_requests.scss new file mode 100644 index 0000000..d3c51f5 --- /dev/null +++ b/widgets/gitlab_merge_requests/gitlab_merge_requests.scss @@ -0,0 +1,67 @@ +// ---------------------------------------------------------------------------- +// Sass declarations +// ---------------------------------------------------------------------------- +$background-color: teal; + +$heading-color: rgba(255, 255, 255, 0.7); +$merge-title-color: rgba(255, 255, 255, 1.0); +$merge-info-color: rgba(255, 255, 255, 1.0); + +// ---------------------------------------------------------------------------- +// Widget-gitlab-merge-requests styles +// ---------------------------------------------------------------------------- +.widget-gitlab-merge-requests { + + background-color: $background-color; + vertical-align: top !important; + + .header { + margin-bottom: 0; + font-size: xx-large; + color: $heading-color; + } + + .sub-header { + color: $heading-color; + font-size: large; + margin-bottom: 1vh; + } + + .merge { + margin-bottom: 2vh; + } + + .merge-title { + font-size: medium; + font-weight: bold; + color: $merge-title-color; + } + + .merge-info { + font-size: small; + font-style: italic; + color: $merge-info-color; + } + + .merge-info div { + float:left; + } + + .list { + list-style: none; + } + + .updated-at { + color: rgba(0, 0, 0, 0.3); + } + + ol, ul { + margin: 0 15px; + text-align: left; + } + + ol { + list-style-position: inside; + } + +} |