ops 1.1.0 → 1.1.1
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/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
|