capistrano-magento2 0.5.9 → 0.6.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 +8 -0
- data/README.md +52 -8
- data/capistrano-magento2.gemspec +0 -4
- data/lib/capistrano/magento2.rb +1 -1
- data/lib/capistrano/magento2/defaults.rb +8 -0
- data/lib/capistrano/magento2/pending.rb +32 -36
- data/lib/capistrano/magento2/version.rb +1 -1
- data/lib/capistrano/tasks/pending.rake +62 -22
- metadata +2 -30
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8469b82d98864aafd3331f72e0b5082243f835c8
|
4
|
+
data.tar.gz: 8eeb51698b72e2a102ef151bfd2d14546c916232
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3afa6eb01bbb5425ba083bc58c0f7efaead6307183847eebc01fb4b89ed3a5501b117e7d71679bcfb016fae5ec60a9b252dd04a1f60bfd87c984e28b10a2663c
|
7
|
+
data.tar.gz: ce1bb3f5b21ce33a6d1fcdeb3b5733481109d415bf83afffb2f9ab2bd72ce5c8ffef675c1c8a53527f84aa875cf7df31c18772f184e23e730b1d18a93a675dbd
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,13 @@
|
|
1
1
|
# Capistrano::Magento2 Change Log
|
2
2
|
|
3
|
+
0.6.0
|
4
|
+
==========
|
5
|
+
|
6
|
+
* Added full-featured pending change logging functionality. See README for details (issue #58)
|
7
|
+
* Fixed inability to set PATH in capistrano configuration vs `.bashrc` file (issue #62)
|
8
|
+
* Updated README to reflect removing the `terminal-notifier` gem as a hard dependency (issue #19)
|
9
|
+
* Removed `capistrano-pending` as a dependency (issue #58)
|
10
|
+
|
3
11
|
0.5.9
|
4
12
|
==========
|
5
13
|
|
data/README.md
CHANGED
@@ -43,6 +43,7 @@ _Note: By default, Capistrano creates "staging" and "production" stages. If you
|
|
43
43
|
|
44
44
|
# Load Magento deployment tasks
|
45
45
|
require 'capistrano/magento2/deploy'
|
46
|
+
require 'capistrano/magento2/pending'
|
46
47
|
|
47
48
|
# Load Git plugin
|
48
49
|
require "capistrano/scm/git"
|
@@ -179,7 +180,7 @@ To see what process the built-in routine runs, take a look at the included rake
|
|
179
180
|
|
180
181
|
### Web Server Root Path
|
181
182
|
|
182
|
-
Before deploying with Capistrano, you must update each of your web servers to point to
|
183
|
+
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.
|
183
184
|
|
184
185
|
## Magento Specific Tasks
|
185
186
|
|
@@ -208,21 +209,64 @@ All Magento 2 tasks used by the built-in `deploy.rake` file as well as some addi
|
|
208
209
|
| magento:setup:static-content:deploy | Deploys static view files |
|
209
210
|
| magento:setup:upgrade | Run the Magento upgrade process |
|
210
211
|
|
211
|
-
##
|
212
|
-
|
212
|
+
## Pending Changes Support
|
213
|
+
|
214
|
+
When the line `require 'capistrano/magento2/pending'` is included in your `Capfile` per the recommended configuration above, this gem will report changes pending deployment in an abbreviated git log style format. Here is an example:
|
215
|
+
|
216
|
+
```
|
217
|
+
00:00 deploy:pending:log
|
218
|
+
01 git fetch origin
|
219
|
+
✔ 01 dalger@localhost 1.241s
|
220
|
+
✔ 01 dalger@localhost 1.259s
|
221
|
+
Changes pending deployment on web1 (tags/2.1.2 -> 2.1):
|
222
|
+
f511288 Thu Feb 23 12:19:20 2017 -0600 David Alger (HEAD -> 2.1, tag: 2.1.4, origin/2.1) Magento 2.1.4
|
223
|
+
7fb219c Thu Feb 23 12:17:11 2017 -0600 David Alger (tag: 2.1.3) Magento 2.1.3
|
224
|
+
570c9b3 Thu Feb 23 12:12:43 2017 -0600 David Alger Updated capistrano configuration
|
225
|
+
No changes to deploy on web2 (from and to are the same: 2.1 -> 2.1)
|
226
|
+
```
|
227
|
+
|
228
|
+
When there are no changes due for deployment to any host, a warning requiring confirmation will be emitted by default:
|
229
|
+
|
230
|
+
```
|
231
|
+
No changes to deploy on web1 (from and to are the same: 2.1 -> 2.1)
|
232
|
+
No changes to deploy on web2 (from and to are the same: 2.1 -> 2.1)
|
233
|
+
Are you sure you want to continue? [y/n]
|
234
|
+
```
|
235
|
+
|
236
|
+
This conformational warning can be disabled by including the following in your project's configuration:
|
213
237
|
|
214
238
|
```ruby
|
215
|
-
|
239
|
+
set :magento_deploy_pending_warn, false
|
216
240
|
```
|
217
241
|
|
218
|
-
|
242
|
+
### Pending Changes Configuration
|
243
|
+
|
244
|
+
| setting | what it does
|
245
|
+
| -------------------------------- | ------- | ---
|
246
|
+
| `:magento_deploy_pending_role` | Roles to check for pending changes on. This defaults to `:all`
|
247
|
+
| `:magento_deploy_pending_warn` | Set this to `false` to disable the conformational warning on zero-change deployment
|
248
|
+
| `:magento_deploy_pending_format` | Can be used to set a custom change log format. See `defaults.rb` for example.
|
219
249
|
|
220
|
-
|
250
|
+
### Pending Changes Tasks
|
251
|
+
|
252
|
+
| cap command | what it does |
|
253
|
+
| ------------------------------------- | -------------------------------------------------- |
|
254
|
+
| deploy:pending | Displays a summary of commits pending deployment |
|
255
|
+
|
256
|
+
Note: For more details including screenshots of what this functionality does, reference [this post](https://github.com/davidalger/capistrano-magento2/issues/58#issuecomment-282404477).
|
257
|
+
|
258
|
+
## Terminal Notifier on OS X
|
259
|
+
|
260
|
+
This gem includes an optional configuration file include which adds notification support via the [terminal-notifier](https://rubygems.org/gems/terminal-notifier) gem. To configure notifications, simply add the following line to your `Capfile`:
|
261
|
+
|
262
|
+
```ruby
|
263
|
+
require 'capistrano/magento2/notifier'
|
264
|
+
```
|
221
265
|
|
222
|
-
|
266
|
+
**Notice:** The `terminal-notifier` gem is currently macOS specific and thus can not be used on generic *nix environments. Because this gem has been known to cause ruby stability issues on certain non-macOS environments, it is not specified as a hard requirement in this gem's gemspec. When using this functionality, it is expected the gem either be already present on your working environment or be added to your project's `Gemfile`:
|
223
267
|
|
224
268
|
```ruby
|
225
|
-
|
269
|
+
gem 'terminal-notifier'
|
226
270
|
```
|
227
271
|
|
228
272
|
## Development
|
data/capistrano-magento2.gemspec
CHANGED
@@ -29,10 +29,6 @@ Gem::Specification.new do |spec|
|
|
29
29
|
|
30
30
|
spec.add_dependency 'capistrano', '~> 3.1'
|
31
31
|
|
32
|
-
# TODO explore removing these from gemspec per issue #19
|
33
|
-
spec.add_dependency 'terminal-notifier', '~> 1.6'
|
34
|
-
spec.add_dependency 'capistrano-pending', '~> 0.1'
|
35
|
-
|
36
32
|
spec.add_development_dependency 'bundler', '~> 1.7'
|
37
33
|
spec.add_development_dependency 'rake', '~> 10.0'
|
38
34
|
end
|
data/lib/capistrano/magento2.rb
CHANGED
@@ -13,7 +13,7 @@ module Capistrano
|
|
13
13
|
module Magento2
|
14
14
|
module Helpers
|
15
15
|
def magento_version
|
16
|
-
return Gem::Version::new((capture
|
16
|
+
return Gem::Version::new((capture :php, "-f #{release_path}/bin/magento -- -V").split(' ').pop)
|
17
17
|
end
|
18
18
|
|
19
19
|
def disabled_modules
|
@@ -47,3 +47,11 @@ set :magento_deploy_themes, fetch(:magento_deploy_themes, [])
|
|
47
47
|
# deploy targetting defaults
|
48
48
|
set :magento_deploy_setup_role, fetch(:magento_deploy_setup_role, :all)
|
49
49
|
set :magento_deploy_cache_shared, fetch(:magento_deploy_cache_shared, true)
|
50
|
+
|
51
|
+
# pending deploy check defaults
|
52
|
+
set :magento_deploy_pending_role, fetch(:magento_deploy_pending_role, :all)
|
53
|
+
set :magento_deploy_pending_warn, fetch(:magento_deploy_pending_warn, true)
|
54
|
+
set :magento_deploy_pending_format, fetch(
|
55
|
+
:magento_deploy_pending_format,
|
56
|
+
'--pretty="format:%C(yellow)%h %Cblue%>(12)%ad %Cgreen%<(7)%aN%Cred%d %Creset%s"'
|
57
|
+
)
|
@@ -8,46 +8,42 @@
|
|
8
8
|
##
|
9
9
|
|
10
10
|
require 'capistrano/deploy'
|
11
|
-
require 'capistrano/
|
11
|
+
require 'capistrano/magento2'
|
12
12
|
|
13
13
|
module Capistrano
|
14
|
-
module
|
15
|
-
module
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
14
|
+
module Magento2
|
15
|
+
module Pending
|
16
|
+
def ensure_revision inform_user = false
|
17
|
+
if test "[ -f #{current_path}/REVISION ]"
|
18
|
+
yield
|
19
|
+
else
|
20
|
+
warn "\e[0;31mSkipping pending changes check on #{host} (no REVISION file found)\e[0m" if inform_user
|
21
|
+
return false
|
22
|
+
end
|
23
|
+
return true
|
24
|
+
end
|
25
|
+
|
26
|
+
def from_rev
|
27
|
+
within current_path do
|
28
|
+
current_revision = capture(:cat, "REVISION")
|
29
|
+
|
27
30
|
run_locally do
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
:log,
|
41
|
-
"#{from}..#{to}",
|
42
|
-
'--pretty="format:%C(yellow)%h %Cblue%>(12)%ad %Cgreen%<(7)%aN%Cred%d %Creset%s"'
|
43
|
-
)
|
44
|
-
|
45
|
-
if returnOutput
|
46
|
-
return output
|
47
|
-
else
|
48
|
-
puts output
|
49
|
-
end
|
31
|
+
return capture(:git, "name-rev --always --name-only #{current_revision}") # find symbolic name for ref
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def to_rev
|
37
|
+
run_locally do
|
38
|
+
to = fetch(:branch)
|
39
|
+
|
40
|
+
# get target branch upstream if there is one
|
41
|
+
if test(:git, "rev-parse --abbrev-ref --symbolic-full-name #{to}@{u}")
|
42
|
+
to = capture(:git, "rev-parse --abbrev-ref --symbolic-full-name #{to}@{u}")
|
50
43
|
end
|
44
|
+
|
45
|
+
# find symbolic name for revision
|
46
|
+
to = capture(:git, "name-rev --always --name-only #{to}")
|
51
47
|
end
|
52
48
|
end
|
53
49
|
end
|
@@ -7,33 +7,73 @@
|
|
7
7
|
# http://davidalger.com/contact/
|
8
8
|
##
|
9
9
|
|
10
|
-
|
10
|
+
include Capistrano::Magento2::Pending
|
11
|
+
|
12
|
+
before :deploy, 'deploy:pending:warn'
|
11
13
|
|
12
|
-
before :deploy, 'deploy:pending:check_changes'
|
13
14
|
namespace :deploy do
|
15
|
+
desc "Displays a summary of commits pending deployment"
|
16
|
+
task :pending => 'deploy:pending:log'
|
14
17
|
|
15
|
-
# Check for pending changes on the primary node and then notify user of any incoming
|
16
|
-
# changes and/or warn that there is nothing to deploy
|
17
18
|
namespace :pending do
|
18
|
-
task :
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
19
|
+
task :warn => :log do
|
20
|
+
if fetch(:magento_deploy_pending_warn)
|
21
|
+
need_warning = true
|
22
|
+
|
23
|
+
on roles fetch(:magento_deploy_pending_role) do |host|
|
24
|
+
has_revision = ensure_revision do
|
25
|
+
# if any host has a change in revision, do not warn user
|
26
|
+
need_warning = false if from_rev != to_rev
|
27
|
+
end
|
28
|
+
|
29
|
+
# if a host does not have a revision, do not warn user
|
30
|
+
need_warning = false if not has_revision
|
31
|
+
end
|
32
|
+
|
33
|
+
# if there is nothing to deploy on any host, prompt user for confirmation
|
34
|
+
if need_warning
|
35
|
+
print " Are you sure you want to continue? [y/n] \e[0m"
|
36
|
+
|
37
|
+
proceed = STDIN.gets[0..0] rescue nil
|
38
|
+
exit unless proceed == 'y' || proceed == 'Y'
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
task :log do
|
44
|
+
on roles fetch(:magento_deploy_pending_role) do |host|
|
45
|
+
ensure_revision true do
|
46
|
+
# update local repository to ensure accuracy of report
|
47
|
+
run_locally do
|
48
|
+
execute :git, :fetch, :origin
|
49
|
+
end
|
50
|
+
|
51
|
+
# fetch current revision and revision to be deployed
|
52
|
+
from = from_rev
|
53
|
+
to = to_rev
|
54
|
+
|
55
|
+
# if there is nothing to deploy on this host, inform the user
|
56
|
+
if from == to
|
57
|
+
info "\e[0;31mNo changes to deploy on #{host} (from and to are the same: #{from} -> #{to})\e[0m"
|
33
58
|
else
|
34
|
-
|
35
|
-
|
36
|
-
|
59
|
+
run_locally do
|
60
|
+
header = "\e[0;90mChanges pending deployment on #{host} (#{from} -> #{to}):\e[0m\n"
|
61
|
+
|
62
|
+
# capture log of commits between current revision and revision for deploy
|
63
|
+
output = capture :git, :log, "#{from}..#{to}", fetch(:magento_deploy_pending_format)
|
64
|
+
|
65
|
+
# if we get no results, flip refs to look at reverse log in case of rollback deployments
|
66
|
+
if output.to_s.strip.empty?
|
67
|
+
output = capture :git, :log, "#{to}..#{from}", fetch(:magento_deploy_pending_format)
|
68
|
+
if not output.to_s.strip.empty?
|
69
|
+
header += "\e[0;31mWarning: It appears you may be going backwards in time on #{host} with this deployment!\e[0m\n"
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
# write pending changes log
|
74
|
+
(header + output).each_line do |line|
|
75
|
+
info line
|
76
|
+
end
|
37
77
|
end
|
38
78
|
end
|
39
79
|
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.6.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: 2017-02-
|
11
|
+
date: 2017-02-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: capistrano
|
@@ -24,34 +24,6 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '3.1'
|
27
|
-
- !ruby/object:Gem::Dependency
|
28
|
-
name: terminal-notifier
|
29
|
-
requirement: !ruby/object:Gem::Requirement
|
30
|
-
requirements:
|
31
|
-
- - "~>"
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
version: '1.6'
|
34
|
-
type: :runtime
|
35
|
-
prerelease: false
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
-
requirements:
|
38
|
-
- - "~>"
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: '1.6'
|
41
|
-
- !ruby/object:Gem::Dependency
|
42
|
-
name: capistrano-pending
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
44
|
-
requirements:
|
45
|
-
- - "~>"
|
46
|
-
- !ruby/object:Gem::Version
|
47
|
-
version: '0.1'
|
48
|
-
type: :runtime
|
49
|
-
prerelease: false
|
50
|
-
version_requirements: !ruby/object:Gem::Requirement
|
51
|
-
requirements:
|
52
|
-
- - "~>"
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
version: '0.1'
|
55
27
|
- !ruby/object:Gem::Dependency
|
56
28
|
name: bundler
|
57
29
|
requirement: !ruby/object:Gem::Requirement
|