I have explained how to push your code to your own git server and after this you may want to execute some especific functions, in my specific case I wanted my code to be builded and to release a new version, so I used post-receive hook from my repo.
Oh, it also handle multiple versions keeping the last 3 versions of the release. To do this it uses your DEPLOY_PATH and create a new folder sources on it, which will have your versions and a live folder which is a symlink to the version which is running.
Vars:
REPO_PATH = Path to your git folder
DEPLOY_PATH = Path to your destiny folder
DEPLOY_BRANCH = Branch you want to deploy
#!/bin/bashREPO_PATH=/home/someuser/test.git
DEPLOY_PATH=/var/www/
DEPLOY_BRANCH="master"echo"REPO_PATH=$REPO_PATH"echo"DEPLOY_PATH=$DEPLOY_PATH"while read oldrev newrev refname
do
branch=$(git rev-parse --symbolic--abbrev-ref$refname)if[$DEPLOY_BRANCH=="$branch"];then
TIMESTAMP=$(date +%Y%m%d%H%M%S)VERSION_PATH=$DEPLOY_PATH/sources/$TIMESTAMPLIVE_PATH=$DEPLOY_PATH/live
echo"TIMESTAMP=$TIMESTAMP"echo"VERSION_PATH=$VERSION_PATH"echo"LIVE_PATH=$LIVE_PATH"mkdir-p$VERSION_PATHmkdir-p$VERSION_PATH/sources
git --work-tree=$VERSION_PATH--git-dir=$REPO_PATH checkout -f$DEPLOY_BRANCH# Remove git filesrm-rf$VERSION_PATH/.git
rm-rf$LIVE_PATHln-s$VERSION_PATH$LIVE_PATH# Delete old folder keeping the 3 most recent ones, which aren't the current live one, / (root, security measure, different from your source folder)rm-rf$(ls-1dt$(find -L$DEPLOY_PATH/sources/ -maxdepth 1 -type d !-samefile / !-samefile$DEPLOY_PATH/sources/ !-samefile$LIVE_PATH-print) | tail-n+3)fi
done
I’m creating a new server as you can notice and I would like to push directly to my git (hosted on my own server), so I could release a new version with a simple git push myserver branch.
If you want to achieve this as well you can connect to your remote ssh and execute
$ mkdir test.git
$ cd git
$ git --bare init
You will need to know the full path of your git folder to add to as a remote on your local, to check the full path run pwd. Back to your local machine add your remote server.
I’m migrating my blog and a few other stuff I have running to Amazon infrastructure. I needed an Amazon EC2 instance with PHP support and able to connect to a MySQL.
After a few good years with my blog out of date, I decided to start to write again and to migrate it to Heroku since his server was with a really old stack. I decided to use Heroku, Amazon RDS as Database service and S3 as file storage (for uploaded files)
Steps:
Disable all Wordpress’ extensions
Do a full backup (Wordpress, Database, Uploads, etc)
Send your code to Heroku using the repository you have created
Access your website
If you’re updating your Wordpress, there are chances to something go wrong or to some plugin to stop working with the new Wordpress version, so don’t forget to check and update them.
Also, if you have any other question or need more information a specific test, let me know. I can try to help.