Tools and Workflow - SigmaChiDeltaPhi/site GitHub Wiki

#Overview

##Issues

For tracking things like bugs, new features, and other tasks, we can use GitHub's built-in Issues feature. On top of that, there's a Chrome extension called ZenHub that adds a simple Agile/Kanban board utilizing the standard issues. By combining these, we can easily record tasks/ideas when they come up, categorize them, break them up into chunks, and track their progress. If we decide to go this route, we'll probably want to document the specific process a bit more, but for now, here's a basic workflow:

  1. Topic needs to be tracked, create an issue
  2. Assign appropriate (priority, category, progress) labels
  3. All issues go into the "Backlog" by default
  4. When we're ready to begin a sprint/iteration, add issues to the appropriate board
  5. When an issue is complete, and ready for testing, update labels/boards (Depending on our workflow, we may want a separate "staging" step before deploying)
  6. When testing is done/code is integrated, close issue and final label update
  7. If an issue needs to be reopened, it can be updated and dropped back into a board

##Environment

####LAMP The actual stack that we'll be running the site on. Since this is what the current site runs on (I think), it'll be an easy transition on the Dreamhost side. We'll want to have our local environments set up to mirror this. BigTree requires the following:

Apache

  • mod_rewrite

MySQL 5+

PHP 5.3+

  • mysql extentsion
  • gd extension
  • ftp extension
  • In php.ini: gpc_magic_quotes = Off, file_uploads = On, short_open_tag = On

####VM Manager Depending on how uniform we want out environments to be, we may want to consider using a tool like Vagrant.

Vagrant makes it easy to create identical, portable, virtual environments. Can use various providers (Virtual Box, VMWare) and provisioners (Chef, Puppet). Once the vagrantfile is created, it can be shared and used to reproduce the same development environment for all local machines. If the local environment is designed to match production, then testing and deployment are even easier.

####Configuration Manager Something like Vagrant manages building the actual the VM, but a standard VM image doesn't necessarily have all the packages we need. For this, we can use an automated provisioning tool. Some examples are Ansible, Chef, and Puppet.

We can also just use a shell script to pre-load some libraries, but if the environment gets more complex, another tool might help