capistrano-typo3 0.2.4 → 0.3.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.codeclimate.yml +8 -0
- data/CHANGELOG.md +7 -0
- data/README.md +11 -12
- data/capistrano-typo3.gemspec +3 -3
- data/docs/homestead_nl.md +164 -0
- data/docs/install_from_scratch.md +263 -0
- data/homestead_files/Vagrantfile +193 -0
- data/homestead_files/homestead.rb +35 -0
- data/homestead_files/vagrant.yml +62 -0
- data/lib/capistrano/tasks/git.cap +7 -0
- data/lib/capistrano/tasks/typo3.cap +303 -316
- data/lib/capistrano/typo3/dt3_div.rb +52 -0
- data/lib/capistrano/typo3/dt3_mysql.rb +179 -0
- data/lib/capistrano/typo3/typo3_helper.rb +481 -0
- data/lib/capistrano/typo3/version.rb +1 -1
- data/lib/capistrano/typo3.rb +7 -0
- metadata +16 -6
@@ -2,14 +2,23 @@
|
|
2
2
|
|
3
3
|
#----- DEFAULT SETTINGS, OVERRIDE WHEN NEEDED
|
4
4
|
|
5
|
+
set :debug, 0
|
5
6
|
set :git_no_cache, 0
|
6
7
|
set :restart_webserver, "sudo /etc/init.d/apache2 restart"
|
7
8
|
set :bundle_executable, "/usr/bin/bundle"
|
8
9
|
set :rake_executable, "./bin/rake"
|
9
10
|
set :rake_mysql_exec_dir, "/usr/bin"
|
10
11
|
set :rake_php_executable, "/usr/bin/php"
|
12
|
+
|
11
13
|
set :t3_dont_upgrade_source, 0
|
12
14
|
set :t3_alternative_source_url, nil
|
15
|
+
set :t3_main_version, '7.6'
|
16
|
+
set :t3_post_deployment_commands, []
|
17
|
+
set :t3_db_sync_ignore_tables, []
|
18
|
+
|
19
|
+
|
20
|
+
set :typo3_v6_local_conf_path, File.join('current','dummy','typo3conf','LocalConfiguration.php')
|
21
|
+
set :http_protocol, 'http'
|
13
22
|
|
14
23
|
#----- INTERNAL VARIABLES, DON'T CHANGE OR OVERRIDE THESE
|
15
24
|
set :hooks_before_suite_run, 0
|
@@ -17,266 +26,345 @@ set :install_or_update_rake_typo3_run, 0
|
|
17
26
|
|
18
27
|
namespace :typo3 do
|
19
28
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
invoke 'typo3:helper:rm_deploy_to'
|
30
|
-
invoke 'typo3:hooks:before_suite'
|
31
|
-
|
32
|
-
invoke 'deploy:check'
|
33
|
-
invoke 'deploy:updating'
|
34
|
-
invoke 'typo3:helper:setup_shared_typo3_dirs'
|
35
|
-
invoke 'typo3:helper:current_relative_symlink'
|
36
|
-
|
37
|
-
on roles(:all) do
|
38
|
-
execute "cd #{fetch(:deploy_to)}/current/ && git remote set-url origin #{fetch(:repo_url)}"
|
39
|
-
execute "cd #{fetch(:deploy_to)}/current/ && mkdir -p deploy/patches"
|
40
|
-
execute "cd #{fetch(:deploy_to)}/current/ && touch deploy/patches/.keep"
|
41
|
-
execute "cd #{fetch(:deploy_to)}/current/ && mkdir -p deploy/migrations"
|
42
|
-
execute "cd #{fetch(:deploy_to)}/current/ && touch deploy/migrations/.keep"
|
43
|
-
execute "cd #{fetch(:deploy_to)}/current/ && mkdir -p dummy/typo3conf/ext"
|
44
|
-
execute "cd #{fetch(:deploy_to)}/current/ && touch dummy/typo3conf/ext/index.html"
|
45
|
-
end
|
46
|
-
|
47
|
-
invoke 'typo3:helper:create_gitignore'
|
48
|
-
invoke 'typo3:helper:upgrade_source'
|
49
|
-
print "initial environment has been setup"
|
50
|
-
end
|
51
|
-
|
52
|
-
# desc "init step 2: install a fresh TYPO3 in the designated version"
|
53
|
-
task :init2_install_typo3 do
|
54
|
-
print "SORRY NOT YET IMPLEMENTED"
|
55
|
-
end
|
56
|
-
|
57
|
-
desc "init step 2: clone from extisting TYPO3 environment"
|
58
|
-
task :init2_install_typo3 do
|
59
|
-
|
60
|
-
print "\nNOTE: When this task fails most times there is a problem with your ssh authorized public keys\n\n"
|
29
|
+
desc "Setup a new production environment. Don't sync content from old production"
|
30
|
+
task :setup_new_stage_no_sync do
|
31
|
+
invoke 'typo3:helper:rm_deploy_to' #OKE
|
32
|
+
invoke 'deploy' #OKE
|
33
|
+
invoke 'typo3:helper:setup_shared_typo3_dirs' #OKE
|
34
|
+
invoke 'typo3:helper:update_localconf' #OKE
|
35
|
+
invoke 'typo3:helper:current_relative_symlink' #OKE
|
36
|
+
invoke 'typo3:helper:restart_webserver' #OKE
|
61
37
|
|
62
|
-
invoke 'typo3:hooks:before_suite'
|
63
|
-
invoke 'typo3:sync_from_production'
|
64
|
-
|
65
|
-
on roles(:all) do
|
66
|
-
|
67
|
-
execute "rsync -v #{fetch(:t3_clone_original)[:ssh_user]}@#{fetch(:t3_clone_original)[:ssh_host]}:#{fetch(:t3_clone_original)[:dummy_root]}/* #{fetch(:deploy_to)}/current/dummy/"
|
68
|
-
execute "rsync -v #{fetch(:t3_clone_original)[:ssh_user]}@#{fetch(:t3_clone_original)[:ssh_host]}:#{fetch(:t3_clone_original)[:dummy_root]}/.* #{fetch(:deploy_to)}/current/dummy/"
|
69
|
-
execute "rsync -av --exclude ext --exclude *.log --exclude temp* #{fetch(:t3_clone_original)[:ssh_user]}@#{fetch(:t3_clone_original)[:ssh_host]}:#{fetch(:t3_clone_original)[:dummy_root]}/typo3conf/ #{fetch(:deploy_to)}/current/dummy/typo3conf/"
|
70
|
-
execute "rsync -avL #{fetch(:t3_clone_original)[:ssh_user]}@#{fetch(:t3_clone_original)[:ssh_host]}:#{fetch(:t3_clone_original)[:dummy_root]}/typo3conf/ext/ #{fetch(:deploy_to)}/current/dummy/typo3conf/ext/"
|
71
|
-
|
72
|
-
#TODO do git module magic
|
73
|
-
#execute "cd #{fetch(:deploy_to)}/current && find `dummy/typo3conf/ext -name '.git'`"
|
74
|
-
end
|
75
|
-
|
76
|
-
invoke 'typo3:hooks:after_suite'
|
77
|
-
end
|
78
|
-
|
79
|
-
desc "Setup a new production environment. Manually sync content from old production"
|
80
|
-
task :init3_setup_new_stage_no_sync do
|
81
|
-
invoke 'typo3:helper:rm_deploy_to'
|
82
|
-
invoke 'typo3:hooks:before_suite'
|
83
|
-
invoke 'typo3:helper:setup_shared_typo3_dirs'
|
84
|
-
invoke 'deploy'
|
85
|
-
invoke('typo3:hooks:after_suite') #FIXME Only run it init3_setup_new_stage_no_sync is called
|
86
38
|
print "environment has been setup, you do need to sync content from old production"
|
87
39
|
end
|
88
40
|
|
89
41
|
desc "Setup a new staged typo3 environment when a it's already in model"
|
90
|
-
task :
|
91
|
-
|
92
|
-
invoke 'typo3:
|
93
|
-
invoke '
|
94
|
-
invoke '
|
95
|
-
|
96
|
-
invoke
|
42
|
+
task :setup_new_stage_sync do
|
43
|
+
|
44
|
+
invoke 'typo3:helper:rm_deploy_to' #OKE
|
45
|
+
invoke 'deploy' #OKE
|
46
|
+
invoke 'typo3:helper:setup_shared_typo3_dirs' #OKE
|
47
|
+
|
48
|
+
invoke 'typo3:content:sync_files_from_production' #OKE
|
49
|
+
invoke 'typo3:content:sync_db_from_production' #OKE
|
50
|
+
invoke 'typo3:content:flush_cache_in_db' #OKE
|
51
|
+
invoke 'typo3:helper:update_localconf' #OKE
|
52
|
+
invoke 'typo3:helper:current_relative_symlink' #OKE
|
53
|
+
invoke 'typo3:helper:restart_webserver' #OKE
|
97
54
|
end
|
98
55
|
|
99
|
-
desc
|
100
|
-
task :
|
101
|
-
|
102
|
-
invoke 'typo3:hooks:before_suite'
|
56
|
+
desc "sync db & files and then deploy. Typically for Continuous Integration"
|
57
|
+
task :sync_n_deploy do
|
103
58
|
invoke 'deploy'
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
execute "cd #{fetch(:deploy_to)}/current && git checkout #{branch}"
|
111
|
-
execute "cd #{fetch(:deploy_to)}/current && git checkout master"
|
112
|
-
execute "cd #{fetch(:deploy_to)}/current && git merge --strategy-option ours #{branch}"
|
113
|
-
end
|
114
|
-
|
115
|
-
invoke('typo3:hooks:after_suite')
|
59
|
+
invoke 'typo3:content:sync_files_from_production'
|
60
|
+
invoke 'typo3:content:sync_db_from_production'
|
61
|
+
invoke 'typo3:content:flush_cache_in_db'
|
62
|
+
invoke 'typo3:helper:update_localconf'
|
63
|
+
invoke 'typo3:helper:current_relative_symlink'
|
64
|
+
invoke 'typo3:helper:restart_webserver'
|
116
65
|
end
|
117
66
|
|
118
67
|
desc "deploy the typo3 way"
|
119
68
|
task :deploy do
|
120
|
-
invoke 'typo3:hooks:before_suite'
|
121
69
|
invoke 'deploy'
|
122
|
-
invoke
|
70
|
+
invoke 'typo3:helper:update_localconf'
|
71
|
+
invoke 'typo3:helper:current_relative_symlink'
|
72
|
+
invoke 'typo3:helper:restart_webserver'
|
123
73
|
end
|
124
74
|
|
125
|
-
desc "
|
126
|
-
task :
|
127
|
-
invoke 'typo3:
|
128
|
-
invoke 'typo3:
|
129
|
-
invoke '
|
130
|
-
invoke('typo3:hooks:after_suite')
|
75
|
+
desc "Make db & files in env. identical to production"
|
76
|
+
task :sync_from_production do
|
77
|
+
invoke 'typo3:content:sync_files_from_production'
|
78
|
+
invoke 'typo3:content:sync_db_from_production'
|
79
|
+
invoke 'typo3:content:flush_cache_in_db'
|
131
80
|
end
|
132
81
|
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
execute "cd #{fetch(:deploy_to)} && #{fetch(:rake_executable)} env:flush_cache"
|
82
|
+
namespace :hooks do
|
83
|
+
task :after_deploy do
|
84
|
+
invoke 'git:set_remote_url_no_cache'
|
85
|
+
invoke 'typo3:helper:execute_post_deployment_commands'
|
138
86
|
end
|
139
87
|
end
|
140
88
|
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
89
|
+
namespace :content do
|
90
|
+
desc 'sync files from production'
|
91
|
+
task :sync_files_from_production do
|
92
|
+
on roles(:allow_syncfiles) do
|
93
|
+
if fetch(:t3_live_sync)['filesync']
|
94
|
+
fetch(:t3_live_sync)['filesync'].each do |key,command|
|
95
|
+
execute "cd #{fetch(:deploy_to)} && #{command}"
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
145
99
|
end
|
146
|
-
end
|
147
100
|
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
execute "cd #{fetch(:deploy_to)} && #{fetch(:rake_executable)} env:rspec_post_browser"
|
152
|
-
end
|
153
|
-
end
|
101
|
+
desc 'sync database from production and run sql updates'
|
102
|
+
task :sync_db_from_production do
|
103
|
+
on roles(:allow_syncdatabase) do
|
154
104
|
|
155
|
-
|
156
|
-
task :sync_from_production do
|
157
|
-
invoke 'typo3:hooks:before_suite'
|
158
|
-
invoke 'typo3:helper:sync_files_from_production'
|
159
|
-
invoke 'typo3:helper:sync_db_from_production'
|
160
|
-
invoke 'typo3:helper:flush_content_cache'
|
161
|
-
end
|
105
|
+
ignorestring = ""
|
162
106
|
|
163
|
-
|
164
|
-
task :info do
|
165
|
-
invoke 'typo3:hooks:before_suite'
|
166
|
-
on roles(:all) do
|
167
|
-
execute "cd #{fetch(:deploy_to)} && #{fetch(:rake_executable)} env:info"
|
168
|
-
end
|
169
|
-
end
|
107
|
+
if(:t3_db_sync_ignore_tables)
|
170
108
|
|
171
|
-
|
172
|
-
|
173
|
-
|
109
|
+
fetch(:t3_db_sync_ignore_tables).each do | ignore_tbl |
|
110
|
+
ignorestring = "#{ignorestring} --ignore-table=#{fetch(:t3_live_sync)['dbsync']['dbname']}.#{ignore_tbl}"
|
111
|
+
end
|
112
|
+
end
|
174
113
|
|
175
|
-
|
176
|
-
|
114
|
+
# DUMP DATABASE TO IMAGE
|
115
|
+
execute <<DBSYNC1
|
116
|
+
ssh #{fetch(:t3_live_sync)['dbsync']['ssh_user']}@#{fetch(:t3_live_sync)['dbsync']['ssh_server']} \
|
117
|
+
'mysqldump -u#{fetch(:t3_live_sync)['dbsync']['dbuser']} \
|
118
|
+
-h#{fetch(:t3_live_sync)['dbsync']['dbhost']} \
|
119
|
+
-p#{fetch(:t3_live_sync)['dbsync']['dbpass']} \
|
120
|
+
#{ignorestring} \
|
121
|
+
#{fetch(:t3_live_sync)['dbsync']['dbname']} > /tmp/.captypo3dump-#{fetch(:t3_live_sync)['dbsync']['dbname']}'
|
122
|
+
DBSYNC1
|
123
|
+
|
124
|
+
if(:t3_db_sync_ignore_tables)
|
125
|
+
fetch(:t3_db_sync_ignore_tables).each do | ignore_tbl |
|
126
|
+
|
127
|
+
execute <<DBSYNC1
|
128
|
+
ssh #{fetch(:t3_live_sync)['dbsync']['ssh_user']}@#{fetch(:t3_live_sync)['dbsync']['ssh_server']} \
|
129
|
+
'mysqldump -u#{fetch(:t3_live_sync)['dbsync']['dbuser']} \
|
130
|
+
-h#{fetch(:t3_live_sync)['dbsync']['dbhost']} \
|
131
|
+
-p#{fetch(:t3_live_sync)['dbsync']['dbpass']} \
|
132
|
+
--no-data \
|
133
|
+
#{fetch(:t3_live_sync)['dbsync']['dbname']} #{ignore_tbl} >> /tmp/.captypo3dump-#{fetch(:t3_live_sync)['dbsync']['dbname']}'
|
134
|
+
DBSYNC1
|
135
|
+
end
|
136
|
+
end
|
177
137
|
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
138
|
+
# COMPRESS IMAGE
|
139
|
+
execute <<DBSYNC2
|
140
|
+
ssh #{fetch(:t3_live_sync)['dbsync']['ssh_user']}@#{fetch(:t3_live_sync)['dbsync']['ssh_server']} \
|
141
|
+
'gzip -f /tmp/.captypo3dump-#{fetch(:t3_live_sync)['dbsync']['dbname']}'
|
142
|
+
DBSYNC2
|
143
|
+
|
144
|
+
# TRANSFER IMAGE
|
145
|
+
execute <<DBSYNC3
|
146
|
+
scp #{fetch(:t3_live_sync)['dbsync']['ssh_user']}@#{fetch(:t3_live_sync)['dbsync']['ssh_server']}:/tmp/.captypo3dump-#{fetch(:t3_live_sync)['dbsync']['dbname']}.gz \
|
147
|
+
/tmp/.captypo3dump-#{fetch(:t3_live_sync)['dbsync']['dbname']}.gz
|
148
|
+
DBSYNC3
|
149
|
+
|
150
|
+
# DECOMPRESS IMAGE
|
151
|
+
execute <<DBSYNC4
|
152
|
+
gunzip -f /tmp/.captypo3dump-#{fetch(:t3_live_sync)['dbsync']['dbname']}.gz
|
153
|
+
DBSYNC4
|
154
|
+
|
155
|
+
# IMPORT AND REMOVE IMAGE
|
156
|
+
execute <<DBSYNC5
|
157
|
+
mysql -u#{fetch(:dbuser)} -h#{fetch(:dbhost)} -p#{fetch(:dbpass)} #{fetch(:dbname)} < /tmp/.captypo3dump-#{fetch(:t3_live_sync)['dbsync']['dbname']} && \
|
158
|
+
rm -f /tmp/.captypo3dump-#{fetch(:t3_live_sync)['dbsync']['dbname']}
|
159
|
+
DBSYNC5
|
160
|
+
|
161
|
+
# REMOVE IMAGE
|
162
|
+
execute <<DBSYNC6
|
163
|
+
ssh #{fetch(:t3_live_sync)['dbsync']['ssh_user']}@#{fetch(:t3_live_sync)['dbsync']['ssh_server']} \
|
164
|
+
'rm -f /tmp/.captypo3dump-#{fetch(:t3_live_sync)['dbsync']['dbname']}.gz'
|
165
|
+
DBSYNC6
|
182
166
|
end
|
167
|
+
|
168
|
+
invoke 'typo3:content:sql_updates'
|
183
169
|
end
|
184
170
|
|
185
|
-
|
186
|
-
|
171
|
+
desc 'run necessary sql queries for environment'
|
172
|
+
task :sql_updates do
|
173
|
+
on roles(:allow_syncdatabase) do
|
174
|
+
if fetch(:t3_sql_updates)
|
175
|
+
fetch(:t3_sql_updates).each do |command|
|
176
|
+
execute DT3MySQL::mysql_execute(command)
|
177
|
+
end
|
178
|
+
end
|
179
|
+
end
|
187
180
|
end
|
188
181
|
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
182
|
+
desc 'flush cache and session tables in database'
|
183
|
+
task :flush_cache_in_db do
|
184
|
+
on roles(:all) do
|
185
|
+
|
186
|
+
all_current_tables = capture(DT3MySQL::show_tables).split("\n")
|
187
|
+
|
188
|
+
cache_tables= %w(cache_extensions cache_hash cache_imagesizes cache_md5params cache_pages cache_pagesection cache_sys_dmail_stat cache_treelist cache_typo3temp_log cachingframework_cache_hash cachingframework_cache_hash_tags cachingframework_cache_pages cachingframework_cache_pages_tags cachingframework_cache_pagesection cachingframework_cache_pagesection_tags cf_cache_hash cf_cache_hash_tags cf_cache_pages cf_cache_pages_tags cf_cache_pagesection cf_cache_pagesection_tags cf_extbase_object cf_extbase_object_tags cf_extbase_reflection cf_extbase_reflection_tags cf_tt_news_cache cf_tt_news_cache_tags cf_tx_solr cf_tx_solr_tags tt_news_cache tt_news_cache_tags tx_realurl_chashcache tx_realurl_errorlog tx_realurl_pathcache tx_realurl_uniqalias tx_realurl_urldecodecache tx_realurl_urlencodecache tx_solr_cache tx_solr_cache_tags)
|
189
|
+
|
190
|
+
cache_tables.each do |table|
|
191
|
+
if all_current_tables.include?(table)
|
192
|
+
execute DT3MySQL::truncate_table(table)
|
193
|
+
end
|
194
|
+
end
|
195
|
+
|
196
|
+
session_tables=%w(be_sessions fe_session_data fe_sessions)
|
197
|
+
session_tables.each do |table|
|
198
|
+
if all_current_tables.include?(table)
|
199
|
+
execute DT3MySQL::truncate_table(table)
|
200
|
+
end
|
201
|
+
end
|
202
|
+
end
|
197
203
|
end
|
198
204
|
end
|
199
205
|
|
200
|
-
namespace :
|
206
|
+
namespace :vagrant do
|
207
|
+
desc "when homestead is not yet configured"
|
208
|
+
task "init_homestead_conf" do
|
209
|
+
invoke 'typo3:vagrant:check_branch'
|
210
|
+
sh "mkdir -p config"
|
211
|
+
sh "cd config && curl -O https://raw.githubusercontent.com/t3labcom/capistrano-typo3/master/homestead_files/vagrant.yml"
|
212
|
+
sh "cd config/deploy && curl -O https://raw.githubusercontent.com/t3labcom/capistrano-typo3/master/homestead_files/homestead.rb"
|
213
|
+
sh "curl -O https://raw.githubusercontent.com/t3labcom/capistrano-typo3/master/homestead_files/Vagrantfile"
|
214
|
+
end
|
201
215
|
|
202
|
-
|
203
|
-
|
204
|
-
|
216
|
+
desc "setup new homestead vagrant machine for TYPO3 development"
|
217
|
+
task "setup_machine" do
|
218
|
+
invoke 'typo3:vagrant:check_branch'
|
219
|
+
|
220
|
+
if `vagrant status | grep running`.strip != ""
|
221
|
+
sh "vagrant destroy"
|
205
222
|
end
|
206
|
-
end
|
207
223
|
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
224
|
+
sh "rm -f local.typo3.org"
|
225
|
+
sh "rm -Rf .vagrant"
|
226
|
+
|
227
|
+
if `vagrant plugin list | grep vagrant-bind`.include? 'vagrant-bindfs'
|
228
|
+
print "vagrant bindfs plugin is already installed\n"
|
229
|
+
else
|
230
|
+
sh "vagrant plugin install vagrant-bindfs"
|
212
231
|
end
|
213
|
-
end
|
214
232
|
|
215
|
-
|
216
|
-
|
233
|
+
sh "vagrant up"
|
234
|
+
|
217
235
|
on roles(:all) do
|
218
|
-
execute "
|
219
|
-
execute "
|
236
|
+
execute "sudo aptitude update"
|
237
|
+
execute "sudo aptitude install ruby-dev make -y"
|
238
|
+
execute "sudo gem install bundler"
|
220
239
|
end
|
240
|
+
|
241
|
+
invoke 'typo3:vagrant:set_no_site'
|
242
|
+
invoke 'typo3:helper:restart_webserver'
|
221
243
|
end
|
222
244
|
|
223
|
-
|
224
|
-
task
|
245
|
+
desc "setup homestead"
|
246
|
+
task "setup_site" do
|
247
|
+
invoke 'typo3:vagrant:check_branch'
|
248
|
+
|
225
249
|
on roles(:all) do
|
226
|
-
|
250
|
+
## PURGE IF NEEDED
|
251
|
+
execute "sudo rm -Rf /var/shared/fileadmin /var/shared/typo3temp /var/shared/uploads"
|
252
|
+
execute "sudo rm -f /var/current"
|
253
|
+
execute "sudo mysql -e 'DROP DATABASE IF EXISTS #{fetch(:dbname)}'"
|
254
|
+
|
255
|
+
## CREATE
|
256
|
+
execute "sudo mkdir -p /var/shared/fileadmin /var/shared/typo3temp /var/shared/uploads"
|
257
|
+
execute "sudo chown -Rf vagrant.vagrant /var/shared/fileadmin /var/shared/typo3temp /var/shared/uploads"
|
258
|
+
execute "sudo ln -s /var/www/local.typo3.org /var/current"
|
227
259
|
end
|
228
|
-
end
|
229
260
|
|
230
|
-
# TODO move to typo3-rake?
|
231
|
-
# create typo3 dirs in shared
|
232
|
-
task :setup_shared_typo3_dirs do
|
233
261
|
on roles(:all) do
|
234
|
-
execute "
|
262
|
+
execute "sudo mysqladmin create #{fetch(:dbname)}"
|
235
263
|
end
|
236
|
-
end
|
237
264
|
|
238
|
-
|
239
|
-
|
265
|
+
invoke 'typo3:vagrant:fixknownhosts'
|
266
|
+
invoke 'typo3:content:sync_db_from_production'
|
267
|
+
invoke 'typo3:content:flush_cache_in_db'
|
268
|
+
invoke 'typo3:helper:update_localconf'
|
269
|
+
|
240
270
|
on roles(:all) do
|
241
|
-
|
271
|
+
if fetch(:hs_default_upstream_php_engine)
|
272
|
+
execute "sudo sed -i 's/set $upstream .*/set $upstream #{fetch(:hs_default_upstream_php_engine)};/g' /etc/nginx/sites-available/local.typo3.org.conf"
|
273
|
+
end
|
274
|
+
execute "sudo sed -i 's/root .*/root \"\\/var\\/www\\/local\\.typo3\\.org\\/dummy\\/\";/g' /etc/nginx/sites-available/local.typo3.org.conf"
|
242
275
|
end
|
276
|
+
|
277
|
+
invoke 'typo3:helper:restart_webserver'
|
278
|
+
invoke 'typo3:content:sync_files_from_production'
|
279
|
+
|
280
|
+
print <<MSG
|
281
|
+
|
282
|
+
----------------------------------------------------------------------
|
283
|
+
The website seems to be succesfully installed in the Homestead Vagrant
|
284
|
+
machine.
|
285
|
+
|
286
|
+
Open the site at http://local.typo3.org"
|
287
|
+
|
288
|
+
And live edit the website via the shortcut local.typo3.org in this
|
289
|
+
directory
|
290
|
+
----------------------------------------------------------------------
|
291
|
+
MSG
|
292
|
+
end
|
293
|
+
|
294
|
+
desc "purge .vagrant files"
|
295
|
+
task "purge_machine" do
|
296
|
+
print "OBSOLETE: you can run 'setup_machine' over and over again\n"
|
243
297
|
end
|
244
298
|
|
245
|
-
#
|
246
|
-
task
|
299
|
+
#desc "purge homestead site and database"
|
300
|
+
task "purge_site" do
|
301
|
+
print "OBSOLETE: you can run 'setup_site' over and over again\n"
|
302
|
+
end
|
247
303
|
|
248
|
-
|
304
|
+
task "check_branch" do
|
305
|
+
current_branch = `git branch | grep \\* | cut -d ' ' -f2`.strip
|
306
|
+
if current_branch != fetch(:branch)
|
307
|
+
raise "current branch differs from homestead.rb configuration.\n see config/deploy/homestead.rb\n\n Current branch: #{current_branch}\n Homestead branch: #{fetch(:branch)} "
|
308
|
+
end
|
309
|
+
end
|
310
|
+
|
311
|
+
task "fixknownhosts" do
|
312
|
+
on roles(:all) do
|
313
|
+
execute "ssh -o PasswordAuthentication=no -o StrictHostKeyChecking=no #{fetch(:t3_live_sync)['dbsync']['ssh_user']}@#{fetch(:t3_live_sync)['dbsync']['ssh_server']} uptime"
|
314
|
+
end
|
315
|
+
end
|
249
316
|
|
250
|
-
|
317
|
+
task "set_no_site" do
|
318
|
+
on roles(:all) do
|
319
|
+
execute "sudo sed -i 's/root .*/root \"\\/var\\/\";/g' /etc/nginx/sites-available/local.typo3.org.conf"
|
320
|
+
execute "sudo su -c 'echo \"THERE IS NO DIRECTORY local.typo3.org ... YOU MAY WANT TO RUN cap homstead:setup_site\" > /var/index.php'"
|
321
|
+
end
|
322
|
+
end
|
323
|
+
end
|
251
324
|
|
252
|
-
|
325
|
+
namespace :test do
|
253
326
|
|
254
|
-
|
327
|
+
desc "ssh_password_less_login_rsync"
|
328
|
+
task :ssh_password_less_login_rsync do
|
329
|
+
on roles(:all) do |server|
|
330
|
+
begin
|
331
|
+
capture("ssh -o PasswordAuthentication=no -o StrictHostKeyChecking=no #{fetch(:t3_live_sync)['dbsync']['ssh_user']}@#{fetch(:t3_live_sync)['dbsync']['ssh_server']} uptime")
|
332
|
+
rescue
|
333
|
+
er = "password less login to #{fetch(:t3_live_sync)['dbsync']['ssh_user']}@#{fetch(:t3_live_sync)['dbsync']['ssh_server']} is not possible\n"
|
334
|
+
er += "You need to fix this first.\n"
|
335
|
+
er += "solution 1: ssh-add.\n"
|
336
|
+
er += "solution 2: install public key on the remote server.\n"
|
255
337
|
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
execute "git clone https://github.com/Lingewoud/rake-typo3.git #{fetch(:deploy_to)}/.clone"
|
262
|
-
execute "cd #{fetch(:deploy_to)}/.clone && mv ./* ../"
|
263
|
-
execute "cd #{fetch(:deploy_to)}/.clone && mv .bundle .git .gitignore .rspec .travis.yml ../"
|
264
|
-
end
|
338
|
+
raise "#{er}"
|
339
|
+
end
|
340
|
+
end
|
341
|
+
end
|
342
|
+
end
|
265
343
|
|
266
|
-
|
267
|
-
|
344
|
+
namespace :helper do
|
345
|
+
task :execute_post_deployment_commands do
|
346
|
+
on roles(:all) do
|
268
347
|
|
269
|
-
|
270
|
-
|
271
|
-
execute
|
272
|
-
execute "cd #{fetch(:deploy_to)} && #{fetch(:bundle_executable)} install --binstubs"
|
273
|
-
print "rake-typo3 has been installed"
|
348
|
+
if fetch(:t3_post_deployment_commands)
|
349
|
+
fetch(:t3_post_deployment_commands).each do |command|
|
350
|
+
execute command
|
274
351
|
end
|
352
|
+
end
|
353
|
+
end
|
275
354
|
|
276
|
-
|
355
|
+
end #ENDTASK
|
277
356
|
|
278
|
-
|
357
|
+
# remove deploy_to directory
|
358
|
+
task :rm_deploy_to do
|
359
|
+
on roles(:all) do
|
360
|
+
execute "rm -Rf #{fetch(:deploy_to)}"
|
361
|
+
end
|
362
|
+
end
|
279
363
|
|
364
|
+
# create typo3 dirs in shared
|
365
|
+
task :setup_shared_typo3_dirs do
|
366
|
+
on roles(:all) do
|
367
|
+
execute "cd #{fetch(:deploy_to)} && mkdir -p shared/fileadmin shared/typo3temp shared/uploads"
|
280
368
|
end
|
281
369
|
end
|
282
370
|
|
@@ -290,116 +378,48 @@ namespace :typo3 do
|
|
290
378
|
*.swp
|
291
379
|
*.swo
|
292
380
|
ENABLE_INSTALL_TOOL
|
293
|
-
VERSION
|
381
|
+
/VERSION
|
294
382
|
temp_CACHE*.php
|
295
383
|
deprecation_*.log
|
296
384
|
"
|
297
|
-
|
298
385
|
contents = StringIO.new(ignorestring)
|
299
386
|
upload! contents, "#{fetch(:deploy_to)}/current/.gitignore"
|
300
387
|
end
|
301
388
|
end
|
302
389
|
|
303
|
-
task :create_typo3yaml do
|
304
|
-
|
305
|
-
on roles(:all) do
|
306
|
-
|
307
|
-
if(fetch(:t3_main_version))
|
308
|
-
t3yaml = {}
|
309
|
-
t3yaml['all'] = {}
|
310
|
-
t3yaml['all']['TYPO3_MAIN_VERSION'] = fetch(:t3_main_version)
|
311
|
-
t3yaml['all']['SYNCLIVE'] = {}
|
312
|
-
t3yaml['all']['SYNCLIVE']['SYNCCMDS'] = fetch(:t3_live_sync)['filesync']
|
313
|
-
t3yaml['all']['SYNCLIVE']['SSH_DB_SERVER'] = fetch(:t3_live_sync)['dbsync']['ssh_server']
|
314
|
-
t3yaml['all']['SYNCLIVE']['SSH_DB_USER'] = fetch(:t3_live_sync)['dbsync']['ssh_user']
|
315
|
-
t3yaml['all']['SYNCLIVE']['DB'] = fetch(:t3_live_sync)['dbsync']
|
316
|
-
t3yaml['all']['MYSQLEXECDIR'] = fetch(:rake_mysql_exec_dir)
|
317
|
-
t3yaml['all']['PHP_EXECUTABLE'] = fetch(:rake_php_executable)
|
318
|
-
|
319
|
-
stage = fetch(:stage).to_s
|
320
|
-
|
321
|
-
t3yaml[stage] = {}
|
322
|
-
t3yaml[stage]['DB'] = {}
|
323
|
-
t3yaml[stage]['DB']['dbname'] = fetch(:dbname)
|
324
|
-
t3yaml[stage]['DB']['dbuser'] = fetch(:dbuser)
|
325
|
-
t3yaml[stage]['DB']['dbpass'] = fetch(:dbpass)
|
326
|
-
t3yaml[stage]['DB']['dbhost'] = fetch(:dbhost)
|
327
|
-
|
328
|
-
t3yaml[stage]['SQL_UPDATES'] = fetch(:t3_sql_updates)
|
329
|
-
t3yaml[stage]['TYPO3_CONF_VARS'] = fetch(:t3_conf_vars)
|
330
|
-
t3yaml[stage]['TYPO3_CONF_VARS_EXT_EXTCONF'] = fetch(:t3_conf_vars_ext_extconf)
|
331
|
-
t3yaml[stage]['TYPO3_SOURCE_PATCHES'] = fetch(:t3_source_patches)
|
332
|
-
|
333
|
-
if !fetch(:t3_alternative_source_url).nil?
|
334
|
-
t3yaml[stage]['TYPO3_ALTERNATIVE_SOURCE_URL'] = fetch(:t3_alternative_source_url)
|
335
|
-
end
|
336
|
-
|
337
|
-
|
338
|
-
t3yaml[stage]['DISABLE_EXTENSIONS'] = fetch(:t3_disable_extensions)
|
339
|
-
t3yaml[stage]['FILE_SEARCH_REPLACE'] = fetch(:t3_file_search_replace)
|
340
|
-
|
341
|
-
contents = StringIO.new(t3yaml.to_yaml)
|
342
|
-
upload! contents, "#{fetch(:deploy_to)}/typo3.yml"
|
343
|
-
end
|
344
|
-
|
345
|
-
end
|
346
|
-
end
|
347
|
-
|
348
390
|
# when not in deploy latest ls releases/ -1 | sort -r | head -n 1
|
349
391
|
task :current_relative_symlink do
|
350
392
|
on roles(:all) do
|
351
|
-
execute "rm -f
|
352
|
-
execute "cd #{fetch(:deploy_to)} && ln -s releases
|
393
|
+
execute "cd #{fetch(:deploy_to)} && rm -f current"
|
394
|
+
execute "cd #{fetch(:deploy_to)} && ln -s releases/`ls -1 releases/ | sort -r | head -n 1` current"
|
353
395
|
end
|
354
396
|
end
|
355
397
|
|
398
|
+
desc "update LocalConf with correct db credentionals"
|
356
399
|
task :update_localconf do
|
357
|
-
on roles(:all) do
|
358
|
-
execute "cd #{fetch(:deploy_to)} && #{fetch(:rake_executable)} cap:update_localconf_db_credentials"
|
359
|
-
execute "cd #{fetch(:deploy_to)} && #{fetch(:rake_executable)} cap:update_localconf_typo3conf_vars"
|
360
|
-
execute "cd #{fetch(:deploy_to)} && #{fetch(:rake_executable)} cap:update_localconf_disable_extensions"
|
361
|
-
execute "cd #{fetch(:deploy_to)} && #{fetch(:rake_executable)} cap:update_localconf_extconf_settings"
|
362
|
-
execute "cd #{fetch(:deploy_to)} && #{fetch(:rake_executable)} cap:flush_config_cache"
|
363
|
-
end
|
364
|
-
end
|
365
|
-
|
366
|
-
# Migrate database (typo3 Extension Manager migrations)
|
367
|
-
task :db_em_migrations do
|
368
|
-
on roles(:all) do
|
369
|
-
execute "cd #{fetch(:deploy_to)} && #{fetch(:rake_executable)} cap:db_migrate"
|
370
|
-
end
|
371
|
-
end
|
372
|
-
|
373
|
-
# Run search and replace
|
374
|
-
task :run_filesearchandreplace do
|
375
|
-
on roles(:all) do
|
376
|
-
execute "cd #{fetch(:deploy_to)} && #{fetch(:rake_executable)} cap:run_file_searchreplace_updates"
|
377
|
-
end
|
378
|
-
end
|
379
|
-
|
380
|
-
# Specific environment migration sql's. E.g. rename all fe-users etc..
|
381
|
-
# migrations should be placed in current/deploy/migrations/
|
382
|
-
# Run migrations (sql migrations)
|
383
|
-
task :run_migrations do
|
384
400
|
|
385
401
|
on roles(:all) do
|
386
|
-
execute "cd #{fetch(:deploy_to)} && #{fetch(:rake_executable)} cap:run_migrations"
|
387
|
-
execute "cd #{fetch(:deploy_to)} && #{fetch(:rake_executable)} cap:run_sql_updates"
|
388
|
-
end
|
389
|
-
end
|
390
402
|
|
391
|
-
|
392
|
-
task :upgrade_source do
|
403
|
+
execute "echo '<?php' > #{fetch(:deploy_to)}/current/dummy/typo3conf/AdditionalConfiguration.php"
|
393
404
|
|
394
|
-
|
395
|
-
|
396
|
-
on roles(:all) do
|
397
|
-
execute "cd #{fetch(:deploy_to)} && #{fetch(:rake_executable)} cap:update_typo3_source"
|
405
|
+
if fetch(:t3_add_unsafe_trusted_host_pattern)
|
406
|
+
execute "echo ' $GLOBALS[\"TYPO3_CONF_VARS\"][\"SYS\"][\"trustedHostsPattern\"] = \".*\";' >> #{fetch(:deploy_to)}/current/dummy/typo3conf/AdditionalConfiguration.php"
|
398
407
|
end
|
399
408
|
|
400
|
-
|
401
|
-
|
409
|
+
if fetch(:t3_store_db_credentials_in_addionalconf)
|
410
|
+
execute "echo ' $GLOBALS[\"TYPO3_CONF_VARS\"][\"DB\"][\"database\"] = \"#{fetch(:dbname)}\";' >> #{fetch(:deploy_to)}/current/dummy/typo3conf/AdditionalConfiguration.php"
|
411
|
+
execute "echo ' $GLOBALS[\"TYPO3_CONF_VARS\"][\"DB\"][\"host\"] = \"#{fetch(:dbhost)}\";' >> #{fetch(:deploy_to)}/current/dummy/typo3conf/AdditionalConfiguration.php"
|
412
|
+
execute "echo ' $GLOBALS[\"TYPO3_CONF_VARS\"][\"DB\"][\"password\"] = \"#{fetch(:dbpass)}\";' >> #{fetch(:deploy_to)}/current/dummy/typo3conf/AdditionalConfiguration.php"
|
413
|
+
execute "echo ' $GLOBALS[\"TYPO3_CONF_VARS\"][\"DB\"][\"username\"] = \"#{fetch(:dbuser)}\";' >> #{fetch(:deploy_to)}/current/dummy/typo3conf/AdditionalConfiguration.php"
|
414
|
+
else
|
415
|
+
cmd1 =Typo3Helper::make_set_localconf_database_settings_command(fetch(:dbname),fetch(:dbuser),fetch(:dbpass),fetch(:dbhost))
|
416
|
+
execute "cd #{fetch(:deploy_to)} && #{cmd1}"
|
417
|
+
|
418
|
+
cmd2 = "mv #{fetch(:typo3_v6_local_conf_path)}.tmp #{fetch(:typo3_v6_local_conf_path)}"
|
419
|
+
execute "cd #{fetch(:deploy_to)} && #{cmd2}"
|
420
|
+
end
|
402
421
|
end
|
422
|
+
|
403
423
|
end
|
404
424
|
|
405
425
|
task :restart_webserver do
|
@@ -410,36 +430,3 @@ deprecation_*.log
|
|
410
430
|
|
411
431
|
end
|
412
432
|
end
|
413
|
-
|
414
|
-
|
415
|
-
namespace :test do
|
416
|
-
task :test_pre_setup do
|
417
|
-
on roles(:all) do
|
418
|
-
# test apache restart is allowed
|
419
|
-
# test ssh access to live server is allowed
|
420
|
-
# test stage is configured in typo3.yml
|
421
|
-
end
|
422
|
-
end
|
423
|
-
|
424
|
-
task :test_post_setup do
|
425
|
-
on roles(:all) do
|
426
|
-
# test if dummy index.php is readable, correctly linked
|
427
|
-
# temp cache files are removed
|
428
|
-
end
|
429
|
-
end
|
430
|
-
|
431
|
-
task :test_pre_deploy do
|
432
|
-
#if production test if repo is dirty
|
433
|
-
on roles(:all) do
|
434
|
-
end
|
435
|
-
end
|
436
|
-
task :test_post_deploy do
|
437
|
-
on roles(:all) do
|
438
|
-
#test symlinks
|
439
|
-
#test source version
|
440
|
-
#test database connection
|
441
|
-
#test chmods
|
442
|
-
#test chowns
|
443
|
-
end
|
444
|
-
end
|
445
|
-
end
|