prima-twig 0.3.21 → 0.3.22
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/bin/twig-deploy +80 -4
- 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: 47fa4c11f6d6ed6161b42a47e2f3623007bb7d7f
|
4
|
+
data.tar.gz: 09b60b8b7c9a48818b9494cafeaf41c31cd10c11
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4980b06e217b358301413e6fe44f935e522e4413bc598266dd328751ebb5e1dce04e2cbc0b3d25fb6216a2518ca69558b7365f6f98ff3e59fdd3d25df82a53da
|
7
|
+
data.tar.gz: e8cc212b0316606e903250b85ddaa0cf1a3cb56d0b9caf3b08c0e3048a816e8464713e67cf0cae266cdcb59718a92efc91d9d6b6aff161fb86442ef19f88a81c
|
data/bin/twig-deploy
CHANGED
@@ -46,6 +46,8 @@ class Review
|
|
46
46
|
|
47
47
|
def initialize
|
48
48
|
@prima = Prima.new
|
49
|
+
@cf = Aws::CloudFormation::Client.new
|
50
|
+
@ecs = Aws::ECS::Client.new
|
49
51
|
end
|
50
52
|
|
51
53
|
def execute!
|
@@ -68,14 +70,24 @@ class Review
|
|
68
70
|
end
|
69
71
|
end
|
70
72
|
|
73
|
+
user = `git config user.name`
|
74
|
+
artifact = artifacts.select {|v| v[:rev] == artifact_rev}.first
|
75
|
+
|
71
76
|
deploy_command = "bin/deploy #{artifact_rev}"
|
72
77
|
|
73
78
|
output "Il comando per il deploy sara': #{deploy_command}".yellow
|
74
79
|
|
75
80
|
exec_step deploy_command if @prima.yesno "Sei sicuro di voler effettuare il deploy in produzione?".blue
|
76
81
|
|
77
|
-
|
78
|
-
|
82
|
+
stack_name_web = 'ecs-task-web-production'
|
83
|
+
stack_name_consumer = 'ecs-task-consumer-production'
|
84
|
+
stack_name_cron = 'ecs-task-consumer-production'
|
85
|
+
wait_for_stack_ready(stack_name_web) unless stack_ready?(stack_name_web)
|
86
|
+
wait_for_stack_ready(stack_name_consumer) unless stack_ready?(stack_name_consumer)
|
87
|
+
wait_for_stack_ready(stack_name_cron) unless stack_ready?(stack_name_cron)
|
88
|
+
|
89
|
+
output "Avvio paparatzinger per gli screenshot".yellow
|
90
|
+
job_name = launch_paparatzinger(artifact[:commit_msg])
|
79
91
|
|
80
92
|
mail = Mail.new do
|
81
93
|
from 'deploy@prima.it'
|
@@ -83,12 +95,13 @@ class Review
|
|
83
95
|
subject "#{user} ha effettuato il deploy della revision #{artifact[:rev]}"
|
84
96
|
end
|
85
97
|
|
86
|
-
body = "## Deploy in produzione
|
98
|
+
body = "## Deploy in produzione effettuato con successo\n\n"
|
87
99
|
body << "Data: #{Time.now.strftime('%d/%m/%Y %H:%M:%S')}\n\n"
|
88
100
|
body << "Utente: #{user}\n\n"
|
89
101
|
body << "Revision: [#{artifact[:rev]}](https://github.com/primait/prima/commit/#{artifact[:rev]}) del #{artifact[:created_at].strftime('%d/%m/%Y %H:%M:%S')}\n\n"
|
90
102
|
body << "Branch: [#{artifact[:branch]}](https://github.com/primait/prima/tree/#{artifact[:branch]})\n\n"
|
91
|
-
body << "Commit: #{artifact[:commit_msg]}"
|
103
|
+
body << "Commit: #{artifact[:commit_msg].gsub(/_/, '\_')}\n\n"
|
104
|
+
body << "Screenshots (tra qualche minuto): [BrowserStack](https://www.browserstack.com/automate) (Filtrare per: \"#{job_name.gsub(/_/, '\_')}\")"
|
92
105
|
|
93
106
|
htmlBody = Redcarpet::Markdown.new(Redcarpet::Render::HTML.new).render body
|
94
107
|
|
@@ -128,6 +141,69 @@ class Review
|
|
128
141
|
artifacts.sort_by { |v| v[:created_at] }.reverse
|
129
142
|
end
|
130
143
|
|
144
|
+
def wait_for_stack_ready(stack_name)
|
145
|
+
ready = false
|
146
|
+
sleep_seconds = 5
|
147
|
+
output "Attendo che lo stack #{stack_name} finisca di essere deployato...\n".yellow
|
148
|
+
while !ready
|
149
|
+
ready = true if stack_ready?(stack_name)
|
150
|
+
seconds_elapsed = 0
|
151
|
+
while true
|
152
|
+
break if seconds_elapsed >= sleep_seconds
|
153
|
+
print '.'.yellow; STDOUT.flush
|
154
|
+
sleep 1
|
155
|
+
seconds_elapsed += 1
|
156
|
+
end
|
157
|
+
end
|
158
|
+
|
159
|
+
output "\nStack #{stack_name} deployato con successo!\n".green
|
160
|
+
end
|
161
|
+
|
162
|
+
def stack_ready?(stack_name)
|
163
|
+
resp = @cf.describe_stacks({
|
164
|
+
stack_name: stack_name
|
165
|
+
})
|
166
|
+
['CREATE_COMPLETE', 'UPDATE_COMPLETE'].include? resp.stacks[0].stack_status
|
167
|
+
end
|
168
|
+
|
169
|
+
def launch_paparatzinger(job_name)
|
170
|
+
job_name.gsub! /Merge pull request /i, ''
|
171
|
+
job_name.gsub! /from primait\/feature\//i, ''
|
172
|
+
job_name[0..99].gsub! /[^0-9a-z]/i, '\_'
|
173
|
+
|
174
|
+
logical_resource_id = 'TaskDefinitionPaparatzinger'
|
175
|
+
resp = @cf.describe_stack_resource({
|
176
|
+
stack_name: 'ecs-task-paparatzinger-production',
|
177
|
+
logical_resource_id: logical_resource_id
|
178
|
+
})
|
179
|
+
|
180
|
+
resp = @ecs.run_task({
|
181
|
+
cluster: 'ecs-cluster-microservices-production-ECSCluster-N4APBU860IA1',
|
182
|
+
task_definition: resp.stack_resource_detail.physical_resource_id,
|
183
|
+
overrides: {
|
184
|
+
container_overrides: [
|
185
|
+
{
|
186
|
+
name: 'paparatzinger',
|
187
|
+
environment: [
|
188
|
+
{
|
189
|
+
name: 'JOB_NAME',
|
190
|
+
value: job_name,
|
191
|
+
},
|
192
|
+
{
|
193
|
+
name: 'VERSION',
|
194
|
+
value: '1.0.4',
|
195
|
+
}
|
196
|
+
]
|
197
|
+
}
|
198
|
+
]
|
199
|
+
},
|
200
|
+
count: 1
|
201
|
+
})
|
202
|
+
output "paparatzinger lanciato con successo\n".green
|
203
|
+
|
204
|
+
job_name
|
205
|
+
end
|
206
|
+
|
131
207
|
end
|
132
208
|
|
133
209
|
Review.new.execute!
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: prima-twig
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.22
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Matteo Giachino
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2016-04-
|
14
|
+
date: 2016-04-29 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: twig
|