harbr 0.1.20 → 0.1.21

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: bcbf3675eeaf05154d1b9da149f90cc8df58339bfa6832e9d97a417083351051
4
- data.tar.gz: 2c01d12abef61a992a38a0e12d6b1611942a65f077d0c0422f279f43dae0570c
3
+ metadata.gz: c4ca6570daeb86eb833723ce24c8efde8d457af059b8c15f801aea62c134bfd5
4
+ data.tar.gz: 4c9fd5523d6f73d14871ac5bbf8b6ca7b659e31513fa0654649eee19045546bd
5
5
  SHA512:
6
- metadata.gz: a4949ec829e100d09198be0811ab792311dab88a22b28f4dcbe57ceb719b18491d020da3ef821cb148624ee8f9925b9435126e233a8e93f5c8f98f15f53ee126
7
- data.tar.gz: 22f2fa0acae1379b8ba021ea87f209dde3aeb60cd5697ca347f2816a44d5b7da1b4dc6631e11b257ace759621996b2e5ac2a5f52b7235ab2487c42a17b65190a
6
+ metadata.gz: 28161c6842f7c0b904b8863a2d122ffb0c0a934a72f5778f29f20f882757b8ed876f28dc686a136225107b1feedb911ebbee5dac39c15adf2567424d62d08f47
7
+ data.tar.gz: e2996597d6be9bccc59471f04e791b4b721717965bde619882b593be4b76f2b554c5d466f5d485984c4cf5a7a40254d028e06cf5903365a61bc7622340d8c199
data/exe/harbr CHANGED
@@ -110,39 +110,36 @@ class HarbrCLI < Thor
110
110
  end
111
111
 
112
112
  desc "destroy", "Destroy a container and remove all traces"
113
- def destroy(container_name)
114
- puts "Destroying container: #{container_name}"
115
-
113
+ def destroy(name)
114
+ puts "Destroying container: #{name}"
115
+
116
116
  container_repo = Harbr::Container::Repository.new
117
- container = container_repo.find_by_name(container_name)
118
117
 
119
- if container
120
-
118
+ [name, "next.#{name}"].each do |container_name|
119
+ container = container_repo.find_by_name(container_name)
120
+
121
121
  `rm -rf /etc/service/#{container_name}`
122
122
  `rm -rf /etc/sv/harbr/#{container_name}`
123
123
 
124
- `rm -rf /var/harbr/containers/#{container_name}`
125
- `rm -rf /var/log/harbr/#{container_name}`
126
-
127
-
128
124
  container_repo.delete(container)
129
125
  puts "Container #{container_name} destroyed successfully."
130
-
131
126
  `port release #{container.port}`
132
127
  puts "released port #{container.port} successfully."
133
-
134
- create_traefik_config(container_repo.all)
135
- else
136
- puts "Container #{container_name} not found."
137
128
  end
129
+
130
+ `rm -rf /var/harbr/containers/#{name}`
131
+ `rm -rf /var/log/harbr/#{name}`
132
+
133
+ create_traefik_config(container_repo.all)
134
+
138
135
  end
139
136
 
140
137
  desc "logs", "Show logs"
141
138
  def logs
142
- exec "tail -f /var/log/harbr/current"
139
+ exec "tail -f /var/log/harbr/current"
143
140
  end
144
141
 
145
- desc "peek CONTAINER", "Peek in a given container"
142
+ desc "peek CONTAINER", "Peek in a given container"
146
143
  def peek(container)
147
144
  container_repo = Harbr::Container::Repository.new
148
145
  container = container_repo.find_by_name(container)
@@ -153,7 +150,6 @@ desc "peek CONTAINER", "Peek in a given container"
153
150
  end
154
151
  end
155
152
 
156
-
157
153
  desc "setup", "Set up Harbr environment"
158
154
  def setup
159
155
  # Check and create /var/harbr directory
@@ -175,19 +171,17 @@ desc "peek CONTAINER", "Peek in a given container"
175
171
 
176
172
  desc "deploy", "deploy a container to production"
177
173
  def deploy(name)
178
-
179
174
  Dir.chdir("/var/harbr/containers/#{name}/") do
180
-
181
- /(?<current>. * -> (?<path>.*))/.match(`ls -l /var/harbr/containers/#{name}/current`)
182
-
175
+ /(?<current>. * -> (?<path>.*))/ =~ `ls -l /var/harbr/containers/#{name}/current`
176
+
183
177
  `rm -r rollback`
184
178
  `ln -sf #{$2} rollback`
185
179
 
186
- /(?<next>. * -> (?<path>.*))/.match(`ls -l /var/harbr/containers/#{name}/next`)
180
+ /(?<next>. * -> (?<path>.*))/ =~ `ls -l /var/harbr/containers/#{name}/next`
187
181
  `rm -r current`
188
182
  `ln -sf #{$2} current`
189
183
  `sv restart #{name}`
190
- end
184
+ end
191
185
  end
192
186
 
193
187
  desc "rollback", "rollback last deploy"
@@ -195,15 +189,14 @@ desc "peek CONTAINER", "Peek in a given container"
195
189
  Dir.chdir("/var/harbr/containers/#{name}") do
196
190
  if File.exist?("rollback")
197
191
  Dir.chdir("/var/harbr/containers/#{name}/") do
198
- /(?<current>. * -> (?<path>.*))/.match(`ls -l /var/harbr/containers/#{name}/rollback`)
192
+ /(?<current>. * -> (?<path>.*))/ =~ `ls -l /var/harbr/containers/#{name}/rollback`
199
193
  `rm -r current`
200
194
  `ln -sf #{$2} current`
201
195
  `sv restart #{name}`
202
- end
196
+ end
203
197
  puts "rollback successful"
204
198
  end
205
- end
206
-
199
+ end
207
200
  end
208
201
  desc "monitor", "Monitor /var/harbr/comtainers for new container versions"
209
202
  def monitor
data/lib/harbr/job.rb CHANGED
@@ -1,13 +1,12 @@
1
- require 'harbr'
1
+ require "harbr"
2
2
  module Harbr
3
3
  class Job
4
4
  include SuckerPunch::Job
5
-
5
+
6
6
  def get_container_name(path)
7
7
  File.basename(path)
8
8
  end
9
9
 
10
-
11
10
  def create_traefik_config(containers)
12
11
  config = {
13
12
  "http" => {
@@ -24,7 +23,7 @@ module Harbr
24
23
 
25
24
  containers.each do |container|
26
25
  container.ip = "127.0.0.1"
27
- name = container.name.gsub(".", "-")
26
+ name = container.name.tr(".", "-")
28
27
 
29
28
  # Create the router with TLS enabled and specific format
30
29
  router_key = "#{name}-router-secure"
@@ -50,15 +49,14 @@ module Harbr
50
49
  puts "Traefik configuration written to /etc/traefik/harbr.toml"
51
50
  end
52
51
 
53
- def collate_containers(name,host,port)
54
-
52
+ def collate_containers(name, host, port)
55
53
  containers = Harbr::Container::Repository.new
56
54
  container = containers.find_by_header(host)
57
55
 
58
56
  if container.nil?
59
57
  container = Harbr::Container.new
60
58
  container.name = name
61
- container.host_header =host
59
+ container.host_header = host
62
60
  container.ip = "127.0.0.1"
63
61
  container.port = port
64
62
  containers.create(container)
@@ -69,9 +67,7 @@ module Harbr
69
67
  containers.all
70
68
  end
71
69
 
72
-
73
70
  module Runit
74
-
75
71
  class Run
76
72
  def initialize(container, port)
77
73
  @container_name = container
@@ -80,10 +76,10 @@ module Harbr
80
76
 
81
77
  def to_s
82
78
  script_template = <<~SCRIPT
83
- #!/bin/sh
84
- exec 2>&1
85
- cd /var/harbr/containers/#{@container_name}/current
86
- exec ./exe/run #{@port} live
79
+ #!/bin/sh
80
+ exec 2>&1
81
+ cd /var/harbr/containers/#{@container_name}/current
82
+ exec ./exe/run #{@port} live
87
83
  SCRIPT
88
84
  end
89
85
 
@@ -92,7 +88,6 @@ module Harbr
92
88
  end
93
89
  end
94
90
 
95
-
96
91
  class Finish
97
92
  def initialize(port)
98
93
  @port = port
@@ -100,9 +95,9 @@ module Harbr
100
95
 
101
96
  def to_s
102
97
  script_template = <<~SCRIPT
103
- #!/bin/sh
104
- sleep 3
105
- `lsof -i :#{@port} | awk 'NR!=1 {print $2}' | xargs kill`
98
+ #!/bin/sh
99
+ sleep 3
100
+ `lsof -i :#{@port} | awk 'NR!=1 {print $2}' | xargs kill`
106
101
  SCRIPT
107
102
  end
108
103
  end
@@ -114,19 +109,15 @@ module Harbr
114
109
 
115
110
  def to_s
116
111
  script_template = <<~SCRIPT
117
- #!/bin/sh
118
- exec svlogd -tt /var/log/harbr/#{@container_name}
112
+ #!/bin/sh
113
+ exec svlogd -tt /var/log/harbr/#{@container_name}
119
114
  SCRIPT
120
115
  end
121
-
122
116
  end
123
-
124
117
  end
125
118
 
126
119
  def write_to_file(path, contents)
127
- File.open(path, 'w') do |file|
128
- file.write(contents)
129
- end
120
+ File.write(path, contents)
130
121
  end
131
122
 
132
123
  def load_manifest(container, version)
@@ -136,16 +127,13 @@ module Harbr
136
127
  OpenStruct.new(manifest_data)
137
128
  end
138
129
 
139
- def perform(name,version)
140
-
130
+ def perform(name, version)
141
131
  Dir.chdir "/var/harbr/containers/#{name}/versions/#{version}" do
142
-
143
132
  `bundle config set --local path 'vendor/bundle'`
144
133
  manifest = load_manifest(name, version)
145
134
  port = `port assign #{manifest.port}`.strip
146
135
  system "sv stop #{name}" if File.exist?("/etc/service/#{name}")
147
- system 'bundle install'
148
-
136
+ system "bundle install"
149
137
 
150
138
  `mkdir -p /etc/sv/harbr/#{name}`
151
139
  `mkdir -p /etc/sv/harbr/#{name}/log`
@@ -166,9 +154,6 @@ module Harbr
166
154
  create_traefik_config(containers)
167
155
  puts "process #{version} of #{name}"
168
156
  end
169
-
170
157
  end
171
-
172
158
  end
173
-
174
159
  end
@@ -1,8 +1,8 @@
1
- require 'yaml'
2
- require 'ostruct'
3
- require 'sucker_punch'
1
+ require "yaml"
2
+ require "ostruct"
3
+ require "sucker_punch"
4
4
 
5
- require 'harbr'
5
+ require "harbr"
6
6
  module Harbr
7
7
  module Next
8
8
  class Job
@@ -28,7 +28,7 @@ module Harbr
28
28
 
29
29
  containers.each do |container|
30
30
  container.ip = "127.0.0.1"
31
- name = container.name.gsub(".", "-")
31
+ name = container.name.tr(".", "-")
32
32
 
33
33
  # Create the router with TLS enabled and specific format
34
34
  router_key = "#{name}-router-secure"
@@ -54,17 +54,14 @@ module Harbr
54
54
  puts "Traefik configuration written to /etc/traefik/harbr.toml"
55
55
  end
56
56
 
57
-
58
-
59
- def collate_containers(name,host,port)
60
-
57
+ def collate_containers(name, host, port)
61
58
  containers = Harbr::Container::Repository.new
62
59
  container = containers.find_by_header(host)
63
60
 
64
61
  if container.nil?
65
62
  container = Harbr::Container.new
66
63
  container.name = name
67
- container.host_header =host
64
+ container.host_header = host
68
65
  container.ip = "127.0.0.1"
69
66
  container.port = port
70
67
  containers.create(container)
@@ -75,9 +72,7 @@ module Harbr
75
72
  containers.all
76
73
  end
77
74
 
78
-
79
75
  module Runit
80
-
81
76
  class Run
82
77
  def initialize(container, port)
83
78
  @container_name = container
@@ -86,10 +81,10 @@ module Harbr
86
81
 
87
82
  def to_s
88
83
  script_template = <<~SCRIPT
89
- #!/bin/sh
90
- exec 2>&1
91
- cd /var/harbr/#{@container_name}/current
92
- exec ./exe/run #{@port} live
84
+ #!/bin/sh
85
+ exec 2>&1
86
+ cd /var/harbr/#{@container_name}/current
87
+ exec ./exe/run #{@port} live
93
88
  SCRIPT
94
89
  end
95
90
 
@@ -98,7 +93,6 @@ module Harbr
98
93
  end
99
94
  end
100
95
 
101
-
102
96
  class Finish
103
97
  def initialize(port)
104
98
  @port = port
@@ -106,9 +100,9 @@ module Harbr
106
100
 
107
101
  def to_s
108
102
  script_template = <<~SCRIPT
109
- #!/bin/sh
110
- sleep 3
111
- `lsof -i :#{@port} | awk 'NR!=1 {print $2}' | xargs kill`
103
+ #!/bin/sh
104
+ sleep 3
105
+ `lsof -i :#{@port} | awk 'NR!=1 {print $2}' | xargs kill`
112
106
  SCRIPT
113
107
  end
114
108
  end
@@ -120,15 +114,13 @@ module Harbr
120
114
 
121
115
  def to_s
122
116
  script_template = <<~SCRIPT
123
- #!/bin/sh
124
- exec svlogd -tt /var/log/harbr/#{@container_name}/next/
117
+ #!/bin/sh
118
+ exec svlogd -tt /var/log/harbr/#{@container_name}/next/
125
119
  SCRIPT
126
120
  end
127
-
128
121
  end
129
122
 
130
123
  module Next
131
-
132
124
  class Run
133
125
  def initialize(container, port)
134
126
  @container_name = container
@@ -137,10 +129,10 @@ module Harbr
137
129
 
138
130
  def to_s
139
131
  script_template = <<~SCRIPT
140
- #!/bin/sh
141
- exec 2>&1
142
- cd /var/harbr/containers/#{@container_name}/next
143
- exec ./exe/run #{@port} next
132
+ #!/bin/sh
133
+ exec 2>&1
134
+ cd /var/harbr/containers/#{@container_name}/next
135
+ exec ./exe/run #{@port} next
144
136
  SCRIPT
145
137
  end
146
138
  end
@@ -152,19 +144,16 @@ module Harbr
152
144
 
153
145
  def to_s
154
146
  script_template = <<~SCRIPT
155
- #!/bin/sh
156
- exec svlogd -tt /var/log/harbr/#{@container_name}/next/
147
+ #!/bin/sh
148
+ exec svlogd -tt /var/log/harbr/#{@container_name}/next/
157
149
  SCRIPT
158
150
  end
159
151
  end
160
-
161
152
  end
162
153
  end
163
154
 
164
155
  def write_to_file(path, contents)
165
- File.open(path, 'w') do |file|
166
- file.write(contents)
167
- end
156
+ File.write(path, contents)
168
157
  end
169
158
 
170
159
  def load_manifest(container, version)
@@ -177,21 +166,20 @@ module Harbr
177
166
  def perform(name, version)
178
167
  `bundle config set --local path 'vendor/bundle'`
179
168
 
180
- manifest = load_manifest(name,version)
169
+ manifest = load_manifest(name, version)
181
170
  current_path = "/var/harbr/containers/#{name}/versions/#{version}"
182
171
 
183
172
  port = `port assign next.#{manifest.port}`.strip
184
173
 
185
174
  Dir.chdir current_path do
186
-
187
175
  system "sv stop next.#{name}"
188
- system "bundle install"
176
+ system "bundle install"
189
177
 
190
178
  `mkdir -p /etc/sv/harbr/#{name}/next`
191
179
  `mkdir -p /etc/sv/harbr/#{name}/next/log`
192
180
  `mkdir -p /var/log/harbr/#{name}/next/log`
193
181
 
194
- write_to_file "/etc/sv/harbr/#{name}/next/run", Runit::Next::Run.new(name,port).to_s
182
+ write_to_file "/etc/sv/harbr/#{name}/next/run", Runit::Next::Run.new(name, port).to_s
195
183
  write_to_file "/etc/sv/harbr/#{name}/next/finish", Runit::Finish.new(port).to_s
196
184
  write_to_file "/etc/sv/harbr/#{name}/next/log/run", Runit::Next::Log.new(name).to_s
197
185
 
@@ -199,7 +187,6 @@ module Harbr
199
187
  `chmod +x /etc/sv/harbr/#{name}/next/log/run`
200
188
  `chmod +x /etc/sv/harbr/#{name}/next/finish`
201
189
 
202
-
203
190
  system "rm /etc/service/next.#{name}"
204
191
  system "rm /var/harbr/containers/#{name}/next"
205
192
 
@@ -212,14 +199,11 @@ module Harbr
212
199
  system "sv restart next.#{name}"
213
200
  end
214
201
 
215
- containers = collate_containers("next.#{name}","next.#{manifest.host}",port)
202
+ containers = collate_containers("next.#{name}", "next.#{manifest.host}", port)
216
203
  create_traefik_config(containers)
217
204
 
218
- puts "process #{version} of #{name}"
219
-
205
+ puts "process #{version} of #{name}"
220
206
  end
221
-
222
207
  end
223
-
224
208
  end
225
209
  end
data/lib/harbr/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Harbr
4
- VERSION = "0.1.20"
4
+ VERSION = "0.1.21"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: harbr
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.20
4
+ version: 0.1.21
5
5
  platform: ruby
6
6
  authors:
7
7
  - Delaney Kuldvee Burke