ops 1.1.0 → 1.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/ops/revision.rb +29 -89
- data/lib/ops/server.rb +5 -9
- data/lib/ops/server/views/version.erb +24 -47
- data/lib/ops/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 61f64be04e20180a93a22b2e6315959a8929b816
|
4
|
+
data.tar.gz: dcd6b9ddf5beaf27f6c30c8ce999ab0226419be6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3f2b9935281fe6c17502ef0e096c8ce78d534ac639ac23cc4539efecefdc6123432c0786877c5112998701cc80767e028d91fefc9ae4f2c5cb0c8d8177561a42
|
7
|
+
data.tar.gz: 8b1fe081f65821b4631c414714b8c98ecf3876acd2e24d94c0d03585b2eb26d269d4ea5c9f79538a70137a631bb6bce6cdcb29e5497d9413524e9a04f084f7b5
|
data/lib/ops/revision.rb
CHANGED
@@ -1,6 +1,8 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
|
1
3
|
module Ops
|
2
4
|
class Revision
|
3
|
-
|
5
|
+
attr_reader :file_root
|
4
6
|
|
5
7
|
def initialize(new_headers = {}, opts = Ops.config)
|
6
8
|
@file_root = opts.file_root.to_s # convert to string in case they pass us a Pathname
|
@@ -8,114 +10,52 @@ module Ops
|
|
8
10
|
@headers = new_headers
|
9
11
|
end
|
10
12
|
|
11
|
-
|
12
|
-
@version ||= if version_file?
|
13
|
-
chomp(version_file).gsub('^{}', '')
|
14
|
-
elsif development? && branch_source.call =~ /^\* (.*)$/
|
15
|
-
Regexp.last_match(1)
|
16
|
-
else
|
17
|
-
'Unknown (VERSION file is missing)'
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
def previous_versions
|
22
|
-
@previous_versions ||= get_previous_by_time
|
23
|
-
end
|
24
|
-
|
25
|
-
def get_previous_by_time
|
26
|
-
get_previous_versions.sort_by { |a| a[:time] }
|
27
|
-
end
|
28
|
-
|
29
|
-
def get_previous_versions
|
30
|
-
Dir["#{path}/../*"].each_with_object([]) do |dir, array|
|
31
|
-
next if dir =~ /#{current_dir}$/
|
32
|
-
version, revision = File.join(dir, 'VERSION'), File.join(dir, 'REVISION')
|
33
|
-
array << stats_hash(version: version, revision: revision) if File.exist?(version) && File.exist?(revision)
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
def path
|
38
|
-
File.absolute_path file_root
|
39
|
-
end
|
40
|
-
|
41
|
-
def current_dir
|
42
|
-
file_root.split('/').last
|
43
|
-
end
|
44
|
-
|
45
|
-
def stats_hash(files)
|
46
|
-
{ version: get_version(files[:version]),
|
47
|
-
revision: get_revision(files[:revision]),
|
48
|
-
time: get_time(files[:revision]) }
|
49
|
-
end
|
50
|
-
|
51
|
-
def get_version(file)
|
52
|
-
chomp(file).gsub('^{}', '')
|
53
|
-
end
|
13
|
+
attr_reader :environment
|
54
14
|
|
55
|
-
def
|
56
|
-
|
15
|
+
def headers
|
16
|
+
@headers.select { |k, v| k.match(/^[-A-Z_].*$/) }
|
57
17
|
end
|
58
18
|
|
59
|
-
def
|
60
|
-
|
19
|
+
def info
|
20
|
+
@info ||= build_info.merge(deploy_info)
|
61
21
|
end
|
62
22
|
|
63
|
-
def
|
64
|
-
|
23
|
+
def previous_info
|
24
|
+
@previous_info ||= previous_build_info.merge(previous_deploy_info)
|
65
25
|
end
|
66
26
|
|
67
|
-
|
68
|
-
|
69
|
-
attr_reader :environment
|
70
|
-
|
71
|
-
def development?
|
72
|
-
environment == 'development'
|
73
|
-
end
|
74
|
-
|
75
|
-
def version_file
|
76
|
-
@version_file ||= File.join(file_root, 'VERSION')
|
77
|
-
end
|
27
|
+
private
|
78
28
|
|
79
|
-
def
|
80
|
-
|
29
|
+
def build_info
|
30
|
+
info_from_file('BUILD-INFO')
|
81
31
|
end
|
82
32
|
|
83
|
-
def
|
84
|
-
|
33
|
+
def previous_build_info
|
34
|
+
info_from_file('PREVIOUS-BUILD-INFO')
|
85
35
|
end
|
86
36
|
|
87
|
-
def
|
88
|
-
|
37
|
+
def deploy_info
|
38
|
+
info_from_file('DEPLOY-INFO')
|
89
39
|
end
|
90
40
|
|
91
|
-
def
|
92
|
-
|
93
|
-
get_time version_file
|
94
|
-
elsif development?
|
95
|
-
'Live'
|
96
|
-
else
|
97
|
-
'Unknown (VERSION file is missing)'
|
98
|
-
end
|
41
|
+
def previous_deploy_info
|
42
|
+
info_from_file('PREVIOUS-DEPLOY-INFO')
|
99
43
|
end
|
100
44
|
|
101
|
-
def
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
'Unknown (REVISION file is missing)'
|
108
|
-
end
|
45
|
+
def info_from_file(name)
|
46
|
+
if file_exists?(name)
|
47
|
+
parse_info_file(name)
|
48
|
+
else
|
49
|
+
{name.downcase.gsub('-', '_') => "No #{name} file found"}
|
50
|
+
end
|
109
51
|
end
|
110
52
|
|
111
|
-
def
|
112
|
-
|
53
|
+
def parse_info_file(filename)
|
54
|
+
YAML.safe_load(File.read(File.join(file_root, filename))) if file_exists?(filename)
|
113
55
|
end
|
114
56
|
|
115
|
-
|
116
|
-
|
117
|
-
def branch_source
|
118
|
-
@branch_source ||= -> { `git branch` }
|
57
|
+
def file_exists?(file_name)
|
58
|
+
File.exist?(File.join(file_root, file_name))
|
119
59
|
end
|
120
60
|
end
|
121
61
|
end
|
data/lib/ops/server.rb
CHANGED
@@ -4,9 +4,7 @@ require 'json'
|
|
4
4
|
|
5
5
|
module Ops
|
6
6
|
class Server < Sinatra::Base
|
7
|
-
|
8
|
-
set :views, "#{dir}/server/views"
|
9
|
-
# set :views, File.dirname(File.expand_path('/../server/views', __FILE__))
|
7
|
+
set :views, "#{File.dirname(File.expand_path('', __FILE__))}/server/views"
|
10
8
|
|
11
9
|
helpers Ops::Helpers
|
12
10
|
|
@@ -14,11 +12,10 @@ module Ops
|
|
14
12
|
env.each_with_object({}) { |(k, v), headers| headers[k] = v }
|
15
13
|
end
|
16
14
|
|
17
|
-
def jsonified_version(version,
|
15
|
+
def jsonified_version(version, headers)
|
18
16
|
JSON.generate(
|
19
|
-
|
20
|
-
|
21
|
-
previous_versions: previous_versions,
|
17
|
+
info: version.info,
|
18
|
+
previous_info: version.previous_info,
|
22
19
|
headers: headers
|
23
20
|
)
|
24
21
|
end
|
@@ -34,12 +31,11 @@ module Ops
|
|
34
31
|
|
35
32
|
get '/version/?:format?', provides: %i(html json) do
|
36
33
|
@version = Revision.new(request_headers)
|
37
|
-
@previous_versions = @version.previous_versions
|
38
34
|
@headers = @version.headers
|
39
35
|
|
40
36
|
if json_request?
|
41
37
|
content_type 'application/json'
|
42
|
-
return jsonified_version(@version, @
|
38
|
+
return jsonified_version(@version, @headers)
|
43
39
|
end
|
44
40
|
|
45
41
|
erb :version
|
@@ -1,25 +1,4 @@
|
|
1
1
|
<div class="container">
|
2
|
-
<div class="spacer"></div>
|
3
|
-
<div id="version">
|
4
|
-
<div class="label">
|
5
|
-
<%= "#{app_name} Version" %>
|
6
|
-
</div>
|
7
|
-
<div class="value">
|
8
|
-
<%= version_link @version.version_or_branch %>
|
9
|
-
</div>
|
10
|
-
</div>
|
11
|
-
<div class="spacer"></div>
|
12
|
-
<div id="date">
|
13
|
-
<div class="label">Date Deployed</div>
|
14
|
-
<div class="value"><%= @version.deploy_date %></div>
|
15
|
-
</div>
|
16
|
-
<div class="spacer"></div>
|
17
|
-
<div id="commit">
|
18
|
-
<div class="label">Last Commit</div>
|
19
|
-
<div class="value">
|
20
|
-
<%= commit_link(@version.last_commit)%>
|
21
|
-
</div>
|
22
|
-
</div>
|
23
2
|
<div class="spacer"></div>
|
24
3
|
<div id="host">
|
25
4
|
<div class="label">Host</div>
|
@@ -31,33 +10,31 @@
|
|
31
10
|
<div class="value"><%= @version.environment %></div>
|
32
11
|
</div>
|
33
12
|
<div class="spacer"></div>
|
34
|
-
<
|
35
|
-
|
36
|
-
<div class="
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
<% @previous_versions.each_with_index do |version, i| %>
|
45
|
-
<tr class="<%= i%2==0 ? 'even' : nil %>">
|
46
|
-
<td>
|
47
|
-
<%= version[:time].strftime('%x %X') %>
|
48
|
-
</td>
|
49
|
-
<td>
|
50
|
-
<%= version_link(version[:version]) %>
|
51
|
-
</td>
|
52
|
-
<td>
|
53
|
-
<%= commit_link(version[:revision]) %>
|
54
|
-
</td>
|
55
|
-
</tr>
|
56
|
-
<% end %>
|
57
|
-
</table>
|
58
|
-
<% end %>
|
13
|
+
<h3>Current Deploy Info</h3>
|
14
|
+
<% @version.info.each do |key, value| %>
|
15
|
+
<div class="spacer"></div>
|
16
|
+
<div>
|
17
|
+
<div class="label">
|
18
|
+
<%= key.to_s.gsub('_',' ').capitalize %>
|
19
|
+
</div>
|
20
|
+
<div class="value">
|
21
|
+
<%= value %>
|
22
|
+
</div>
|
59
23
|
</div>
|
60
|
-
|
24
|
+
<% end %>
|
25
|
+
<div class="spacer"></div>
|
26
|
+
<h3>Previous Deploy Info</h3>
|
27
|
+
<% @version.previous_info.each do |key, value| %>
|
28
|
+
<div class="spacer"></div>
|
29
|
+
<div>
|
30
|
+
<div class="label">
|
31
|
+
<%= key.to_s.gsub('_',' ').capitalize %>
|
32
|
+
</div>
|
33
|
+
<div class="value">
|
34
|
+
<%= value %>
|
35
|
+
</div>
|
36
|
+
</div>
|
37
|
+
<% end %>
|
61
38
|
<div class="spacer"></div>
|
62
39
|
<div id="headers">
|
63
40
|
<div class="label">Headers</div>
|
data/lib/ops/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ops
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Pelz-Sherman
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2017-08-
|
14
|
+
date: 2017-08-28 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: json
|