capistrano-magento2 0.2.0 → 0.2.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 +5 -0
- data/README.md +125 -47
- data/lib/capistrano/magento2/version.rb +1 -1
- data/lib/capistrano/tasks/deploy.rake +6 -4
- data/lib/capistrano/tasks/magento.rake +1 -0
- data/lib/capistrano/tasks/notifier.rake +1 -0
- 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: 56be092a97722587efac46aebf7fe0c433f4681b
|
4
|
+
data.tar.gz: f486eee26dd968fe28b18ea5b64b9e064096f1c6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a6b0af5bb4454fe107d68bbf910d5bce2ca8af0b346f00a273bd615a331cefdeccc34624da09c11f3f61c4bed958300b7d825de2291df944566ffba4c7741a7f
|
7
|
+
data.tar.gz: 4e14ee33a8b6f3569ba0eaa7bd24a3af5c6dcbe7d3818d7890c0ce9b7a80aadcaf0dd30763aa77425e9365fba6c6cdc0c1dd64f980bd483e61f8c0ac7df75f5b
|
data/CHANGELOG.md
CHANGED
data/README.md
CHANGED
@@ -6,76 +6,158 @@ A Capistrano extension for Magento 2 deployments. Takes care of specific Magento
|
|
6
6
|
|
7
7
|
## Installation
|
8
8
|
|
9
|
-
|
9
|
+
### Standalone Installation
|
10
10
|
|
11
|
-
|
12
|
-
gem 'capistrano-magento2'
|
13
|
-
```
|
11
|
+
$ gem install capistrano-magento2
|
14
12
|
|
15
|
-
|
13
|
+
### Using Bundler
|
16
14
|
|
17
|
-
|
15
|
+
1. Add the following to your project's `Gemfile`:
|
18
16
|
|
19
|
-
|
17
|
+
```ruby
|
18
|
+
source 'https://rubygems.org'
|
19
|
+
gem 'capistrano-magento2'
|
20
|
+
```
|
20
21
|
|
21
|
-
|
22
|
+
2. Execute the following:
|
23
|
+
|
24
|
+
$ bundle install
|
22
25
|
|
23
26
|
## Usage
|
24
27
|
|
25
|
-
Install Capistrano in your Magento project:
|
28
|
+
1. Install Capistrano in your Magento project:
|
29
|
+
|
30
|
+
```shell
|
31
|
+
$ cd <project_root>
|
32
|
+
$ mkdir -p tools/cap
|
33
|
+
$ cd ./tools/cap
|
34
|
+
$ cap install
|
35
|
+
```
|
36
|
+
_Note: By default, Capistrano creates "staging" and "production" stages. If you want to define custom staging areas, you can do so using the "STAGES" option (e.g. `cap install STAGES=stage,prod`). Built-in notifications ([see below](#terminal-notifier-on-os-x)) confirm deploy action on both "production" and "prod" area names by default._
|
37
|
+
|
38
|
+
2. Update your project's `Capfile` to look like the following:
|
39
|
+
|
40
|
+
```ruby
|
41
|
+
# Load DSL and set up stages
|
42
|
+
require 'capistrano/setup'
|
43
|
+
|
44
|
+
# Load Magento deployment tasks
|
45
|
+
require 'capistrano/magento2/deploy'
|
46
|
+
|
47
|
+
# Load custom tasks from `lib/capistrano/tasks` if you have any defined
|
48
|
+
Dir.glob('lib/capistrano/tasks/*.rake').each { |r| import r }
|
49
|
+
```
|
26
50
|
|
27
|
-
|
28
|
-
$ cd <project_root>
|
29
|
-
$ mkdir -p tools/cap
|
30
|
-
$ cd ./tools/cap
|
31
|
-
$ cap install
|
32
|
-
```
|
51
|
+
3. Configure Capistrano, per the [Capistrano Configuration](#capistrano-configuration) section below.
|
33
52
|
|
34
|
-
|
53
|
+
4. Configure your server(s), per the [Server Configuration](#server-configuration) section below.
|
35
54
|
|
36
|
-
|
37
|
-
|
38
|
-
|
55
|
+
5. Deploy Magento 2 to staging or production by running the following command in the `tools/cap` directory:
|
56
|
+
|
57
|
+
```shell
|
58
|
+
$ cap staging deploy
|
59
|
+
```
|
60
|
+
or
|
61
|
+
```shell
|
62
|
+
$ cap production deploy
|
63
|
+
```
|
64
|
+
|
65
|
+
## Default Configuration
|
39
66
|
|
40
|
-
|
41
|
-
require 'capistrano/magento2/deploy'
|
42
|
-
```
|
67
|
+
### Capistrano Configuration
|
43
68
|
|
44
|
-
|
69
|
+
Before you can use Capistrano to deploy, you must configure the `config/deploy.rb` and `config/deploy/*.rb` files. This section will cover the basic details for configuring these files. Refer to the [Capistrano documentation](http://capistranorb.com/documentation/getting-started/preparing-your-application/#configure-your-server-addresses-in-the-generated-files) and [README](https://github.com/capistrano/capistrano/blob/master/README.md) for more details.
|
70
|
+
|
71
|
+
1. Configuring `config/deploy.rb`
|
72
|
+
|
73
|
+
Update the `:application` and `:repo_url` values in `config/deploy.rb`:
|
74
|
+
|
75
|
+
```ruby
|
76
|
+
# Something unique such as the website or company name
|
77
|
+
set :application, 'example'
|
78
|
+
# The repository that hosts the Magento 2 application (Magento should live in the root of the repo)
|
79
|
+
set :repo_url, 'git@github.com:acme/example-com.git'
|
80
|
+
```
|
81
|
+
|
82
|
+
2. Configuring `config/deploy/*.rb` files
|
83
|
+
|
84
|
+
Capistrano allows you to use server-based or role-based syntax. You can read through the comments in the file to learn more about each option. If you have a single application server then the server-based syntax is the simplest configuration option.
|
85
|
+
|
86
|
+
* Single application server
|
87
|
+
|
88
|
+
If your stage and production environments consist of a single application server, your configuration files should look something like this:
|
89
|
+
|
90
|
+
`config/deploy/production.rb`
|
91
|
+
```ruby
|
92
|
+
server 'www.example.com', user: 'www-data', roles: %w{app db web}
|
93
|
+
|
94
|
+
set :deploy_to, '/var/www/html'
|
95
|
+
set :branch, proc { `git rev-parse --abbrev-ref master`.chomp }
|
96
|
+
```
|
97
|
+
|
98
|
+
`config/deploy/staging.rb`
|
99
|
+
```ruby
|
100
|
+
server 'stage.example.com', user: 'www-data', roles: %w{app db web}
|
101
|
+
|
102
|
+
set :deploy_to, '/var/www/html'
|
103
|
+
set :branch, proc { `git rev-parse --abbrev-ref develop`.chomp }
|
104
|
+
```
|
105
|
+
|
106
|
+
* Multiple application servers
|
107
|
+
|
108
|
+
Refer to the "role-based syntax" comments in the `config/deploy/*.rb` files or to the [Capistrano documentation](http://capistranorb.com/documentation/getting-started/preparing-your-application/#configure-your-server-addresses-in-the-generated-files) for details on how to configure multiple application servers.
|
45
109
|
|
46
110
|
### Capistrano Built-Ins
|
47
111
|
|
48
112
|
For the sake of simplicity in new project setups `:linked_dirs` and `:linked_files` are pre-configured per the following.
|
49
113
|
|
50
114
|
```ruby
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
115
|
+
set :linked_files, [
|
116
|
+
'app/etc/env.php',
|
117
|
+
'var/.setup_cronjob_status',
|
118
|
+
'var/.update_cronjob_status',
|
119
|
+
'sitemap.xml'
|
120
|
+
]
|
121
|
+
|
122
|
+
set :linked_dirs, [
|
123
|
+
'pub/media',
|
124
|
+
'var/backups',
|
125
|
+
'var/composer_home',
|
126
|
+
'var/importexport',
|
127
|
+
'var/import_history',
|
128
|
+
'var/log',
|
129
|
+
'var/session',
|
130
|
+
'var/tmp'
|
131
|
+
]
|
68
132
|
```
|
69
133
|
|
134
|
+
If you would like to customize the linked files or directories for your project, you can copy either one or both of the above arrays into the `config/deploy.rb` or `config/deploy/*.rb` files and tweak them to fit your project's needs.
|
135
|
+
|
70
136
|
### Magento 2 Deploy Routine
|
71
137
|
|
72
|
-
A pre-built deploy routine is available out-of-the-box. This can be overriden on a per-project basis by including only the Magento 2 specific tasks and defining your own `deploy.rake` file under `lib/capistrano/tasks` in your projects
|
138
|
+
A pre-built deploy routine is available out-of-the-box. This can be overriden on a per-project basis by including only the Magento 2 specific tasks and defining your own `deploy.rake` file under `lib/capistrano/tasks` in your projects Capistrano install location.
|
73
139
|
|
74
140
|
To see what process the built-in routine runs, take a look at the included rake file here: https://github.com/davidalger/capistrano-magento2/blob/master/lib/capistrano/tasks/deploy.rake
|
75
141
|
|
142
|
+
## Server Configuration
|
143
|
+
|
144
|
+
### Web Server Root Path
|
145
|
+
|
146
|
+
Before deploying with Capistrano, you must update each of your web servers to point to a `current` directory inside of the `:deploy_to` directory. For example: `/var/www/html/current` Refer to the [Capistrano Structure](http://capistranorb.com/documentation/getting-started/structure/) to learn more about Capistrano's folder structure.
|
147
|
+
|
148
|
+
### Create Linked Files
|
149
|
+
|
150
|
+
Capistrano assumes that the `:linked_files` files will exist, so before you deploy for the first time, you need to create those files. On each of your web servers, create them using a command like this:
|
151
|
+
|
152
|
+
```shell
|
153
|
+
$ cd /var/www/html
|
154
|
+
$ mkdir -p shared/var shared/app/etc
|
155
|
+
$ touch shared/app/etc/env.php shared/var/.setup_cronjob_status shared/var/.update_cronjob_status shared/sitemap.xml
|
156
|
+
```
|
157
|
+
|
76
158
|
## Magento Specific Tasks
|
77
159
|
|
78
|
-
All Magento 2 tasks used by the built-in `deploy.rake` file as well as some additional commands are
|
160
|
+
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.
|
79
161
|
|
80
162
|
| cap command | what it does |
|
81
163
|
| ------------------------------------- | -------------------------------------------------- |
|
@@ -100,10 +182,6 @@ All Magento 2 tasks used by the built-in `deploy.rake` file as well as some addi
|
|
100
182
|
| magento:setup:static-content:deploy | Deploys static view files |
|
101
183
|
| magento:setup:upgrade | Run the Magento upgrade process |
|
102
184
|
|
103
|
-
## Using Capistrano
|
104
|
-
|
105
|
-
For inrformation on how to use Capistrano and setup deployment take a look at the [Capistrano documentation](http://capistranorb.com) and [README](https://github.com/capistrano/capistrano/blob/master/README.md) file.
|
106
|
-
|
107
185
|
## Terminal Notifier on OS X
|
108
186
|
This gem specifies [terminal-notifier](https://rubygems.org/gems/terminal-notifier) as a dependency in order to support notifications on OS X via an optional include. To use the built-in notifications, add the following line to your `Capfile`:
|
109
187
|
|
@@ -113,7 +191,7 @@ require 'capistrano/magento2/notifier'
|
|
113
191
|
|
114
192
|
## Development
|
115
193
|
|
116
|
-
After checking out the repo, run `bundle install` to install dependencies. Make the
|
194
|
+
After checking out the repo, run `bundle install` to install dependencies. Make the necessary changes, then run `bundle exec rake install` to install a modified version of the gem on your local system.
|
117
195
|
|
118
196
|
To release a new version, update the version number in `capistrano/magento2/version.rb`, merge all changes to master, and then run `bundle exec rake release`. This will create a git tag for the version (the tag will apply to the current HEAD), push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
119
197
|
|
@@ -15,8 +15,10 @@ namespace :deploy do
|
|
15
15
|
invoke 'magento:setup:static-content:deploy'
|
16
16
|
invoke 'magento:setup:di:compile'
|
17
17
|
invoke 'magento:setup:permissions'
|
18
|
-
|
19
|
-
|
18
|
+
if test '-d #{current_path}'
|
19
|
+
within current_path do
|
20
|
+
execute :magento, 'maintenance:enable'
|
21
|
+
end
|
20
22
|
end
|
21
23
|
invoke 'magento:maintenance:enable'
|
22
24
|
invoke 'magento:setup:upgrade'
|
@@ -26,7 +28,7 @@ namespace :deploy do
|
|
26
28
|
task :published do
|
27
29
|
on release_roles :all do
|
28
30
|
invoke 'magento:cache:flush'
|
29
|
-
invoke 'magento:cache:varnish:ban' # TODO:
|
31
|
+
invoke 'magento:cache:varnish:ban' # TODO: This invocation should not be needed post magento/magento2#3339
|
30
32
|
invoke 'magento:maintenance:disable'
|
31
33
|
end
|
32
34
|
end
|
@@ -35,7 +37,7 @@ namespace :deploy do
|
|
35
37
|
on release_roles :all do
|
36
38
|
invoke 'magento:maintenance:disable'
|
37
39
|
invoke 'magento:cache:flush'
|
38
|
-
invoke 'magento:cache:varnish:ban'
|
40
|
+
invoke 'magento:cache:varnish:ban' # TODO: This invocation should not be needed post magento/magento2#3339
|
39
41
|
end
|
40
42
|
end
|
41
43
|
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.2.
|
4
|
+
version: 0.2.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-
|
11
|
+
date: 2016-05-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: capistrano
|