brasa 0.4.0 → 0.4.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/lib/brasa/commands/deploy.rb +30 -5
- data/lib/brasa/commands/up.rb +45 -7
- data/lib/brasa/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 8770bfdcdf312ee8493341a83de7356e76dfb6b6cebd4fa4d0155ae2ec8f3425
|
|
4
|
+
data.tar.gz: e27282ef7d4dd88a159c2463320c7f1393a2bfa9c93a07e0e234ca73b7fb8df8
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: fdad15d4954607bff0bb6a2737a4be3d8959e7213393cd32ec0ccfb995f0c42d8f416a6046810f9aa8d3ac88fd57dd34989e429be6856a9c5830d1b8d8466580
|
|
7
|
+
data.tar.gz: 6d2293ceb1e6ab6ae539e6a8f6e28b22bf82b29a64e31d383c103125e9891e7a0287bd0acabd02d2bf02c6ce5ce773c7331b1cd33ef24f6c3a2b6f935680b0bd
|
|
@@ -5,7 +5,7 @@ module Brasa
|
|
|
5
5
|
module Commands
|
|
6
6
|
class Deploy < Base
|
|
7
7
|
POLL_INTERVAL = 5
|
|
8
|
-
|
|
8
|
+
DEPLOY_MAX_POLLS = 360 # 30 minutes
|
|
9
9
|
|
|
10
10
|
def execute(options = {})
|
|
11
11
|
require_auth!
|
|
@@ -34,22 +34,47 @@ module Brasa
|
|
|
34
34
|
private
|
|
35
35
|
|
|
36
36
|
def wait_for_deploy(slug, deploy_id)
|
|
37
|
-
|
|
37
|
+
started = Time.now
|
|
38
|
+
last_status = nil
|
|
39
|
+
DEPLOY_MAX_POLLS.times do |i|
|
|
38
40
|
deploy = api.get("/api/v1/apps/#{slug}/deploys/#{deploy_id}")
|
|
39
41
|
|
|
40
42
|
case deploy["status"]
|
|
41
43
|
when "live"
|
|
42
|
-
|
|
44
|
+
elapsed = (Time.now - started).to_i
|
|
45
|
+
success("\nDeploy concluído com sucesso! (#{elapsed}s)")
|
|
43
46
|
return
|
|
44
47
|
when "failed"
|
|
45
|
-
error("
|
|
48
|
+
error("\nDeploy falhou.")
|
|
46
49
|
return
|
|
47
50
|
end
|
|
48
51
|
|
|
52
|
+
if deploy["status"] != last_status
|
|
53
|
+
print "\n #{status_label(deploy["status"])}" if last_status
|
|
54
|
+
last_status = deploy["status"]
|
|
55
|
+
end
|
|
49
56
|
print "."
|
|
57
|
+
show_elapsed(started) if (i % 12).zero? && i > 0
|
|
58
|
+
sleep(POLL_INTERVAL)
|
|
59
|
+
rescue Faraday::Error, Errno::ECONNREFUSED, IO::TimeoutError
|
|
60
|
+
print "!"
|
|
50
61
|
sleep(POLL_INTERVAL)
|
|
51
62
|
end
|
|
52
|
-
|
|
63
|
+
elapsed = (Time.now - started).to_i
|
|
64
|
+
error("\nTimeout aguardando deploy (#{elapsed}s). O processo pode ainda estar rodando — verifique com: brasa status")
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def status_label(status)
|
|
68
|
+
{ "queued" => "Na fila...",
|
|
69
|
+
"building" => "Construindo imagem...",
|
|
70
|
+
"deploying" => "Deployando..." }[status] || status
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def show_elapsed(started)
|
|
74
|
+
elapsed = (Time.now - started).to_i
|
|
75
|
+
min = elapsed / 60
|
|
76
|
+
sec = elapsed % 60
|
|
77
|
+
print " (#{min}m#{sec}s)"
|
|
53
78
|
end
|
|
54
79
|
end
|
|
55
80
|
end
|
data/lib/brasa/commands/up.rb
CHANGED
|
@@ -5,7 +5,8 @@ module Brasa
|
|
|
5
5
|
module Commands
|
|
6
6
|
class Up < Base
|
|
7
7
|
POLL_INTERVAL = 5
|
|
8
|
-
|
|
8
|
+
PROVISION_MAX_POLLS = 240 # 20 minutes (cloud-init + readiness checks + managed DB)
|
|
9
|
+
DEPLOY_MAX_POLLS = 360 # 30 minutes (docker build + push + deploy)
|
|
9
10
|
|
|
10
11
|
def execute(options = {})
|
|
11
12
|
require_auth!
|
|
@@ -93,34 +94,71 @@ module Brasa
|
|
|
93
94
|
end
|
|
94
95
|
|
|
95
96
|
def wait_for_provisioning(slug)
|
|
96
|
-
|
|
97
|
+
started = Time.now
|
|
98
|
+
last_status = nil
|
|
99
|
+
PROVISION_MAX_POLLS.times do |i|
|
|
97
100
|
app = api.get("/api/v1/apps/#{slug}")
|
|
98
101
|
return true if app["status"] == "active"
|
|
99
102
|
if app["status"] == "error"
|
|
100
|
-
error("
|
|
103
|
+
error("\nErro no provisionamento.")
|
|
101
104
|
return false
|
|
102
105
|
end
|
|
106
|
+
if app["status"] != last_status
|
|
107
|
+
print "\n #{status_label(app["status"])}" if last_status
|
|
108
|
+
last_status = app["status"]
|
|
109
|
+
end
|
|
103
110
|
print "."
|
|
111
|
+
show_elapsed(started) if (i % 12).zero? && i > 0
|
|
112
|
+
sleep(POLL_INTERVAL)
|
|
113
|
+
rescue Faraday::Error, Errno::ECONNREFUSED, IO::TimeoutError
|
|
114
|
+
print "!"
|
|
104
115
|
sleep(POLL_INTERVAL)
|
|
105
116
|
end
|
|
106
|
-
|
|
117
|
+
elapsed = (Time.now - started).to_i
|
|
118
|
+
error("\nTimeout aguardando provisionamento (#{elapsed}s). O processo pode ainda estar rodando no servidor — verifique com: brasa status")
|
|
107
119
|
false
|
|
108
120
|
end
|
|
109
121
|
|
|
110
122
|
def wait_for_deploy(slug, deploy_id)
|
|
111
|
-
|
|
123
|
+
started = Time.now
|
|
124
|
+
last_status = nil
|
|
125
|
+
DEPLOY_MAX_POLLS.times do |i|
|
|
112
126
|
deploy = api.get("/api/v1/apps/#{slug}/deploys/#{deploy_id}")
|
|
113
127
|
return true if deploy["status"] == "live"
|
|
114
128
|
if deploy["status"] == "failed"
|
|
115
|
-
error("
|
|
129
|
+
error("\nDeploy falhou.")
|
|
116
130
|
return false
|
|
117
131
|
end
|
|
132
|
+
if deploy["status"] != last_status
|
|
133
|
+
print "\n #{status_label(deploy["status"])}" if last_status
|
|
134
|
+
last_status = deploy["status"]
|
|
135
|
+
end
|
|
118
136
|
print "."
|
|
137
|
+
show_elapsed(started) if (i % 12).zero? && i > 0
|
|
138
|
+
sleep(POLL_INTERVAL)
|
|
139
|
+
rescue Faraday::Error, Errno::ECONNREFUSED, IO::TimeoutError
|
|
140
|
+
print "!"
|
|
119
141
|
sleep(POLL_INTERVAL)
|
|
120
142
|
end
|
|
121
|
-
|
|
143
|
+
elapsed = (Time.now - started).to_i
|
|
144
|
+
error("\nTimeout aguardando deploy (#{elapsed}s). O processo pode ainda estar rodando no servidor — verifique com: brasa status")
|
|
122
145
|
false
|
|
123
146
|
end
|
|
147
|
+
|
|
148
|
+
def status_label(status)
|
|
149
|
+
{ "pending" => "Aguardando...",
|
|
150
|
+
"provisioning" => "Provisionando VM...",
|
|
151
|
+
"queued" => "Na fila...",
|
|
152
|
+
"building" => "Construindo imagem...",
|
|
153
|
+
"deploying" => "Deployando..." }[status] || status
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
def show_elapsed(started)
|
|
157
|
+
elapsed = (Time.now - started).to_i
|
|
158
|
+
min = elapsed / 60
|
|
159
|
+
sec = elapsed % 60
|
|
160
|
+
print " (#{min}m#{sec}s)"
|
|
161
|
+
end
|
|
124
162
|
end
|
|
125
163
|
end
|
|
126
164
|
end
|
data/lib/brasa/version.rb
CHANGED