SE 3800 CI Project
        
      
    
For this assignment, build a CI system for your SDL project as illustrated
by the project diagram. Ideally a CI system
would include all elements: an automated trigger to identify when changes
have been submitted to the repository, an operation to download the current
files to the CI system, a build that includes creating an executable image
and running that image on tests, and a deployment to a staging host. The
staging host would then allow testing by the users, including installing
the application on mobile devices or downloading installation packages on
standard computers. Testing is to include both functional (system) and
acceptance (scenario) testing. All testing must be fully automated.
The deliverables are
- Diagrams showing the CI architecture and workflow.
 - Either a demonstration of the workflow for your instructor or
  screenshots capturing evidence that your workflow is working. Screenshots
  should show the complete chain along with evidence that it is
  working and that components can fail. Be sure to circle and label
  the bits that show what is working or not working.
 - A tutorial explaining how you set up your component. Each
  student 
  should write their tutorial for their portion. If tutorials need to
  depend on each other, make sure that dependency is documented. Include
  pictures as necessary. You can assume the reader is familiar with
  general operations such as writing script files, setting variables, or
  installing packages using tools like apt-get, but do not assume
  lots of familiarity with TeamCity or Jenkins.
 - A one to two page writeup describing how your portion of the CI setup
  integrates into the whole (including what it does), how you chose the
  technologies you used, your experiences in setting it up, and any
  limitations you observed.
 
Each team member is responsible for setting up at least one major
component. But note if the portion you set up is too small, you will have
difficulty writing a solid report. If you are unsure of whether you have
done enough for this assignment, talk to your instructor!
      
Acceptance Criteria
To be complete, your portion of the test configuration must have the
following characteristics:
- It must be possible to fail your tests. That is, you must be able to
  make changes to the system which result in your tests failing and which 
  in turn cause the CI build to fail. Better quality tests will catch more
  subtle errors; if you need to completely delete a major component of your
  system to cause a build error then your test is probably too fragile.
 - It should be possible to pass your tests. Again, it should
  not be necessary to remove whole subsystems or to introduce large amounts
  of non-deliverable code to get the tests to pass. If the tests fail due
  to work that needs to be completed by teammates (such as a major story
  that will not be completed for several sprints), check with your
  instructor to see if there is an alternative solution.