theme-juice 0.26.3 → 0.27.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -21,8 +21,8 @@ SETUP
21
21
 
22
22
  1. Create a deploy user on the stage server
23
23
 
24
- 2. Set up SSH keys for the new deploy user to SSH in without a pass-
25
- word
24
+ 2. Set up SSH keys for the new deploy user for password-less SSH
25
+ access
26
26
 
27
27
  3. Confirm the deploy user owns the deploy path
28
28
 
@@ -98,9 +98,8 @@ SECONDARY COMMANDS
98
98
 
99
99
  CONFIG FILE
100
100
  The YAML Juicefile(5) configuration may be used to store deploy-
101
- ment-related settings. Below you will find the various block sequences
102
- you may use to define your project's deployment settings. All of these
103
- will be passed to capistrano(1) to invoke a deployment.
101
+ ment-related settings. Below you will find the various options you can
102
+ use to define your project's deployment setup.
104
103
 
105
104
  deployment
106
105
  Deployment configuration
@@ -119,14 +118,15 @@ CONFIG FILE
119
118
  rsync_<setting> during the deployment initialization
120
119
 
121
120
  deployment.slack
122
- Optional settings passed to capistrano-slackify(1); mapped as
121
+ Optional settings passed to capistrano-slackify(1); mapped as
123
122
  slack_<setting> during the deployment initialization
124
123
 
125
124
  deployment.stages
126
125
  Deployment stages
127
126
 
128
127
  deployment.stages.<stage>.server
129
- Domain or IP address of the server
128
+ Domain or IP address of the server; can include an optional port
129
+ number in the form of <ip_or_domain>:<port>
130
130
 
131
131
  deployment.stages.<stage>.path
132
132
  Root path to the deployment directory
@@ -182,7 +182,134 @@ CONFIG FILE
182
182
  deployment.stages.vagrant.roles
183
183
  Sequence of roles for the development environment
184
184
 
185
-
186
-
187
-
188
- January 2016 TJ-DEPLOY(1)
185
+ Below is an example deployment configuration:
186
+
187
+
188
+
189
+ # Project configuration
190
+ project:
191
+ name: example
192
+
193
+ # Deployment configuration
194
+ deployment:
195
+
196
+ # Repository settings
197
+ repository:
198
+ repo_url: git@github.com:example/example-app.git
199
+ branch: :master
200
+ scm: :rsync
201
+
202
+ # Other settings that will be passed directly to Capistrano
203
+ # @see http://capistranorb.com/
204
+ settings:
205
+ keep_releases: 5
206
+ format: :pretty
207
+ log_level: :verbose
208
+ use_sudo: false
209
+ ssh_options:
210
+ keys: ~/.ssh/id_rsa
211
+ forward_agent: true
212
+ paranoid: true
213
+ # Add additional directories to $PATH. This is useful if you're
214
+ # on a shared hosting environment (i.e. GoDaddy) and you need
215
+ # to use an executable such as wp-cli for database migration.
216
+ default_env:
217
+ path: /opt/wp-cli/bin:$PATH
218
+
219
+ # Capistrano rsync options and install procedure
220
+ # @see https://github.com/Bladrak/capistrano-rsync
221
+ rsync:
222
+ stage: tmp/deploy
223
+ cache: shared/deploy
224
+ scm: :git
225
+ depth: 1
226
+ # Options to pass to the rsync command
227
+ # @see http://linux.die.net/man/1/rsync
228
+ options:
229
+ - --recursive
230
+ - --delete
231
+ - --delete-excluded
232
+ - --include="vendor/**/*" # Overrides any excluded patterns
233
+ - --exclude="node_modules/"
234
+ - --exclude=".env.sample"
235
+ - --exclude=".git*"
236
+ - --exclude="Juicefile*"
237
+ - --exclude="composer.*"
238
+ - --exclude="package.json"
239
+ - --exclude="README.*"
240
+ # Run application install scripts
241
+ install:
242
+ - composer install --no-dev
243
+ - bundle install
244
+ - npm install
245
+ - bower install
246
+ - grunt build
247
+ # Run scripts before the deployment starts
248
+ pre_scripts:
249
+ - touch .maintenance
250
+ # Run scripts before the deployment finishes
251
+ post_scripts:
252
+ - rm .maintenance
253
+ - sudo service apache2 restart
254
+
255
+ # Slack integration
256
+ # @see https://github.com/onthebeach/capistrano-slackify
257
+ slack:
258
+ url: https://hooks.slack.com/services/your-token
259
+ username: Deploybot
260
+ channel: "#devops"
261
+ emoji: ":rocket:"
262
+
263
+ # Deployment stages
264
+ stages:
265
+
266
+ production:
267
+ server: 192.168.13.37:1234
268
+ path: /var/www/production
269
+ user: deploy
270
+ url: example.com
271
+ uploads: app/uploads
272
+ tmp: tmp
273
+ shared:
274
+ - .env.production
275
+ ignore:
276
+ - robots.txt
277
+ roles:
278
+ - :web
279
+ - :app
280
+ - :db
281
+
282
+ staging:
283
+ server: 192.168.13.37
284
+ path: /var/www/staging
285
+ user: deploy
286
+ url: staging.example.com
287
+ uploads: app/uploads
288
+ tmp: tmp
289
+ shared:
290
+ - .env.staging
291
+ roles:
292
+ - :web
293
+ - :app
294
+ - :db
295
+
296
+ # This is your development environment used to push/pull database files,
297
+ # uploads, the .env file, etc.
298
+ vagrant:
299
+ server: example.dev
300
+ path: /srv/www/tj-example
301
+ user: vagrant
302
+ pass: vagrant
303
+ url: example.dev
304
+ uploads: app/uploads
305
+ backup: backup
306
+ tmp: tmp
307
+ roles:
308
+ - :dev
309
+
310
+
311
+
312
+
313
+
314
+
315
+ August 2016 TJ-DEPLOY(1)
@@ -15,6 +15,6 @@ Initializes the virtual machine\.
15
15
  .SH "GLOBAL OPTIONS"
16
16
  .
17
17
  .TP
18
- \fB\-\-provision\fR
18
+ \fB\-\-vm\-provision\fR, \fB\-\-provision\-vm\fR, \fB\-\-provision\fR
19
19
  Run provisioners after initializing the virtual machine
20
20
 
@@ -12,7 +12,7 @@ DESCRIPTION
12
12
  Initializes the virtual machine.
13
13
 
14
14
  GLOBAL OPTIONS
15
- --provision
15
+ --vm-provision, --provision-vm, --provision
16
16
  Run provisioners after initializing the virtual machine
17
17
 
18
18
 
@@ -73,8 +73,4 @@ Modify \fBwp\-config\.php\fR file contents with project configuration (this flag
73
73
  .TP
74
74
  \fB\-\-no\-ssl\fR, \fB\-\-no\-https\fR
75
75
  Project does not need SSL support
76
- .
77
- .TP
78
- \fB\-\-provision\fR
79
- Run provisioners after setting up project
80
76
 
@@ -60,9 +60,6 @@ GLOBAL OPTIONS
60
60
  --no-ssl, --no-https
61
61
  Project does not need SSL support
62
62
 
63
- --provision
64
- Run provisioners after setting up project
65
-
66
63
 
67
64
 
68
65
 
@@ -112,86 +112,170 @@ SECONDARY COMMANDS
112
112
  proxied to your Vagrant installation so that they can be run
113
113
  from any directory.
114
114
 
115
+ CONFIG FILE
116
+ A YAML configuration file called a Juicefile(5) can be used to store
117
+ commonly used build scripts, similar to npm(1) scripts. Each command
118
+ can be mapped to any build script you like, allowing you to define a
119
+ set of commands that can be used across all of your projects. If you
120
+ plan to deploy using tj, this file will also house your deploy(1) con-
121
+ figuration.
122
+
123
+ For reference, below is an example config:
124
+
125
+
126
+
127
+ # Project configuration
128
+ project:
129
+ name: example
130
+ url: example.dev
131
+
132
+ # Manage command aliases for the current project
133
+ commands:
134
+
135
+ # Run project install scripts
136
+ install:
137
+ - npm install
138
+ - grunt build
139
+
140
+ # Manage build tools
141
+ dev:
142
+ - grunt %args%
143
+
144
+ # Manage front-end dependencies
145
+ assets:
146
+ - npm %args%
147
+
148
+ # Manage back-end dependencies
149
+ vendor:
150
+ - composer %args%
151
+
152
+ # Create a backup of the current database with a nice timestamp
153
+ backup:
154
+ - mkdir -p backup
155
+ - wp @dev db export backup/$(date +'%Y-%m-%d-%H-%M-%S').sql
156
+
157
+ # Manage deployment settings for the current project
158
+ deployment:
159
+ # ...
160
+
161
+ stages:
162
+ # ...
163
+
164
+
165
+
115
166
  CONFIG COMMANDS
116
- These run the corresponding command from your project's config file.
117
- They accept any number of arguments, since the behavior and handling of
118
- input is defined within the config file itself. Below are the commands
119
- defined within the Theme Juice starter template.
167
+ The commands within the commands block can be run from the command line
168
+ via tj <command>. For example, we can run the dev command by running tj
169
+ dev, which will in turn run the command grunt.
120
170
 
121
- install=[arg[,arg]...]
122
- Run installation for project
171
+ If you noticed in the example above, there are a few commands that con-
172
+ tain %args%; each command list is run within a single execution via
173
+ joining: cmd1 && cmd2 [&& cmd3...], with all %args%/%argN% being
174
+ replaced with the corresponding argument index, when available.
123
175
 
124
- watch=[arg[,arg]...]
125
- Manage and run development build tools
176
+ Here's a few example commands using placeholders:
126
177
 
127
- assets=[arg[,arg]...]
128
- Manage front-end dependencies for project
129
178
 
130
- vendor=[arg[,arg]...]
131
- Manage back-end dependencies for project
132
179
 
133
- dist=[arg[,arg]...]
134
- Package project for distribution
180
+ example-command:
181
+ # Will contain all arguments joined by a space
182
+ - cmd1 %args%
183
+ # Will contain each argument mapped to its respective index
184
+ - cmd2 '%arg1% %arg2% %arg3%'
185
+ # Will only map argument 4, while ignoring 1-3
186
+ - cmd3 "%arg4%"
135
187
 
136
- wp=[arg[,arg]...]
137
- Manage project's wordpress(7) installation with wp-cli(1)
138
188
 
139
- backup=[arg[,arg]...]
140
- Backup project
141
189
 
142
- test=[arg[,arg]...]
143
- Manage and run project tests
190
+ To clarify a little bit more, we could run tj dev build, and since our
191
+ dev command contains %args%, that will in turn run the command grunt
192
+ build; if we run tj dev some:other task, that would be interpreted and
193
+ run as grunt some:other task.
144
194
 
145
- CONFIG FILE
146
- A YAML Juicefile(5) configuration can be used to store commonly-used
147
- build scripts (and deploy(1) info), similar to npm(1) scripts. Each
148
- command block sequence can be mapped to an individual project's build
149
- tool, allowing a streamlined set of commands to be used across multiple
150
- projects that utilize different tools. Below are descriptions for the
151
- default commands within the Theme Juice starter template's Juicefile.
195
+ You can specify an unlimited number of commands with an unlimited num-
196
+ ber of arguments within your Juicefile; however, you should be careful
197
+ with how this is used. Don't go including sudo rm -rf %arg1% in a com-
198
+ mand, while passing / as an argument. Keep it simple. These are meant
199
+ to make your life easier by helping you manage build tools, not to do
200
+ fancy scripting.
201
+
202
+ CONFIG TEMPLATE STRINGS
203
+ You may define ERB template strings within a project starter template's
204
+ Juicefile(5). These will be replaced upon running create(1).
205
+
206
+ For example,
207
+
208
+
209
+
210
+ # Project configuration
211
+ project:
212
+ name: <%= name %>
213
+ url: <%= url %>
214
+
215
+
216
+
217
+ will be replaced with,
218
+
219
+
220
+
221
+ # Project configuration
222
+ project:
223
+ name: example-project
224
+ url: example-project.dev
225
+
226
+
227
+
228
+ if those were the options chosen during a creation. The following vari-
229
+ ables are available for use:
230
+
231
+ name Project name
232
+
233
+ location
234
+ Project location
235
+
236
+ url Project URL
237
+
238
+ xip_url
239
+ Project xip.io URL
152
240
 
153
- commands
154
- Collection of various command block sequences
241
+ template
242
+ Project template repository URL
155
243
 
156
- commands.install
157
- Command sequence used to properly install and build project
244
+ repository
245
+ Initialized repository URL, if available
158
246
 
159
- commands.watch
160
- Command used to manage development build tools
247
+ db_host
248
+ Project database host
161
249
 
162
- commands.assets
163
- Command used to manage front-end dependencies
250
+ db_name
251
+ Project database name
164
252
 
165
- commands.vendor
166
- Command used to manage back-end dependencies
253
+ db_user
254
+ Project database user
167
255
 
168
- commands.wp
169
- Command used to manage WordPress installation
256
+ db_pass
257
+ Project database password
170
258
 
171
- commands.dist
172
- Commands used to package project for distribution
259
+ db_import
260
+ Path to imported database file
173
261
 
174
- commands.backup
175
- Commands used to backup project
262
+ vm_box Virtual machine box URL
176
263
 
177
- commands.test
178
- Command used to manage and run project tests
264
+ vm_ip Virtual machine IP address
179
265
 
180
- Placeholder arguments can be used within any command block sequence to
181
- allow splat or indexed arguments to be passed to the corresponding com-
182
- mand when executed.
266
+ vm_path
267
+ Virtual machine location on the host machine
183
268
 
184
- %args%, %arguments%
185
- Splat argument placeholder e.g. cmd %args%
269
+ vm_root
270
+ Web root of the VM on the host machine
186
271
 
187
- %argN%, %argumentN%
188
- Where n is the argument index e.g. cmd %arg1% | cmd %arg2%
272
+ vm_location
273
+ Project location within the VM on the host machine
189
274
 
190
- When naming your configuration file, use the recommended Juicefile, or
191
- .tj.yaml naming convention. The raw filename regex matcher is below if
192
- you want to be a little different.
275
+ vm_srv Project location within the VM on the guest machine
193
276
 
194
- /^(((\.)?(tj)|((J|j)uicefile))(\.y(a)?ml)?$)/
277
+ vm_prefix
278
+ Virtual machine project location prefix
195
279
 
196
280
  ENVIRONMENT
197
281
  All of the global options have a corresponding ENV variable that can be
@@ -251,4 +335,4 @@ ENVIRONMENT
251
335
 
252
336
 
253
337
 
254
- July 2016 TJ(1)
338
+ August 2016 TJ(1)
@@ -13,6 +13,7 @@ module ThemeJuice
13
13
  attr_accessor :vm_location
14
14
  attr_accessor :vm_srv
15
15
  attr_accessor :vm_restart
16
+ attr_accessor :vm_provision
16
17
  attr_accessor :repository
17
18
  attr_accessor :db_host
18
19
  attr_accessor :db_name
@@ -31,7 +32,6 @@ module ThemeJuice
31
32
  attr_accessor :no_ssl
32
33
  attr_accessor :no_config
33
34
  attr_accessor :wp_config_modify
34
- attr_accessor :provision
35
35
 
36
36
  def vm_root
37
37
  @vm_root ||= File.expand_path("#{Env.vm_path}/www")