kitchen_hooks 1.3.1 → 1.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/Gemfile.lock +1 -1
 - data/Readme.md +3 -0
 - data/VERSION +1 -1
 - data/lib/kitchen_hooks/app.rb +31 -48
 - data/lib/kitchen_hooks/helpers.rb +2 -6
 - data/web/views/app.erb +9 -8
 - metadata +1 -1
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: b231a360740fd42847f0b9d6ccf89f9fbee0b3ee
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: 643ee7d3385463afaf8b98f3139d5c36ec5e734f
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 7fea85d09df6258f7711bd62f91925e6b1bd0ca0846e9a151b402950defa4e96141cc2f3c9b8b79ee1df4979aea5b5bd3faee5d5bfbdff4df5b1a8b441210856
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 5d204a1a8d7468f98c872713f05a40a038d10779f8e45c09cd179de548e45e3e51d3a9cbd774f9cbdfeac1dd284dd730bb491afea3dbdb9795b778a0066645e3
         
     | 
    
        data/Gemfile.lock
    CHANGED
    
    
    
        data/Readme.md
    CHANGED
    
    | 
         @@ -40,6 +40,9 @@ Use the `server` command to start the WebHook receiver: 
     | 
|
| 
       40 
40 
     | 
    
         
             
            ### 1.3
         
     | 
| 
       41 
41 
     | 
    
         | 
| 
       42 
42 
     | 
    
         
             
            * Added local database to store history (Daybreak), visualized on homepage
         
     | 
| 
      
 43 
     | 
    
         
            +
            * Added `database` option to `server` command
         
     | 
| 
      
 44 
     | 
    
         
            +
            * Corrected GitLab link for tagged commits
         
     | 
| 
      
 45 
     | 
    
         
            +
            * Process events in the background to avoid duplicate entries [INF-6040]
         
     | 
| 
       43 
46 
     | 
    
         | 
| 
       44 
47 
     | 
    
         
             
            ### 1.2
         
     | 
| 
       45 
48 
     | 
    
         | 
    
        data/VERSION
    CHANGED
    
    | 
         @@ -1 +1 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            1.3. 
     | 
| 
      
 1 
     | 
    
         
            +
            1.3.2
         
     | 
    
        data/lib/kitchen_hooks/app.rb
    CHANGED
    
    | 
         @@ -1,4 +1,5 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require 'pathname'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'thread'
         
     | 
| 
       2 
3 
     | 
    
         
             
            require 'json'
         
     | 
| 
       3 
4 
     | 
    
         | 
| 
       4 
5 
     | 
    
         
             
            require 'daybreak'
         
     | 
| 
         @@ -16,26 +17,8 @@ module KitchenHooks 
     | 
|
| 
       16 
17 
     | 
    
         | 
| 
       17 
18 
     | 
    
         
             
                include KitchenHooks::Helpers
         
     | 
| 
       18 
19 
     | 
    
         | 
| 
       19 
     | 
    
         
            -
                def self.db!  
     | 
| 
       20 
     | 
    
         
            -
                  @@db = Daybreak::DB.new  
     | 
| 
       21 
     | 
    
         
            -
                end
         
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
                def db &block
         
     | 
| 
       24 
     | 
    
         
            -
                  if block_given?
         
     | 
| 
       25 
     | 
    
         
            -
                    @@db.synchronize do
         
     | 
| 
       26 
     | 
    
         
            -
                      yield
         
     | 
| 
       27 
     | 
    
         
            -
                    end
         
     | 
| 
       28 
     | 
    
         
            -
                  else
         
     | 
| 
       29 
     | 
    
         
            -
                    return @@db
         
     | 
| 
       30 
     | 
    
         
            -
                  end
         
     | 
| 
       31 
     | 
    
         
            -
                end
         
     | 
| 
       32 
     | 
    
         
            -
             
     | 
| 
       33 
     | 
    
         
            -
                def database
         
     | 
| 
       34 
     | 
    
         
            -
                  db_entries = {}
         
     | 
| 
       35 
     | 
    
         
            -
                  db.each do |k, v|
         
     | 
| 
       36 
     | 
    
         
            -
                    db_entries[k] = v
         
     | 
| 
       37 
     | 
    
         
            -
                  end
         
     | 
| 
       38 
     | 
    
         
            -
                  return db_entries.sort_by { |stamp, _| stamp }
         
     | 
| 
      
 20 
     | 
    
         
            +
                def self.db! path
         
     | 
| 
      
 21 
     | 
    
         
            +
                  @@db = Daybreak::DB.new path
         
     | 
| 
       39 
22 
     | 
    
         
             
                end
         
     | 
| 
       40 
23 
     | 
    
         | 
| 
       41 
24 
     | 
    
         
             
                def self.config! config
         
     | 
| 
         @@ -44,12 +27,14 @@ module KitchenHooks 
     | 
|
| 
       44 
27 
     | 
    
         
             
                  end
         
     | 
| 
       45 
28 
     | 
    
         
             
                end
         
     | 
| 
       46 
29 
     | 
    
         | 
| 
       47 
     | 
    
         
            -
                def knives ; @@knives ||= [] end
         
     | 
| 
       48 
     | 
    
         
            -
             
     | 
| 
       49 
30 
     | 
    
         | 
| 
       50 
31 
     | 
    
         
             
                get '/' do
         
     | 
| 
      
 32 
     | 
    
         
            +
                  db_entries = {}
         
     | 
| 
      
 33 
     | 
    
         
            +
                  db.each do |k, v|
         
     | 
| 
      
 34 
     | 
    
         
            +
                    db_entries[k] = v
         
     | 
| 
      
 35 
     | 
    
         
            +
                  end
         
     | 
| 
       51 
36 
     | 
    
         
             
                  erb :app, locals: {
         
     | 
| 
       52 
     | 
    
         
            -
                    database:  
     | 
| 
      
 37 
     | 
    
         
            +
                    database: db_entries.sort_by { |stamp, _| stamp }
         
     | 
| 
       53 
38 
     | 
    
         
             
                  }
         
     | 
| 
       54 
39 
     | 
    
         
             
                end
         
     | 
| 
       55 
40 
     | 
    
         | 
| 
         @@ -63,50 +48,48 @@ module KitchenHooks 
     | 
|
| 
       63 
48 
     | 
    
         
             
                    :disposition => 'inline'
         
     | 
| 
       64 
49 
     | 
    
         
             
                end
         
     | 
| 
       65 
50 
     | 
    
         | 
| 
       66 
     | 
    
         
            -
             
     | 
| 
       67 
51 
     | 
    
         
             
                post '/' do
         
     | 
| 
       68 
52 
     | 
    
         
             
                  request.body.rewind
         
     | 
| 
       69 
53 
     | 
    
         
             
                  event = JSON::parse request.body.read
         
     | 
| 
      
 54 
     | 
    
         
            +
                  Thread.new do
         
     | 
| 
      
 55 
     | 
    
         
            +
                    process event
         
     | 
| 
      
 56 
     | 
    
         
            +
                  end
         
     | 
| 
      
 57 
     | 
    
         
            +
                end
         
     | 
| 
      
 58 
     | 
    
         
            +
             
     | 
| 
      
 59 
     | 
    
         
            +
             
     | 
| 
      
 60 
     | 
    
         
            +
              private
         
     | 
| 
      
 61 
     | 
    
         
            +
                def knives ; @@knives ||= [] end
         
     | 
| 
      
 62 
     | 
    
         
            +
             
     | 
| 
      
 63 
     | 
    
         
            +
                def db ; @@db end
         
     | 
| 
       70 
64 
     | 
    
         | 
| 
      
 65 
     | 
    
         
            +
                def mark event, type
         
     | 
| 
      
 66 
     | 
    
         
            +
                  db.synchronize do
         
     | 
| 
      
 67 
     | 
    
         
            +
                    db[Time.now.to_f] = {
         
     | 
| 
      
 68 
     | 
    
         
            +
                      type: type,
         
     | 
| 
      
 69 
     | 
    
         
            +
                      event: event
         
     | 
| 
      
 70 
     | 
    
         
            +
                    }
         
     | 
| 
      
 71 
     | 
    
         
            +
                  end
         
     | 
| 
      
 72 
     | 
    
         
            +
                end
         
     | 
| 
      
 73 
     | 
    
         
            +
             
     | 
| 
      
 74 
     | 
    
         
            +
                def process event
         
     | 
| 
       71 
75 
     | 
    
         
             
                  if commit_to_kitchen?(event)
         
     | 
| 
       72 
76 
     | 
    
         
             
                    perform_kitchen_upload(event, knives)
         
     | 
| 
       73 
     | 
    
         
            -
                     
     | 
| 
       74 
     | 
    
         
            -
                      type: 'kitchen upload',
         
     | 
| 
       75 
     | 
    
         
            -
                      author: author(event),
         
     | 
| 
       76 
     | 
    
         
            -
                      repo: repo_name(event),
         
     | 
| 
       77 
     | 
    
         
            -
                      raw: event
         
     | 
| 
      
 77 
     | 
    
         
            +
                    mark event, 'kitchen upload'
         
     | 
| 
       78 
78 
     | 
    
         
             
                  end
         
     | 
| 
       79 
79 
     | 
    
         | 
| 
       80 
80 
     | 
    
         
             
                  if tagged_commit_to_cookbook?(event) &&
         
     | 
| 
       81 
81 
     | 
    
         
             
                     tag_name(event) =~ /^v\d+/ # Tagged with version we're releasing
         
     | 
| 
       82 
82 
     | 
    
         
             
                    perform_cookbook_upload(event, knives)
         
     | 
| 
       83 
     | 
    
         
            -
                     
     | 
| 
       84 
     | 
    
         
            -
                      type: 'cookbook upload',
         
     | 
| 
       85 
     | 
    
         
            -
                      author: author(event),
         
     | 
| 
       86 
     | 
    
         
            -
                      repo: repo_name(event),
         
     | 
| 
       87 
     | 
    
         
            -
                      cookbook: cookbook_name(event),
         
     | 
| 
       88 
     | 
    
         
            -
                      raw: event
         
     | 
| 
      
 83 
     | 
    
         
            +
                    mark event, 'cookbok upload'
         
     | 
| 
       89 
84 
     | 
    
         
             
                  end
         
     | 
| 
       90 
85 
     | 
    
         | 
| 
       91 
86 
     | 
    
         
             
                  if tagged_commit_to_realm?(event) &&
         
     | 
| 
       92 
87 
     | 
    
         
             
                     tag_name(event) =~ /^bjn_/ # Tagged with environment we're pinning
         
     | 
| 
       93 
88 
     | 
    
         
             
                    perform_constraint_application(event, knives)
         
     | 
| 
       94 
     | 
    
         
            -
                     
     | 
| 
       95 
     | 
    
         
            -
                      type: 'constraint application',
         
     | 
| 
       96 
     | 
    
         
            -
                      author: author(event),
         
     | 
| 
       97 
     | 
    
         
            -
                      repo: repo_name(event),
         
     | 
| 
       98 
     | 
    
         
            -
                      cookbook: cookbook_name(event),
         
     | 
| 
       99 
     | 
    
         
            -
                      raw: event
         
     | 
| 
      
 89 
     | 
    
         
            +
                    mark event, 'constraint application'
         
     | 
| 
       100 
90 
     | 
    
         
             
                  end
         
     | 
| 
       101 
91 
     | 
    
         | 
| 
       102 
92 
     | 
    
         
             
                  db.flush
         
     | 
| 
       103 
93 
     | 
    
         
             
                end
         
     | 
| 
       104 
     | 
    
         
            -
             
     | 
| 
       105 
     | 
    
         
            -
              private
         
     | 
| 
       106 
     | 
    
         
            -
                def save_event e
         
     | 
| 
       107 
     | 
    
         
            -
                  db do
         
     | 
| 
       108 
     | 
    
         
            -
                    db[Time.now.to_f] = e
         
     | 
| 
       109 
     | 
    
         
            -
                  end
         
     | 
| 
       110 
     | 
    
         
            -
                end
         
     | 
| 
       111 
94 
     | 
    
         
             
              end
         
     | 
| 
       112 
95 
     | 
    
         
             
            end
         
     | 
| 
         @@ -152,13 +152,9 @@ module KitchenHooks 
     | 
|
| 
       152 
152 
     | 
    
         
             
                  event['repository']['url'].sub(':', '/').sub('@', '://')
         
     | 
| 
       153 
153 
     | 
    
         
             
                end
         
     | 
| 
       154 
154 
     | 
    
         | 
| 
       155 
     | 
    
         
            -
                def gitlab_url event 
     | 
| 
      
 155 
     | 
    
         
            +
                def gitlab_url event
         
     | 
| 
       156 
156 
     | 
    
         
             
                  url = git_daemon_style_url(event).sub(/^git/, 'http').sub(/\.git$/, '')
         
     | 
| 
       157 
     | 
    
         
            -
                   
     | 
| 
       158 
     | 
    
         
            -
                    "#{url}/commits/#{self.send(commit_method, event)}"
         
     | 
| 
       159 
     | 
    
         
            -
                  else
         
     | 
| 
       160 
     | 
    
         
            -
                    "#{url}/commit/#{self.send(commit_method, event)}"
         
     | 
| 
       161 
     | 
    
         
            -
                  end
         
     | 
| 
      
 157 
     | 
    
         
            +
                  "#{url}/commit/#{event['after']}"
         
     | 
| 
       162 
158 
     | 
    
         
             
                end
         
     | 
| 
       163 
159 
     | 
    
         | 
| 
       164 
160 
     | 
    
         
             
                def latest_commit event
         
     | 
    
        data/web/views/app.erb
    CHANGED
    
    | 
         @@ -1,6 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            <section id="cd-timeline" class="cd-container">
         
     | 
| 
       2 
     | 
    
         
            -
              <% database.reverse.each do |entry| %>
         
     | 
| 
       3 
     | 
    
         
            -
                <%  
     | 
| 
      
 2 
     | 
    
         
            +
              <% database.reverse.each do |(timestamp, entry)| %>
         
     | 
| 
      
 3 
     | 
    
         
            +
                <% type = entry[:type] %>
         
     | 
| 
      
 4 
     | 
    
         
            +
                <% event = entry[:event] %>
         
     | 
| 
       4 
5 
     | 
    
         
             
                <% timestamp = timestamp.to_f %>
         
     | 
| 
       5 
6 
     | 
    
         
             
                <% datetime = Time.at(timestamp).iso8601 %>
         
     | 
| 
       6 
7 
     | 
    
         
             
                <div class="cd-timeline-block">
         
     | 
| 
         @@ -8,14 +9,14 @@ 
     | 
|
| 
       8 
9 
     | 
    
         
             
                    <img src="/vendor/img/cd-icon.svg" alt="Picture">
         
     | 
| 
       9 
10 
     | 
    
         
             
                  </div>
         
     | 
| 
       10 
11 
     | 
    
         
             
                  <div class="cd-timeline-content">
         
     | 
| 
       11 
     | 
    
         
            -
                    <% if  
     | 
| 
       12 
     | 
    
         
            -
                      <h2><%=  
     | 
| 
       13 
     | 
    
         
            -
                      <p><%=  
     | 
| 
      
 12 
     | 
    
         
            +
                    <% if type == 'kitchen upload' %>
         
     | 
| 
      
 13 
     | 
    
         
            +
                      <h2><%= type %></h2>
         
     | 
| 
      
 14 
     | 
    
         
            +
                      <p><%= author(event) %> modified <a href="<%= gitlab_url(event) %>">the Kitchen</a></p>
         
     | 
| 
       14 
15 
     | 
    
         
             
                    <% else %>
         
     | 
| 
       15 
     | 
    
         
            -
                      <h2><%=  
     | 
| 
       16 
     | 
    
         
            -
                      <p><%=  
     | 
| 
      
 16 
     | 
    
         
            +
                      <h2><%= type %></h2>
         
     | 
| 
      
 17 
     | 
    
         
            +
                      <p><%= author(event) %> modified <a href="<%= gitlab_url(event) %>"><%= repo_name(event) %></a></p>
         
     | 
| 
       17 
18 
     | 
    
         
             
                    <% end %>
         
     | 
| 
       18 
     | 
    
         
            -
                    <span class="cd-date" 
     | 
| 
      
 19 
     | 
    
         
            +
                    <span class="cd-date"><time datetime="<%= datetime %>" pubdate="pubdate" class="time-ago" title="<%= datetime %>"><%= datetime %></time></span>
         
     | 
| 
       19 
20 
     | 
    
         
             
                  </div>
         
     | 
| 
       20 
21 
     | 
    
         
             
                </div>
         
     | 
| 
       21 
22 
     | 
    
         
             
              <% end %>
         
     |