harbr 0.1.20 → 0.1.21

Sign up to get free protection for your applications and to get access to all the features.
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