1 from fabric.api import task, run, local, env, cd, put, prefix, sudo |
1 from fabric.api import task, run, local, env, cd, put, prefix, sudo |
2 from fabric.colors import green |
2 from fabric.colors import green |
3 from fabric.contrib.project import rsync_project |
3 from fabric.contrib.project import rsync_project |
4 from fabric.contrib.files import exists, upload_template |
4 from fabric.contrib.files import exists, upload_template |
|
5 from fabric.context_managers import settings |
5 from mercurial import commands, ui, hg, cmdutil |
6 from mercurial import commands, ui, hg, cmdutil |
6 import imp |
7 import imp |
7 import os, os.path |
8 import os, os.path |
8 import shutil |
9 import shutil |
9 import sys |
10 import sys |
99 |
100 |
100 def collectstatic(remotepath, remotevirtualenvpath): |
101 def collectstatic(remotepath, remotevirtualenvpath): |
101 print("Collect static in %s with %s" % (remotepath, remotevirtualenvpath)) |
102 print("Collect static in %s with %s" % (remotepath, remotevirtualenvpath)) |
102 activate_path = os.path.join(remotevirtualenvpath, "bin/activate") |
103 activate_path = os.path.join(remotevirtualenvpath, "bin/activate") |
103 with prefix("source \"%s\"" % activate_path), prefix("export PYTHONPATH=\"%s\"" % remotepath), cd(remotepath): |
104 with prefix("source \"%s\"" % activate_path), prefix("export PYTHONPATH=\"%s\"" % remotepath), cd(remotepath): |
104 run("python manage.py collectstatic --noinput") |
105 run("python manage.py collectstatic -c --noinput") |
105 |
106 |
106 def create_config(export_path): |
107 def create_config(export_path): |
107 print("Create config from %s" % (export_path,)) |
108 print("Create config from %s" % (export_path,)) |
108 remotepath = env.remote_web_path |
109 remotepath = env.remote_web_path |
109 remote_config_path = os.path.join(remotepath, env.platform_web_module, "config.py") |
110 remote_config_path = os.path.join(remotepath, env.platform_web_module, "config.py") |
185 |
186 |
186 def relaunch_server(): |
187 def relaunch_server(): |
187 print("Relaunch server") |
188 print("Relaunch server") |
188 collectstatic(env.remote_web_path, env.remote_virtualenv_path) |
189 collectstatic(env.remote_web_path, env.remote_virtualenv_path) |
189 sudo(env.web_relaunch_cmd, shell=False) |
190 sudo(env.web_relaunch_cmd, shell=False) |
|
191 |
|
192 def check_folder_access(): |
|
193 print("Check folder access") |
|
194 # get remote user |
|
195 for folder_path in env.folders: |
|
196 if not os.path.isabs(folder_path): |
|
197 folder_path = env.remote_web_path.rstrip("/")+ "/" + folder_path |
|
198 with settings(warn_only=True): |
|
199 if not exists(folder_path): |
|
200 run("mkdir -p \"%s\"" % folder_path) |
|
201 run("chown -R -c :%s \"%s\"" % (env.web_group, folder_path)) |
|
202 run("chown -R -c g+w \"%s\"" % folder_path) |
190 |
203 |
191 @task |
204 @task |
192 def sync_web(version): |
205 def sync_web(version): |
193 print(green("sync web with version %s" % version)) |
206 print(green("sync web with version %s" % version)) |
194 export_path = export_version(version) |
207 export_path = export_version(version) |
195 do_sync_web(version, export_path) |
208 do_sync_web(version, export_path) |
196 create_config(export_path) |
209 check_folder_access() |
|
210 create_config(export_path) |
197 clean_export_folder(export_path) |
211 clean_export_folder(export_path) |
198 relaunch_server() |
212 relaunch_server() |
199 |
213 |
200 @task |
214 @task |
201 def sync_ldt(version): |
215 def sync_ldt(version): |
226 def sync_platform(version): |
240 def sync_platform(version): |
227 print(green("sync platform with version %s" % version)) |
241 print(green("sync platform with version %s" % version)) |
228 export_path = export_version(version) |
242 export_path = export_version(version) |
229 do_sync_ldt(version, export_path) |
243 do_sync_ldt(version, export_path) |
230 do_sync_web(version, export_path) |
244 do_sync_web(version, export_path) |
|
245 check_folder_access() |
|
246 create_config(export_path) |
231 clean_export_folder(export_path) |
247 clean_export_folder(export_path) |
232 relaunch_server() |
248 relaunch_server() |
233 |
249 |
234 @task |
250 @task |
235 def create_virtualenv(version): |
251 def create_virtualenv(version): |