capistrano-magento2 0.8.0 → 0.8.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +7 -0
- data/README.md +15 -0
- data/lib/capistrano/magento2/cachetool.rb +14 -0
- data/lib/capistrano/magento2/version.rb +1 -1
- data/lib/capistrano/tasks/cachetool.rake +34 -0
- data/lib/capistrano/tasks/magento.rake +52 -14
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 647236f26af13c3c337e3c4c2c105f959c4a5af20b2d5cae9d064c7f1523d168
|
4
|
+
data.tar.gz: f8534cef247514959253f7e47caf8563966a92c4b9f712a987b9f68299b7b8d0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3e65ecf251ecb4b7d93d4ab838036b64859962decd16ec18f8848d4828cf86b85fb3c2c86225b0ec04febd7f65c6d4b550d49c0c2954217cb75f0d039bc87756
|
7
|
+
data.tar.gz: 6663d81e73de427ea960a3dbdb742de46e8bc58d8d7f115616b8c18511bb659a186a389eaf8bdee74bb530156c8005d5558417559a049803ba71bc5ba2bef0b5
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,12 @@
|
|
1
1
|
# Capistrano::Magento2 Change Log
|
2
2
|
|
3
|
+
0.8.1
|
4
|
+
==========
|
5
|
+
|
6
|
+
* Added `require 'capistrano/magento2/cachetool'` which may be used to enable flushing the php-opcache when [cachetool](http://gordalina.github.io/cachetool/) is installed on the server
|
7
|
+
* Added `cachetool:opcache:status` and `cachetool:opcache:reset` commands (use `require 'capistrano/magento2/cachetool'` to enable them)
|
8
|
+
* Fixed issue causing deployment to disable maintenance mode when manually enabled prior to deployment (issue #16)
|
9
|
+
|
3
10
|
0.8.0
|
4
11
|
==========
|
5
12
|
|
data/README.md
CHANGED
@@ -204,6 +204,21 @@ To see what process the built-in routine runs, take a look at the included rake
|
|
204
204
|
|
205
205
|
Before deploying with Capistrano, you must update each of your web servers to point to the `current` directory inside of the configured `:deploy_to` directory. For example: `/var/www/html/current/pub` Refer to the [Capistrano Structure](http://capistranorb.com/documentation/getting-started/structure/) to learn more about Capistrano's folder structure.
|
206
206
|
|
207
|
+
### PHP Opcache Reset
|
208
|
+
|
209
|
+
When doing atomic deployments with php-opcache installed on a server, the cache will reach a full state after which application performance will degrade as a result of the opcache not being able to do it's job. To work nicely with this, there is support included for automatically resetting the php-opcache after a release is published.
|
210
|
+
|
211
|
+
To use this, include `require 'capistrano/magento2/cachetool'` in your `Capfile` and make sure there is an `/etc/cachetool.yml` or `/var/www/html/.cachetool.yml` (assuming `:deploy_to` points at `/var/www/html`) file configured with contents like the following:
|
212
|
+
|
213
|
+
adapter: fastcgi
|
214
|
+
fastcgi: /var/run/php-fpm/www-data.sock
|
215
|
+
temp_dir: /dev/shm/cachetool
|
216
|
+
extensions: [ opcache ]
|
217
|
+
|
218
|
+
With this configuration in place, be sure cachetool ([available from here](http://gordalina.github.io/cachetool/)) has already been installed on the server and is available in `$PATH`.
|
219
|
+
|
220
|
+
Congratulations! You should now begin to see the pre-deployemnt opcache status information when running a deployment followed immediately be the `cachetool opcache:reset` command used to keep things humming nicely along.
|
221
|
+
|
207
222
|
## Magento Specific Tasks
|
208
223
|
|
209
224
|
All Magento 2 tasks used by the built-in `deploy.rake` file as well as some additional commands are implemented and exposed to the end-user for use directly via the cap tool. You can also see this list by running `cap -T` from your shell.
|
@@ -0,0 +1,14 @@
|
|
1
|
+
##
|
2
|
+
# Copyright © 2018 by David Alger. All rights reserved
|
3
|
+
#
|
4
|
+
# Licensed under the Open Software License 3.0 (OSL-3.0)
|
5
|
+
# See included LICENSE file for full text of OSL-3.0
|
6
|
+
#
|
7
|
+
# http://davidalger.com/contact/
|
8
|
+
##
|
9
|
+
|
10
|
+
require 'capistrano/deploy'
|
11
|
+
|
12
|
+
SSHKit.config.command_map[:cachetool] = "/usr/bin/env cachetool --"
|
13
|
+
|
14
|
+
load File.expand_path('../../tasks/cachetool.rake', __FILE__)
|
@@ -0,0 +1,34 @@
|
|
1
|
+
##
|
2
|
+
# Copyright © 2018 by David Alger. All rights reserved
|
3
|
+
#
|
4
|
+
# Licensed under the Open Software License 3.0 (OSL-3.0)
|
5
|
+
# See included LICENSE file for full text of OSL-3.0
|
6
|
+
#
|
7
|
+
# http://davidalger.com/contact/
|
8
|
+
##
|
9
|
+
|
10
|
+
after "deploy:published", "cachetool:opcache:status"
|
11
|
+
after "deploy:published", "cachetool:opcache:reset"
|
12
|
+
|
13
|
+
namespace :cachetool do
|
14
|
+
namespace :opcache do
|
15
|
+
desc "Resets the contents of the php-opcode cache"
|
16
|
+
task :reset do
|
17
|
+
on release_roles :all do
|
18
|
+
within release_path do
|
19
|
+
execute :cachetool, 'opcache:reset'
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
desc "Show information about the php-opcode cache"
|
25
|
+
task :status do
|
26
|
+
# Due to nature of the output, run this in sequence vs in parallel (the default) with shortest possible wait time
|
27
|
+
on release_roles(:all), in: :sequence, wait: 1 do
|
28
|
+
within release_path do
|
29
|
+
execute :cachetool, 'opcache:status'
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -399,30 +399,61 @@ namespace :magento do
|
|
399
399
|
end
|
400
400
|
end
|
401
401
|
|
402
|
-
# Internal command used to check if maintenance mode is neeeded and disable when zero-down deploy is
|
402
|
+
# Internal command used to check if maintenance mode is neeeded and disable when zero-down deploy is
|
403
|
+
# possible or when maintenance mode was previously enabled on the deploy target
|
403
404
|
task :check do
|
404
405
|
on primary fetch(:magento_deploy_setup_role) do
|
405
|
-
|
406
|
-
|
407
|
-
|
406
|
+
maintenance_enabled = nil
|
407
|
+
disable_maintenance = false # Do not disable maintenance mode in absence of positive release checks
|
408
|
+
|
409
|
+
if test "[ -d #{current_path} ]"
|
410
|
+
within current_path do
|
411
|
+
# If maintenance mode is already enabled, enable maintenance mode on new release and disable management to
|
412
|
+
# avoid disabling maintenance mode in the event it was manually enabled prior to deployment
|
413
|
+
info "Checking maintenance status..."
|
414
|
+
maintenance_status = capture :magento, 'maintenance:status', raise_on_non_zero_exit: false
|
415
|
+
|
416
|
+
if maintenance_status.to_s.include? 'maintenance mode is active'
|
417
|
+
info "Maintenance mode is currently active."
|
418
|
+
maintenance_enabled = true
|
419
|
+
else
|
420
|
+
info "Maintenance mode is currently inactive."
|
421
|
+
maintenance_enabled = false
|
422
|
+
end
|
423
|
+
info ""
|
424
|
+
end
|
425
|
+
end
|
426
|
+
|
427
|
+
# If maintenance is currently active, enable it on the newly deployed release
|
428
|
+
if maintenance_enabled
|
429
|
+
info "Enabling maintenance mode on new release to match active status of current release."
|
430
|
+
on release_roles :all do
|
431
|
+
within release_path do
|
432
|
+
execute :magento, 'maintenance:enable'
|
433
|
+
end
|
434
|
+
end
|
435
|
+
info ""
|
436
|
+
end
|
408
437
|
|
438
|
+
within release_path do
|
409
439
|
# The setup:db:status command is only available in Magento 2.2.2 and later
|
410
440
|
if not test :magento, 'setup:db:status --help >/dev/null 2>&1'
|
411
441
|
info "Magento CLI command setup:db:status is not available. Maintenance mode will be used by default."
|
412
442
|
else
|
413
443
|
info "Checking database status..."
|
414
444
|
# Check setup:db:status output and disable maintenance mode if all modules are up-to-date
|
415
|
-
database_status = capture :magento, 'setup:db:status'
|
445
|
+
database_status = capture :magento, 'setup:db:status', raise_on_non_zero_exit: false
|
416
446
|
|
417
447
|
if database_status.to_s.include? 'All modules are up to date'
|
418
448
|
info "All modules are up to date. No database updates should occur during this release."
|
419
|
-
|
449
|
+
info ""
|
420
450
|
disable_maintenance = true
|
421
451
|
else
|
422
452
|
puts " #{database_status.gsub("\n", "\n ").sub("Run 'setup:upgrade' to update your DB schema and data.", "")}"
|
423
453
|
end
|
424
454
|
|
425
455
|
# Gather md5sums of app/etc/config.php on current and new release
|
456
|
+
info "Checking config status..."
|
426
457
|
config_hash_release = capture :md5sum, "#{release_path}/app/etc/config.php"
|
427
458
|
if test "[ -f #{current_path}/app/etc/config.php ]"
|
428
459
|
config_hash_current = capture :md5sum, "#{current_path}/app/etc/config.php"
|
@@ -433,20 +464,27 @@ namespace :magento do
|
|
433
464
|
# Output some informational messages showing the config.php hash values
|
434
465
|
info "<release_path>/app/etc/config.php hash: #{config_hash_release.split(" ")[0]}"
|
435
466
|
info "<current_path>/app/etc/config.php hash: #{config_hash_current.split(" ")[0]}"
|
436
|
-
info ""
|
437
467
|
|
438
468
|
# If hashes differ, maintenance mode should not be disabled even if there are no database changes.
|
439
469
|
if config_hash_release.split(" ")[0] != config_hash_current.split(" ")[0]
|
440
|
-
info "
|
470
|
+
info "Maintenance mode will not be disabled (config hashes differ)."
|
441
471
|
disable_maintenance = false
|
442
472
|
end
|
473
|
+
info ""
|
474
|
+
end
|
443
475
|
|
444
|
-
|
445
|
-
|
446
|
-
|
447
|
-
|
448
|
-
|
449
|
-
|
476
|
+
if maintenance_enabled or disable_maintenance
|
477
|
+
info "Disabling maintenance mode management..."
|
478
|
+
end
|
479
|
+
|
480
|
+
if maintenance_enabled
|
481
|
+
info "Maintenance mode was already active prior to deploy."
|
482
|
+
set :magento_deploy_maintenance, false
|
483
|
+
elsif disable_maintenance
|
484
|
+
info "There are no database updates or config changes. This is a zero-down deployment."
|
485
|
+
set :magento_deploy_maintenance, false
|
486
|
+
else
|
487
|
+
info "Maintenance mode usage will be enforced per :magento_deploy_maintenance (setting is #{fetch(:magento_deploy_maintenance).to_s})"
|
450
488
|
end
|
451
489
|
end
|
452
490
|
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.8.
|
4
|
+
version: 0.8.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Alger
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-
|
11
|
+
date: 2018-06-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: capistrano
|
@@ -70,11 +70,13 @@ files:
|
|
70
70
|
- capistrano-magento2.gemspec
|
71
71
|
- lib/capistrano-magento2.rb
|
72
72
|
- lib/capistrano/magento2.rb
|
73
|
+
- lib/capistrano/magento2/cachetool.rb
|
73
74
|
- lib/capistrano/magento2/defaults.rb
|
74
75
|
- lib/capistrano/magento2/deploy.rb
|
75
76
|
- lib/capistrano/magento2/notifier.rb
|
76
77
|
- lib/capistrano/magento2/pending.rb
|
77
78
|
- lib/capistrano/magento2/version.rb
|
79
|
+
- lib/capistrano/tasks/cachetool.rake
|
78
80
|
- lib/capistrano/tasks/deploy.rake
|
79
81
|
- lib/capistrano/tasks/magento.rake
|
80
82
|
- lib/capistrano/tasks/notifier.rake
|