For this milestone, you will work in teams of 4 people.
In this milestone, you will complete the following tasks:
- Provisioning and configuring an jenkins server, automatically using ansible.
- Using jenkins-job-builder + ansible, setup build jobs for two applications:
- A nodejs web application checkbox.io.
- A software "enterprise" Java system iTrust
- Demonstrate a passing build for each job.
- Setup up a
post-build action
that runs ansible scripts to provision and configure a VM for running each application.
Abide by the following constraints:
- Be able to setup jenkins configuration files and job files automatically (e.g., using templates/jenkins-job-builder).
- Overcome challenges of automation, such as turning off jenkins setup wizard, and handling authentication.
- For provisioning, use a remote VM, such as one from digital ocean or AWS.
- For checkbox.io build job, it is sufficient to run
npm install
. - For iTrust build job, verify that
mvn clean test verify checkstyle:checkstyle
works. - Demonstrate that checkbox.io works in a browser.
- Demonstrate that iTrust works in a browser.
checkbox.io is a site for hosting simple surveys created in markdown. It has dependencies on nginx, node, monogodb.
The following are environment variables that are required to be set:
- MONGO_PORT
- MONGO_IP
- MONGO_USER
- MONGO_PASSWORD
- MAIL_USER
- MAIL_PASSWORD
- MAIL_SMTP
iTrust2 is a java application used in the undergrad software engineering system. It using enterprise Java technology. It has a rich set of unit tests.
Using the following guide, to create an ansible script that can prepare a system to run iTrust.
Tips:
mvn process-test-classes
builds the database and creates sample data.mvn jetty:run
launches the server so it can be used like you'd expect.mvn clean test verify checkstyle:checkstyle
runs the unit tests, launches the server, runs the integration tests, and then brings the server back down.- Note that you cannot run
mvn process-test-classes jetty:run
as a single command theHibernateDataGenerator
doesn't nicely terminate without aSystem.exit(0);
at the end.
As you learn how to setup configuration management for these to projects, document the experiences you have in learning about setting up the system and the issues you had in replicating this process automatically. This can be described in your submission's README.md.
- Jenkins automation - 20%
- checkbox.io + iTrust.io build jobs - 20%
- iTrust post-build configuration - 20%
- checkbox.io post-build configuration - 20%
- Screencast and report - 20%
Points may be deducted for not following instructions, poor quality of implementation, or failing to include sufficient detail required to evaluate capability.
Points will be deducted for non contributing members.
Submit a link to your repository that includes:
- your team (Unity Ids of everyone and their contribution)
- your ansible scripts
- a README.md, with your report details,
- screencast that demostrates each evaluation criteria.
Submit only once per team.
Tip: If you want to reuse the same repo for your whole project, then create a branch for each milestone.
Due Friday, Feb 23rd, before midnight.