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.