capistrano-magento2 0.1.0 → 0.1.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 42102b43347b2087e0383a7aa039639edc4bac3a
4
- data.tar.gz: 17044e8f48813b2abf403528ea989d50a6dcb94e
3
+ metadata.gz: b2b0a1e41429c327605f46c5394844088388a3c0
4
+ data.tar.gz: 8cd6ab0068b94dc74ccd32a8286206088c61b35b
5
5
  SHA512:
6
- metadata.gz: c08fce018ef60b42f9932268855b9152d6edff2c0f539c69b0c6564daa814e645defafca1c742b87abef45e357bc8390abd592c3bc11bec03e35f93e41f027f4
7
- data.tar.gz: 1a11d0296476492af459c95c41fe98fe9a80f4ea63bcf00eee559c8ea117bfb8aaa0f707df6ceac60a8b32d5a09423e719d3dc3dc83d512f776e35ba04b44a84
6
+ metadata.gz: be3f2be47149eb0a34353c82cbe3526907c918f4d94baea712d7a08be2c81cbc7679e5718e17ca0562cd505f7042fd2418ae813f13754b9f195c6ef1578b4cb2
7
+ data.tar.gz: ba9baf7b4ea8f6cbd90d921341aa22344302a1deb35c41c35ea6b884d831b53543302e34fbd68f2e14d30c51ca84a9423b6eaffa06a6a7c9c8f2693b45280937
data/README.md CHANGED
@@ -20,11 +20,26 @@ Or install it yourself as:
20
20
 
21
21
  ## Usage
22
22
 
23
- TODO: Write usage instructions here
23
+ Install Capistrano in your Magento project:
24
+
25
+ $ cd <project_root>
26
+ $ mkdir -p tools/cap
27
+ $ cd ./tools/cap
28
+ $ cap install
29
+
30
+ Update your project `Capfile` to look like the following:
31
+
32
+ ```ruby
33
+ # Load DSL and set up stages
34
+ require 'capistrano/setup'
35
+
36
+ # Load Magento deployment tasks
37
+ require 'capistrano/magento'
38
+ ```
24
39
 
25
40
  ## Development
26
41
 
27
- After checking out the repo, run `bundle install` to install dependencies. Then, run `rake spec` to run the tests.
42
+ After checking out the repo, run `bundle install` to install dependencies.
28
43
 
29
44
  To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `capistrano/magento2/version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
30
45
 
data/Rakefile CHANGED
@@ -8,8 +8,3 @@
8
8
  ##
9
9
 
10
10
  require 'bundler/gem_tasks'
11
- require 'rspec/core/rake_task'
12
-
13
- RSpec::Core::RakeTask.new(:spec)
14
-
15
- task :default => :spec
@@ -9,11 +9,11 @@
9
9
 
10
10
  lib = File.expand_path('../lib', __FILE__)
11
11
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
12
- require 'capistrano/magento/version'
12
+ require 'capistrano/magento2/version'
13
13
 
14
14
  Gem::Specification.new do |spec|
15
15
  spec.name = 'capistrano-magento2'
16
- spec.version = Capistrano::Magento::VERSION
16
+ spec.version = Capistrano::Magento2::VERSION
17
17
  spec.authors = ['David Alger']
18
18
  spec.email = ['davidmalger@gmail.com']
19
19
 
@@ -28,8 +28,8 @@ Gem::Specification.new do |spec|
28
28
  spec.require_paths = ['lib']
29
29
 
30
30
  spec.add_dependency 'capistrano', '~> 3.1'
31
+ spec.add_dependency 'terminal-notifier', '~> 1.6'
31
32
 
32
33
  spec.add_development_dependency 'bundler', '~> 1.11'
33
34
  spec.add_development_dependency 'rake', '~> 10.0'
34
- spec.add_development_dependency 'rspec', '~> 3.0'
35
35
  end
@@ -0,0 +1,12 @@
1
+ ##
2
+ # Copyright © 2016 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/magento2/deploy'
11
+
12
+ load File.expand_path('../tasks/magento.rake', __FILE__)
@@ -0,0 +1,12 @@
1
+ ##
2
+ # Copyright © 2016 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
+ load File.expand_path('../../tasks/deploy.rake', __FILE__)
@@ -0,0 +1,12 @@
1
+ ##
2
+ # Copyright © 2016 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/magento2/deploy'
11
+
12
+ load File.expand_path('../../../tasks/deploy/notify.rake', __FILE__)
@@ -8,7 +8,7 @@
8
8
  ##
9
9
 
10
10
  module Capistrano
11
- module Magento
12
- VERSION = '0.1.0'
11
+ module Magento2
12
+ VERSION = '0.1.1'
13
13
  end
14
14
  end
@@ -0,0 +1,38 @@
1
+ ##
2
+ # Copyright © 2016 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
+ namespace :deploy do
11
+ task :updated do
12
+ on release_roles :all do
13
+ invoke 'magento:composer:install'
14
+ invoke 'magento:reset_permissions'
15
+ invoke 'magento:setup:static_content:deploy'
16
+ invoke 'magento:setup:di:compile_multi_tenant'
17
+ invoke 'magento:reset_permissions'
18
+ invoke 'magento:maintenance:enable'
19
+ invoke 'magento:setup:upgrade'
20
+ end
21
+ end
22
+
23
+ task :published do
24
+ on release_roles :all do
25
+ invoke 'magento:cache:flush'
26
+ invoke 'magento:cache:varnish:ban' # TODO: this should not be needed after magento/magento2#3339 is released
27
+ invoke 'magento:maintenance:disable'
28
+ end
29
+ end
30
+
31
+ task :reverted do
32
+ on release_roles :all do
33
+ invoke 'magento:maintenance:disable'
34
+ invoke 'magento:cache:flush'
35
+ invoke 'magento:cache:varnish:ban'
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,47 @@
1
+ ##
2
+ # Copyright © 2016 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 'terminal-notifier'
11
+
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
+ after 'deploy:failed', :notify_user_failure do
29
+ run_locally do
30
+ set :message, "ERROR in deploying " + fetch(:application).to_s + " to " + fetch(:stage).to_s
31
+ TerminalNotifier.notify(fetch(:message), :title => 'Capistrano')
32
+ end
33
+ end
34
+
35
+ after :finished, :notify_user do
36
+ run_locally do
37
+ set :message, "Finished deploying " + fetch(:application).to_s + " to " + fetch(:stage).to_s
38
+ TerminalNotifier.notify(fetch(:message), :title => 'Capistrano')
39
+ end
40
+ end
41
+ end
42
+
43
+ namespace :load do
44
+ task :defaults do
45
+ set :deploy_warn_stages, fetch(:deploy_warn_stages, []).push('prod', 'production')
46
+ end
47
+ end
@@ -0,0 +1,216 @@
1
+ ##
2
+ # Copyright © 2016 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
+ namespace :magento do
11
+
12
+ namespace :cache do
13
+ desc 'Flush Magento cache storage'
14
+ task :flush do
15
+ on release_roles :all do
16
+ within release_path do
17
+ execute :php, '-f bin/magento -- cache:flush'
18
+ end
19
+ end
20
+ end
21
+
22
+ desc 'Clean Magento cache by types'
23
+ task :clean do
24
+ on release_roles :all do
25
+ within release_path do
26
+ execute :php, '-f bin/magento -- cache:clean'
27
+ end
28
+ end
29
+ end
30
+
31
+ desc 'Enable Magento cache'
32
+ task :enable do
33
+ on release_roles :all do
34
+ within release_path do
35
+ execute :php, '-f bin/magento -- cache:enable'
36
+ end
37
+ end
38
+ end
39
+
40
+ desc 'Disable Magento cache'
41
+ task :disable do
42
+ on release_roles :all do
43
+ within release_path do
44
+ execute :php, '-f bin/magento -- cache:disable'
45
+ end
46
+ end
47
+ end
48
+
49
+ desc 'Check Magento cache enabled status'
50
+ task :status do
51
+ on release_roles :all do
52
+ within release_path do
53
+ execute :php, '-f bin/magento -- cache:status'
54
+ end
55
+ end
56
+ end
57
+
58
+ namespace :varnish do
59
+ desc 'Add ban to Varnish for url(s)'
60
+ task :ban do
61
+ on release_roles :all do
62
+ next unless any? :ban_pools
63
+ within release_path do
64
+ for pool in fetch(:ban_pools) do
65
+ response = capture :curl, %W{-svk -H 'X-Pool: #{pool}' -X PURGE 127.0.0.1:6081}
66
+ if response.include? '<title>200 Purged</title>'
67
+ puts " 200 Purged: #{pool}"
68
+ elsif
69
+ puts "\e[0;31m Warning: Failed to ban '#{pool}' pool!\n#{response}\n\e[0m\n"
70
+ end
71
+ end
72
+ end
73
+ end
74
+ end
75
+ end
76
+ end
77
+
78
+ namespace :composer do
79
+ desc 'Run composer install'
80
+ task :install do
81
+ on release_roles :all do
82
+ within release_path do
83
+ execute :composer, 'install --no-interaction 2>&1'
84
+
85
+ # Dir should be here if properly setup, but check for it anyways just in case
86
+ if test "[ -d #{release_path}/update ]"
87
+ execute :composer, 'install -d ./update 2>&1'
88
+ else
89
+ puts "\e[0;31m Warning: ./update dir does not exist in repository!\n\e[0m\n"
90
+ end
91
+ end
92
+ end
93
+ end
94
+ end
95
+
96
+ namespace :setup do
97
+ desc 'Run the Magento upgrade process'
98
+ task :upgrade do
99
+ on release_roles :all do
100
+ within release_path do
101
+ execute :php, '-f bin/magento -- setup:upgrade'
102
+ end
103
+ end
104
+ end
105
+
106
+ # TODO: Change this once the bug with single tenant compiler is fixed http://devdocs.magento.com/guides/v2.0/config-guide/cli/config-cli-subcommands-compiler.html#config-cli-subcommands-single
107
+ namespace :di do
108
+ task :compile_multi_tenant do
109
+ on release_roles :all do
110
+ within release_path do
111
+ execute :php, '-f bin/magento -- setup:di:compile-multi-tenant -q'
112
+ execute :rm, '-f var/di/relations.ser' # TODO: Workaround for broken DI compilation in 2.0.4 (GH #4070)
113
+ end
114
+ end
115
+ end
116
+ end
117
+
118
+ namespace :static_content do
119
+ task :deploy do
120
+ on release_roles :all do
121
+ within release_path do
122
+
123
+ # Due to a bug (https://github.com/magento/magento2/issues/3060) in bin/magento, errors in the
124
+ # compilation will not result in a non-zero exit code, so Capistrano is not aware an error has occurred.
125
+ # As a result, we must capture the output and manually search for an error string to determine whether
126
+ # compilation is successful. Once the aforementioned bug is fixed, pass a "-q" flag to
127
+ # 'setup:static-content:deploy' to silence verbose output, as right now the log is being filled with
128
+ # thousands of extraneous lines, per this issue: https://github.com/magento/magento2/issues/3692
129
+ output = capture :php, '-f bin/magento -- setup:static-content:deploy', verbosity: Logger::INFO
130
+
131
+ # TODO: add method to output heading messages such as this
132
+ if output.to_s.include? 'Compilation from source'
133
+ puts "\n\e[0;31m" \
134
+ " ######################################################################\n" \
135
+ " # #\n" \
136
+ " # Failed to compile static assets #\n" \
137
+ " # #\n" \
138
+ " ######################################################################\n\n"
139
+ puts output + "\e[0m\n"
140
+ raise Exception, 'Failed to compile static assets'
141
+ end
142
+ end
143
+ end
144
+ end
145
+ end
146
+ end
147
+
148
+ namespace :maintenance do
149
+ desc 'Enable maintenance mode'
150
+ task :enable do
151
+ on release_roles :all do
152
+ for path in [current_path, release_path].uniq
153
+ within path do
154
+ execute :php, '-f bin/magento -- maintenance:enable'
155
+ end
156
+ end
157
+ end
158
+ end
159
+
160
+ task :disable do
161
+ on release_roles :all do
162
+ for path in [current_path, release_path].uniq
163
+ within path do
164
+ execute :php, '-f bin/magento -- maintenance:disable'
165
+ end
166
+ end
167
+ end
168
+ end
169
+ end
170
+
171
+ desc 'Reset permissions'
172
+ task :reset_permissions do
173
+ on release_roles :all do
174
+ within release_path do
175
+ execute :find, release_path, '-type d -exec chmod 770 {} +'
176
+ execute :find, release_path, '-type f -exec chmod 660 {} +'
177
+ execute :chmod, '-R g+s', release_path
178
+ execute :chmod, '+x ./bin/magento'
179
+ end
180
+ end
181
+ end
182
+
183
+ namespace :indexer do
184
+ desc 'Reindex data by all indexers'
185
+ task :reindex do
186
+ on release_roles :all do
187
+ within release_path do
188
+ execute :php, '-f bin/magento -- indexer:reindex'
189
+ end
190
+ end
191
+ end
192
+ end
193
+
194
+ end
195
+
196
+ namespace :load do
197
+ task :defaults do
198
+ set :linked_files, fetch(:linked_files, []).push(
199
+ 'app/etc/env.php',
200
+ 'var/.setup_cronjob_status',
201
+ 'var/.update_cronjob_status',
202
+ 'sitemap.xml'
203
+ )
204
+
205
+ set :linked_dirs, fetch(:linked_dirs, []).push(
206
+ 'pub/media',
207
+ 'var/backups',
208
+ 'var/composer_home',
209
+ 'var/importexport',
210
+ 'var/import_history',
211
+ 'var/log',
212
+ 'var/session',
213
+ 'var/tmp'
214
+ )
215
+ end
216
+ 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.1.0
4
+ version: 0.1.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: 2016-03-31 00:00:00.000000000 Z
11
+ date: 2016-04-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: capistrano
@@ -25,47 +25,47 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: '3.1'
27
27
  - !ruby/object:Gem::Dependency
28
- name: bundler
28
+ name: terminal-notifier
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '1.11'
34
- type: :development
33
+ version: '1.6'
34
+ type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '1.11'
40
+ version: '1.6'
41
41
  - !ruby/object:Gem::Dependency
42
- name: rake
42
+ name: bundler
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '10.0'
47
+ version: '1.11'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '10.0'
54
+ version: '1.11'
55
55
  - !ruby/object:Gem::Dependency
56
- name: rspec
56
+ name: rake
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '3.0'
61
+ version: '10.0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '3.0'
68
+ version: '10.0'
69
69
  description: A Capistrano extension for Magento 2 deployments. Takes care of specific
70
70
  Magento 2 requirements and adds tasks specific to the Magento 2 application.
71
71
  email:
@@ -81,7 +81,13 @@ files:
81
81
  - Rakefile
82
82
  - capistrano-magento2.gemspec
83
83
  - lib/capistrano-magento2.rb
84
- - lib/capistrano/magento/version.rb
84
+ - lib/capistrano/magento2.rb
85
+ - lib/capistrano/magento2/deploy.rb
86
+ - lib/capistrano/magento2/deploy/notify.rb
87
+ - lib/capistrano/magento2/version.rb
88
+ - lib/capistrano/tasks/deploy.rake
89
+ - lib/capistrano/tasks/deploy/notify.rake
90
+ - lib/capistrano/tasks/magento.rake
85
91
  homepage: https://github.com/davidalger/capistrano-magento2
86
92
  licenses:
87
93
  - OSL-3.0