VIP Quickstart is a local development environment for WordPress.com VIP developers. The goal is to provide developers with an environment that closely mirrors WordPress.com along with all the tools we recommend developers use.
- Ubuntu 12.04
- WordPress trunk
- WordPress.com VIP Shared Plugins repository
- WordPress multisite
- WordPress Developer Plugin and all VIP recommended plugins
- WordPress unit tests
- Custom WordPress.com modifications
- WP-CLI
- MySQL
- PHP
- Nginx
- PHPUnit
The first time you run the installer will be the slowest. It’s also the most dependent on the speed of your internet connection. This is because it has to download the virtual machine image, Ubuntu package updates, the full checkout of WordPress trunk, and the full VIP Plugins repository. Subsequent runs will only update this base.
If Subversion is installed to your local PATH, the init script (no matter what operating system you're using) will use that. If not, no worries; we'll just offload SVN to the VM.
If you’re on a Unix-based machine with a Bash shell, setup is pretty easy:
- Clone the VIP Quickstart Github repo
- Run the VIP init script:
./bin/vip-init
- Go to http://vip.dev in your browser, login with username: wordpress, password: wordpress
The init script is setup such that you can run it multiple times and nothing will break. This means that you can also use it to update your environment in the future. If parts of the system are already up-to-date it will just skip those parts of the installer. So if you manually keep WordPress trunk up-to-date by running svn up
, the init script will just show a message that the WordPress install is already at the latest changeset.
After installing all the requirements, complete the following steps to install VIP Quickstart.
Note: When you run the Git installer, make sure to install Git to your system PATH as the VIP Quickstart installer requires it.
- Clone the VIP Quickstart Github repo
- Run the
vip-init.bat
file inwbin
- Go to http://vip.dev in your browser
If you receive a File cannot be loaded because the execution of scripts is disabled on this system error. Make sure you're using a PowerShell interface. Use tools -> options to manage your default shell. (Right click on the repository and choose "Open a shell here")
- root:(blank)
- wordpress:wordpress
- wordpress:wordpress
The Vagrant CLI documentation will be useful for developers that haven't used Vagrant before. Since VIP Quickstart is built on top of Vagrant, the Vagrant CLI commands will also work.
Some useful commands:
vagrant up
- Start and provisions the VMvagrant halt
- Stops the VMvagrant reload
- Restarts and provisions the VMvagrant provision
- Provisions the VMvagrant ssh
- Logs into the VM with sshvagrant destroy
- Deletes the VM
VIP Quickstart comes with a checkout of the WordPress-Tests automated testing framework. You can use this to run the unit tests for WordPress itself or for any plugin or theme that has phpunit tests defined.
- CD to
/srv/www/wp-tests
from within the VM. - Run
phpunit
- Navigate to your theme or plugin within the VM. (eg.
/srv/www/wp-content/plugins/my-plugin
) - Use WP CLI to the generate the plugin test files. Eg.
/srv/www/wp-cli/bin/wp scaffold plugin-tests my-plugin
- Run
phpunit
inside your theme or plugin directory. - Start building your tests within the newly created
tests
directory.
If you want to add custom packages, install custom dotfiles, or make any other customizations, there are a few methods.
First, you can add a Vagrantfile to the ~/.vagrant.d
directory. Vagrant loads this before the Vagrantfile for the project so you can do things like install text editors or other tools, sync local directories to the VM, or anything else you might want to do to customize the environment. You can even add a shell provisioner to run your own shell script. One of the great parts about this method is that it will run on every Vagrant machine you used so all of your projects can benefit from it.
Another method is to add new manifests to puppet/manifests/sections
and they'll be automatically loaded. You'll probably want to add them to your .gitignore
file so they don't interfere with other git operations.
The puppet modules are all set up as submodules in puppet/modules
. In general, you shouldn't have to worry about this because the vip-init
script will update the submodules automatically. Just noting here for documentation purposes at this point.
Thanks to the following projects that VIP Quickstart is built on: