capistrano-magento2 0.4.0 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +14 -0
- data/README.md +6 -4
- data/capistrano-magento2.gemspec +2 -0
- data/lib/capistrano/magento2/version.rb +1 -1
- data/lib/capistrano/tasks/deploy.rake +13 -4
- data/lib/capistrano/tasks/magento.rake +60 -9
- data/lib/capistrano/tasks/notifier.rake +0 -22
- data/lib/capistrano/tasks/pending.rake +6 -5
- 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: a091e5f5eae6baf2c936cefe403e8383444c6f6e
|
4
|
+
data.tar.gz: 5f951908a10ec8018a5c3b806dc7dac13f334860
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f8c63e7428739a9b571c898db91f76d0817e124284764fa9db4e18ccbed7eed2d6628382509ae17fc46889c2836835f5b595e3d4d32f89d32110d509163bca68
|
7
|
+
data.tar.gz: bfdef14c680d81fb9e32d66cb7a8842a26087f920ee7fb15eb140e3a2bad231b8f3fe361cfcd348631b62384031a169e495874b369a0ea881071ff49c1bfe2e3
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,19 @@
|
|
1
1
|
# Capistrano::Magento2 Change Log
|
2
2
|
|
3
|
+
0.5.0
|
4
|
+
==========
|
5
|
+
|
6
|
+
* Added ability to only deploy specific themes via the new `:magento_deploy_themes` array
|
7
|
+
* Added `:magento_deploy_confim` setting which requires user confirmation of deployment to specific capistrano stages
|
8
|
+
* Added call to pre-generate secure RequireJS config (issue #21)
|
9
|
+
* Added workaround for Magento 2.1 specific bug where lack of a deployed_version.txt file would fail static asset deploy
|
10
|
+
* Added error check on output of setup:di:compile-multi-tenant since Magento 2.0 doesn't return error codes (issue #25)
|
11
|
+
* Updated formatting of pending deployment messaging
|
12
|
+
* Updated composer calls to specify --no-dev and --optimize-autoloader when `:magento_deploy_production` is not set (issue #22, #23)
|
13
|
+
* Fixed bug causing maintenance mode to be enabled on deploy even when `:magento_deploy_maintenance` was set to false
|
14
|
+
* Fixed bug preventing the second call to `magento:setup:permissions` from being executed (issue #18)
|
15
|
+
* Removed the undocumented `:deploy_warn_stages` setting from the notifier
|
16
|
+
|
3
17
|
0.4.0
|
4
18
|
==========
|
5
19
|
|
data/README.md
CHANGED
@@ -111,10 +111,12 @@ Before you can use Capistrano to deploy, you must configure the `config/deploy.r
|
|
111
111
|
|
112
112
|
| setting | default | what it does
|
113
113
|
| ----------------------------- | ------- | ---
|
114
|
-
| `:magento_deploy_languages` | `['en_US']` | Array of languages passed to static content deploy routine
|
115
|
-
| `:
|
116
|
-
| `:
|
117
|
-
| `:
|
114
|
+
| `:magento_deploy_languages` | `['en_US']` | Array of languages passed to static content deploy routine
|
115
|
+
| `:magento_deploy_themes` | `[]` | Array of themes passed to static content deploy routine (Magento 2.1+ only)
|
116
|
+
| `:magento_deploy_composer` | `true` | Enables composer install behaviour in the built-in deploy routine
|
117
|
+
| `:magento_deploy_production` | `true` | Enables production specific DI compilation and static content generation
|
118
|
+
| `:magento_deploy_maintenance` | `true` | Enables use of maintenance mode while magento:setup:upgrade runs
|
119
|
+
| `:magento_deploy_confirm` | `[]` | Used to require confirmation of deployment to a set of capistrano stages
|
118
120
|
|
119
121
|
#### Example Usage
|
120
122
|
|
data/capistrano-magento2.gemspec
CHANGED
@@ -28,6 +28,8 @@ Gem::Specification.new do |spec|
|
|
28
28
|
spec.require_paths = ['lib']
|
29
29
|
|
30
30
|
spec.add_dependency 'capistrano', '~> 3.1'
|
31
|
+
|
32
|
+
# TODO explore removing these from gemspec per issue #19
|
31
33
|
spec.add_dependency 'terminal-notifier', '~> 1.6'
|
32
34
|
spec.add_dependency 'capistrano-pending', '~> 0.1'
|
33
35
|
|
@@ -10,6 +10,14 @@
|
|
10
10
|
namespace :deploy do
|
11
11
|
before 'deploy:check:linked_files', 'magento:deploy:check'
|
12
12
|
|
13
|
+
before :starting, :confirm_action do
|
14
|
+
if fetch(:magento_deploy_confirm).include? fetch(:stage).to_s
|
15
|
+
print "\e[0;31m Are you sure you want to deploy to #{fetch(:stage).to_s}? [y/n] \e[0m"
|
16
|
+
proceed = STDIN.gets[0..0] rescue nil
|
17
|
+
exit unless proceed == 'y' || proceed == 'Y'
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
13
21
|
task :updated do
|
14
22
|
on release_roles :all do
|
15
23
|
invoke 'magento:deploy:verify'
|
@@ -20,12 +28,12 @@ namespace :deploy do
|
|
20
28
|
invoke 'magento:setup:di:compile'
|
21
29
|
end
|
22
30
|
invoke 'magento:setup:permissions'
|
23
|
-
|
31
|
+
invoke 'magento:maintenance:enable' if fetch(:magento_deploy_maintenance)
|
32
|
+
if test "[ -d #{current_path} ]"
|
24
33
|
within current_path do
|
25
|
-
execute :magento, 'maintenance:enable'
|
34
|
+
execute :magento, 'maintenance:enable' if fetch(:magento_deploy_maintenance)
|
26
35
|
end
|
27
36
|
end
|
28
|
-
invoke 'magento:maintenance:enable' if fetch(:magento_deploy_maintenance)
|
29
37
|
invoke 'magento:setup:upgrade'
|
30
38
|
end
|
31
39
|
end
|
@@ -50,7 +58,8 @@ end
|
|
50
58
|
namespace :load do
|
51
59
|
task :defaults do
|
52
60
|
set :magento_deploy_composer, fetch(:magento_deploy_composer, true)
|
53
|
-
set :
|
61
|
+
set :magento_deploy_confirm, fetch(:magento_deploy_confirm, [])
|
54
62
|
set :magento_deploy_maintenance, fetch(:magento_deploy_maintenance, true)
|
63
|
+
set :magento_deploy_production, fetch(:magento_deploy_production, true)
|
55
64
|
end
|
56
65
|
end
|
@@ -79,13 +79,28 @@ namespace :magento do
|
|
79
79
|
namespace :composer do
|
80
80
|
desc 'Run composer install'
|
81
81
|
task :install do
|
82
|
+
|
82
83
|
on release_roles :all do
|
83
84
|
within release_path do
|
84
|
-
|
85
|
+
composer_flags = '--prefer-dist --no-interaction'
|
86
|
+
|
87
|
+
if fetch(:magento_deploy_production)
|
88
|
+
composer_flags += ' --optimize-autoloader'
|
89
|
+
end
|
90
|
+
|
91
|
+
execute :composer, "install #{composer_flags} 2>&1"
|
92
|
+
|
93
|
+
if fetch(:magento_deploy_production)
|
94
|
+
feature_version = capture :magento, "-V | cut -d' ' -f4 | cut -d. -f1-2"
|
85
95
|
|
86
|
-
|
87
|
-
|
88
|
-
|
96
|
+
if feature_version.to_f > 2.0
|
97
|
+
composer_flags += ' --no-dev'
|
98
|
+
execute :composer, "install #{composer_flags} 2>&1" # removes require-dev components from prev command
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
if test "[ -d #{release_path}/update ]" # can't count on this, but emit warning if not present
|
103
|
+
execute :composer, "install #{composer_flags} -d ./update 2>&1"
|
89
104
|
else
|
90
105
|
puts "\e[0;31m Warning: ./update dir does not exist in repository!\n\e[0m\n"
|
91
106
|
end
|
@@ -146,6 +161,7 @@ namespace :magento do
|
|
146
161
|
execute :chmod, '+x ./bin/magento'
|
147
162
|
end
|
148
163
|
end
|
164
|
+
Rake::Task['magento:setup:permissions'].reenable ## make task perpetually callable
|
149
165
|
end
|
150
166
|
|
151
167
|
namespace :di do
|
@@ -156,8 +172,12 @@ namespace :magento do
|
|
156
172
|
# Due to a bug in the single-tenant compiler released in 2.0 (see here for details: http://bit.ly/21eMPtt)
|
157
173
|
# we have to use multi-tenant currently. However, the multi-tenant is being dropped in 2.1 and is no longer
|
158
174
|
# present in the develop mainline, so we are testing for multi-tenant presence for long-term portability.
|
159
|
-
if test :magento, 'setup:di:compile-multi-tenant --help'
|
160
|
-
|
175
|
+
if test :magento, 'setup:di:compile-multi-tenant --help >/dev/null 2>&1'
|
176
|
+
output = capture :magento, 'setup:di:compile-multi-tenant', verbosity: Logger::INFO
|
177
|
+
|
178
|
+
if output.to_s.include? 'Errors during compilation'
|
179
|
+
raise Exception, 'setup:di:compile-multi-tenant command execution failed'
|
180
|
+
end
|
161
181
|
else
|
162
182
|
execute :magento, 'setup:di:compile'
|
163
183
|
end
|
@@ -171,16 +191,46 @@ namespace :magento do
|
|
171
191
|
task :deploy do
|
172
192
|
on release_roles :all do
|
173
193
|
deploy_languages = fetch(:magento_deploy_languages).join(' ')
|
194
|
+
deploy_themes = fetch(:magento_deploy_themes)
|
195
|
+
|
196
|
+
if deploy_themes.count() > 0
|
197
|
+
deploy_themes = ' -t ' + deploy_themes.join(' -t ') # prepare value for cli command if theme(s) specified
|
198
|
+
else
|
199
|
+
deploy_themes = ''
|
200
|
+
end
|
201
|
+
|
202
|
+
# Output is being checked for a success message because this command may easily fail due to customizations
|
203
|
+
# and 2.0.x CLI commands do not return error exit codes on failure. See magento/magento2#3060 for details.
|
174
204
|
within release_path do
|
175
|
-
|
176
|
-
#
|
205
|
+
|
206
|
+
# Workaround for 2.1 specific issue: https://github.com/magento/magento2/pull/6437
|
207
|
+
execute "touch #{release_path}/pub/static/deployed_version.txt"
|
208
|
+
|
177
209
|
output = capture :magento,
|
178
|
-
"setup:static-content:deploy #{deploy_languages}| stdbuf -o0 tr -d .",
|
210
|
+
"setup:static-content:deploy #{deploy_languages}#{deploy_themes} | stdbuf -o0 tr -d .",
|
179
211
|
verbosity: Logger::INFO
|
180
212
|
|
181
213
|
if not output.to_s.include? 'New version of deployed files'
|
182
214
|
raise Exception, 'Failed to compile static assets'
|
183
215
|
end
|
216
|
+
|
217
|
+
with(https: 'on') {
|
218
|
+
deploy_flags = ''
|
219
|
+
|
220
|
+
# Magento 2.0 does not have these flags, so only way to generate secure files is to do all of them :/
|
221
|
+
if test :magento, 'setup:static-content:deploy --help | grep -- --theme'
|
222
|
+
deploy_flags = " --no-javascript --no-css --no-less --no-images" \
|
223
|
+
+ " --no-fonts --no-html --no-misc --no-html-minify"
|
224
|
+
end
|
225
|
+
|
226
|
+
output = capture :magento,
|
227
|
+
"setup:static-content:deploy #{deploy_languages}#{deploy_themes}#{deploy_flags} | stdbuf -o0 tr -d .",
|
228
|
+
verbosity: Logger::INFO
|
229
|
+
|
230
|
+
if not output.to_s.include? 'New version of deployed files'
|
231
|
+
raise Exception, 'Failed to compile (secure) static assets'
|
232
|
+
end
|
233
|
+
}
|
184
234
|
end
|
185
235
|
end
|
186
236
|
end
|
@@ -305,5 +355,6 @@ namespace :load do
|
|
305
355
|
)
|
306
356
|
|
307
357
|
set :magento_deploy_languages, fetch(:magento_deploy_languages, ['en_US'])
|
358
|
+
set :magento_deploy_themes, fetch(:magento_deploy_themes, [])
|
308
359
|
end
|
309
360
|
end
|
@@ -10,21 +10,6 @@
|
|
10
10
|
require 'terminal-notifier'
|
11
11
|
|
12
12
|
namespace :deploy do
|
13
|
-
before :starting, :confirm_action do
|
14
|
-
if fetch(:deploy_warn_stages).include? fetch(:stage).to_s
|
15
|
-
message = "Are you sure you want to deploy to #{fetch(:stage).to_s}? [y/N]".center(66)
|
16
|
-
|
17
|
-
puts "\n\e[0;31m"
|
18
|
-
puts " ######################################################################"
|
19
|
-
puts " # #"
|
20
|
-
puts " # #{message} #"
|
21
|
-
puts " # #"
|
22
|
-
puts " ######################################################################\e[0m\n"
|
23
|
-
proceed = STDIN.gets[0..0] rescue nil
|
24
|
-
exit unless proceed == 'y' || proceed == 'Y'
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
13
|
after 'deploy:failed', :notify_user_failure do
|
29
14
|
run_locally do
|
30
15
|
set :message, "ERROR in deploying " + fetch(:application).to_s + " to " + fetch(:stage).to_s
|
@@ -39,10 +24,3 @@ namespace :deploy do
|
|
39
24
|
end
|
40
25
|
end
|
41
26
|
end
|
42
|
-
|
43
|
-
namespace :load do
|
44
|
-
task :defaults do
|
45
|
-
# TODO: Document the :deploy_warn_stages option
|
46
|
-
set :deploy_warn_stages, fetch(:deploy_warn_stages, []).push('prod', 'production')
|
47
|
-
end
|
48
|
-
end
|
@@ -23,15 +23,16 @@ namespace :deploy do
|
|
23
23
|
|
24
24
|
output = _scm.log(from, to, true)
|
25
25
|
if output.to_s.strip.empty?
|
26
|
-
puts "\e[0;31m"
|
27
|
-
|
28
|
-
print " Are you sure you want to continue deploying? [y/n] \e[0m"
|
26
|
+
puts "\e[0;31m No changes to deploy (from and to are the same: #{from}..#{to})"
|
27
|
+
print " Are you sure you want to continue? [y/n] \e[0m"
|
29
28
|
|
30
29
|
proceed = STDIN.gets[0..0] rescue nil
|
31
30
|
exit unless proceed == 'y' || proceed == 'Y'
|
32
31
|
else
|
33
|
-
puts "Deploying changes
|
34
|
-
|
32
|
+
puts "\e[0;90m Deploying changes #{from}..#{to}:\e[0m"
|
33
|
+
output.each_line do |s|
|
34
|
+
puts " " + s
|
35
|
+
end
|
35
36
|
end
|
36
37
|
end
|
37
38
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: capistrano-magento2
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Alger
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-09-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: capistrano
|