This is a minimal-ish set of instruction to set up a freshly imaged OS X workstation for working on Diego. If you've already used the Pivotal sprout recipes to provision your machine, you might have a bad time.
These are nice for the core developer team, feel free to skip this section:
- Download Chrome using Safari, and install it.
- Download Wraparound from the web.
- Download
ShiftIt.zipfromgithub.com/onsi/shiftit. - Get Flycut from the App Store.
- Download iTerm 2 from the web.
- Download Homebrew using a browser, and install it.
- This will prompt you to accept installation of Xcode developer tools as well.
- Download Sublime Text 3 from the web.
- To enable the
sublcommand line tool, you'll need to create a symlink. Google it.
brew install gobrew install rubybrew install mysqlbrew install postgresql
MySQL and PostgreSQL are needed for work on Cloud Controller, the BOSH micro CLI plugin, and maybe other things. To ensure MySQL and PostgreSQL services are always running, you'll need to do the following (true at the time this was written):
$ ln -sfv /usr/local/opt/mysql/*.plist ~/Library/LaunchAgents
$ launchctl load -w ~/Library/LaunchAgents/*mysql*
$ ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents
$ launchctl load -w ~/Library/LaunchAgents/*postgresql*
In order to work with Cloud Controller, you will need to create a postgres role in the database with the appropriate permissions:
$ createdb
$ psql
> create role postgres with createdb login superuser
You need some similar setup with MySQL:
$ mysql -u root
> set password for 'root'@'localhost' = password('password');
We use direnv to make setting the PATH and GOPATH easier as we switch between projects. You can get it with brew install direnv. If you cd into a directory using an .envrc, you will be asked to explicitly allow it, so it will automatically alter your environment without your consent.
For convenience, you can create/update your ~/.gitconfig and ~/.bash_profile to look like the two other files in this Gist. Create a ~/.git-authors file if you're using the git-duet gem to pair authors and committers on commits. The one below shows a sample of what it will start to look like.
Follow the README instructions at github.com/cppforlife/checkman to install it. This tool allows you to monitor the status of builds in a "Checkfile". The Diego checkfile is in a private repository.
- Clone
git@github.com:pivotal-cf/diego-checkman.gitinto the~/Checkmandirectory. This will allow Checkman to show you the status of the Diego builds. - Create a directory
~/workspaceand clonecloudfoundry/cf-release,cloudfoundry-incubator/diego-release,cloudfoundry/bosh-liteandconcourse/concoursein your workspace.
The code we work on will be in the diego-release and cf-release repositories (and their submodules). bosh-lite provides a local environment to which we can deploy both release and run acceptance tests. concourse will provide the fly CLI, enabling us to run builds using a local VM running the Concourse CI system.
Get them from the web.
gem install bosh_cli- Follow the README instructions in the repo to get the box up and running
- You may need to
brew install wgetto download a warden stemcell to use for your BOSH Lite deployments
- Make a directory (e.g.
~/deployments/concourse,cdinto it, issue avagrant init concourse/liteand thenvagrant up. export ATC_URL=http://192.168.100.4:8080- Go to the
~/workspace/concoursedirectory, andgo install github.com/concourse/fly.
Some of our older scripts use spiff to generate deployment manifests for cf-release and diego-release. Download the latest release from Github at https://github.com/cloudfoundry-incubator/spiff.