Setup New Development Environments

I frequently setup new development environments and/or work from new/existing machines. To completely replicate my machine, I use a script and some pretty innovative cloud tools to get setup new development environments and running extraordinarily fast with no manual installation or configuration.

# Install Homebrew & Cask
/usr/bin/ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)”
brew tap caskroom/cask
brew update && brew upgrade && brew prune && brew cleanup

# Install Essential OSX Applications
brew install mackup keychain
brew cask install –force –appdir=/Applications/Dev docker phpstorm sourcetree transmit sublime-text
brew cask install –force –appdir=/Applications firefox google-chrome imageoptim franz openoffice google-backup-and-sync dropbox

# Change shell to Zsh & Use Oh-My-Zsh
zsh –version
chsh -s $(which zsh)

# Restore All Content by signing into iCloud, iCloud Photo Library, iTunes

# Automagically Configure OSX Settings via Mackup
nano ~/.mackup.cfg
# [storage]
# engine = icloud
mackup restore

From here, my development workflow consists of using Sourcetree to pull Bitbucket or Github repositories for local development.

Each repository is architected with docker at the core so I run some simple command scripts contained in each repository to replicate development, staging and production servers directly on my machine.

Each project is completely immutable meaning I can git pull the entire architecture, develop some code, commit & test, rebuild the remote environment with new code, and remove the project repository from my local machine.

Pretty neat, huh?