There are a number of features related to projects that alter how builds are handled later on. For one, each project has an admin group and a dev group. Any user in the admin group have full access to control the project same as the owner/user of the project has. The dev group identifies users that are developers for the project, and grants added permission to work with the project (i.e. submit builds, etc).
Projects also have a ‘vcs_handler’ and a ‘bug_handler’. Handlers tell MonkeyFarm how to handle certain operations, and are configured system wide by the MonkeyFarm administrator. An example of a vcs_handler would be the monkeyfarm.git plugin which provides the ability to checkout sources from a Git repo. When a project specifies their vcs_handler it becomes a hard codes path for each package to have a repo at that location (determined by the vcs_provider). This will make more sense when we look at ‘packages’.
$ mf vcs-handler listall
git
bzr
svn
$ mf bug-handler listall
launchpad
bugzilla
github
$ mf project create -l my-project \
--display-name "My Project Title" \
--vcs-handler=git \
--bug-handler=bugzilla
$ mf project update my-project --url=http://example.com
$ mf project update my-project --admin-group my-group --dev-group mf-everyone
$ mf project delete my-project
List all projects that I own, or whose admin/dev group I belong to:
$ mf project listall
test2
my-project
$ mf project listall -f test
test2
List only projects that I own:
$ mf project listall --mine
my-project
List all available projects:
$ mf project listall --all
my-project
test
test2
$ mf project listall --all -f test
test
test2
$ mf project show my-project
Label | my-project
Display Name | My Project Title
Owner | john.doe
Admin Group | my-group
Dev Group | mf-everyone
Created On | 2010-11-30 19:09:28
Last Update | 2010-11-30 19:09:28
URL | http://example.com
VCS Handler | git
Bug Handler | bugzilla
Most users generally work on one project at a time... so to make working with multiple projects easier there is the ‘workon’ command to ‘mf’. This caches the project you want to work on, so that you don’t need to pass ‘–project’ with every other command.
$ mf build listall
MFArgumentError > A project label is required
$ mf workon my-project
$ mf status
User | john.doe
Connection | default
Project | my-project
$ mf build listall
php52-5.2.14-1.el5
mysql50-5.0.91-1.el5