-
-
Save Gabitronics/6c1dc171288f8af8b2ba4890d659557d to your computer and use it in GitHub Desktop.
A Python Fabfile to deploy a wordpress site in a SSH
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import os | |
| from time import time | |
| from fabric.api import sudo, run, task, env, cd, get, local | |
| from fabric.context_managers import shell_env | |
| env.hosts = ['yourhost'] | |
| env.user = 'yoursshuser' | |
| env.password = 'yoursshpassword' | |
| # env.key_filename = '~/yourkey.pem' | |
| REPO_PATH = "/var/www/repopath" | |
| THEME_PATH = "{0}/wp-content/themes/yourtheme".format(REPO_PATH) | |
| UPLOADS_PATH = "{0}/wp-content/uploads".format(REPO_PATH) | |
| LOCAL_DOMAINS = ['http://domain.local', '//localhost:3000'] | |
| DEV_DOMAIN = 'http://{0}'.format(env.hosts[0]) | |
| POST_EXPORT_PATH = 'posts-exports/' | |
| @task | |
| def download_files(): | |
| local('ssh-add {0}'.format(env.key_filename)) | |
| local('rsync -avz --progress {1}@{0}:{2}/* ./wp-content/uploads/'\ | |
| .format(env.hosts[0], env.user, UPLOADS_PATH) | |
| ) | |
| @task | |
| def upload_files(): | |
| local('ssh-add {0}'.format(env.key_filename)) | |
| local('rsync -avz --progress --no-perms --omit-dir-times ./wp-content/uploads/* {1}@{0}:{2}/'\ | |
| .format(env.hosts[0], env.user, UPLOADS_PATH) | |
| ) | |
| @task | |
| def search_replace(): | |
| for domain in LOCAL_DOMAINS: | |
| run('wp search-replace "{0}" "{1}" --all-tables'.format(domain, DEV_DOMAIN)) | |
| @task | |
| def update_site(): | |
| upload_files() | |
| with cd(REPO_PATH): | |
| sudo('git pull origin master') | |
| search_replace() | |
| with cd(THEME_PATH): | |
| sudo('gulp dist') | |
| run('exit') | |
| @task | |
| def download_files(): | |
| local('ssh-add {0}'.format(env.key_filename)) | |
| local('rsync -avz --progress {1}@{0}:{2}/* ./wp-content/uploads/'\ | |
| .format(env.hosts[0], env.user, UPLOADS_PATH) | |
| ) | |
| @task | |
| def sync_posts(*posts): # Post IDs as arguments example. fab sync_posts:621,79 | |
| for post in posts: | |
| local('wp export --dir={0} --post__in={1} --filename_format={1}.xml'.format(POST_EXPORT_PATH, post)) | |
| local('git add {0}'.format(POST_EXPORT_PATH)) | |
| local("git commit -m 'Adding Posts {0}'".format(posts)) | |
| local('git push origin master') | |
| with cd(REPO_PATH): | |
| sudo('git pull origin master') | |
| for post in posts: | |
| run('wp post delete {0} --force'.format(post)) | |
| run('wp import {0}{1}.xml --authors=create'.format(POST_EXPORT_PATH, post)) | |
| search_replace() | |
| upload_files() | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment