capistrano-magento2 0.8.0 → 0.8.1
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/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
|