Git based code deployment on Big Scoots

Many of our food blogger clients are hosted with Big Scoots, a popular managed WordPress host.

Their portal includes one-click push between your production and staging environments, which is great for testing code changes before deploying on your production site.

With a bit of work you can create a git-based deployment workflow similar to WPEngine. I’ve also written a similar article for using git with SpinupWP.

If everything below looks too technical, I highly recommend using the WP Pusher plugin. It’s incredibly easy to use, free for public repos, and reasonably priced for private repos. We use WP Pusher for any clients not hosted with Big Scoots or WPEngine.

Setting up git for production

Open a support ticket requesting git to be setup on the server and include your public key. They will respond back confirming it has been installed and provide you with SSH access to the server.

Open Terminal and use ssh to connect to your server (ssh -p2222 [email protected]). We’ll follow this guide to setting up git on the server.

We’re going to set up a bare git repository in the site directory. We want to create it in clientname.com , not clientname.com/public.

By keeping it outside the public directory we won’t have any issues with the “Push Live to Staging” or “Push Staging to Live” features – they move the contents of the public directory.

  1. Navigate to the site directory. If the website is clientname.com, type cd domains/clientname.com
  2. Create a bare repository. git init --bare project.git
  3. Create the post-receive hook. touch project.git/hooks/post-receive
  4. Add execute permissions to the post-receive hook. chmod +x project.git/hooks/post-receive
  5. Edit the post-receive hook (vi project.git/hooks/post-receive) and add the following to it. Make sure you update the two paths at the top to match your environment
#!/bin/bash TARGET="/home/nginx/domains/clientname.com/public" GIT_DIR="/home/nginx/domains/clientname.com/project.git" BRANCH="master" while read oldrev newrev ref do # only checking out the master (or whatever branch you would like to deploy) if [ "$ref" = "refs/heads/$BRANCH" ]; then echo "Ref $ref received. Deploying ${BRANCH} branch to production..." git --work-tree=$TARGET --git-dir=$GIT_DIR checkout -f $BRANCH else echo "Ref $ref received. Doing nothing: only the ${BRANCH} branch may be deployed on this server." fi done
  1. Add the remote repository to your local environment
cd ~/path/to/working-copy git remote add production ssh://[email protected]:2222/~/domains/clientname.com/project.git
  1. Push code to the production server git push production master

Setting up git for staging

You can use the exact same approach outlined above to setup git on staging.

If you haven’t created a staging environment yet, log into the BigScoots Portal, go to your site, and click “Create Staging”.

Once the staging site has been created, ssh into the server and navigate to the staging site’s directory. Using the clientname.com example above, the staging environment would be named clientnamecom.bigscoots-staging.com

Once you have everything setup on the server, go back to your local environment and add the staging remote

git remote add staging ssh://[email protected]:2222/~/domains/clientnamecom.bigscoots-staging.com/project.git

Bill Erickson

Bill Erickson is a freelance WordPress developer and a contributing developer to the Genesis framework. For the past 14 years he has worked with attorneys, publishers, corporations, and non-profits, building custom websites tailored to their needs and goals.

Ready to upgrade your website?

I build custom WordPress websites that look great and are easy to manage.

Let's Talk

Reader Interactions

Leave A Reply