Skip to content
This repository has been archived by the owner on Sep 27, 2022. It is now read-only.

kjlubick/DevOps-Project

Repository files navigation

###Build

Build Status Coverage Status

Dependencies (and the rest of the build process) are managed by Maven. To build:

  1. Install Maven.
  2. Clone repository. Navigate a command prompt to the folder.
  3. Run mvn clean install, which will build and install all three projects.

Useful Maven Commands:

  • Run mvn clean install from parent directory to do a full build.
  • Run mvn eclipse:eclipse to build an Eclipse project for one of the modules.
  • Run mvn eclipse:eclipse -DdownloadSources=true -DdownloadJavadocs=true to build an Eclipse project with javadocs and sources linked.
  • Run mvn clean compile assembly:single in one of the module folders to build a jar with dependencies included source
  • Run mvn test jacoco:report from parent directory to run tests and generate a jacoco coverage report.
  • Run mvn findbugs:findbugs from parent directory to generate xml findbugs reports

###Test The primary component in our project that we are interested in testing is the spreadsheet analyzer. We wrote several unit tests for this component. We supplemented these tests with Randoop, a constraint-based test generation package, to increase test coverage and generate regression tests for this module. Our original tests were pretty thorough, so the generated tests only increased our coverage by a little bit.

Here is a screenshot of the Randoop configuration process. randoop

We used jacoco and coveralls to measure and report on test coverage. The reports are available at this link here: Coverage Status.

###Analysis We configured our build process to run FindBugs on our code. This was easily achieved by using the Findbugs maven plugin and adding it to our pom. We also created a custom FindBugs detector that makes warnings if non-trivial methods lack comments - the longer the method, the more severe the bug.

If any "high" severity bugs with a bug rank of 15 or lower are detected, the build fails: image

Additionally, we wrote a small script that will fail the build if test coverage isn't high enough, specifically, if any class has more than 100 total uncovered statements, although this is a tunable parameter.

image

##Previous Milestones##

###Build### Travis CI Initially we configured our build to run on Travis CI

Jenkins Since Travis CI did not meet the project requirements, we created a Jenkins server running on a local vagrant machine. Here is a screenshot of the web interface:
image

As indicated above, Maven manages our dependencies and the Jenkins server uses Maven to run the build process using. Here is a screenshot of a successful build notification.

image

Because we are running this locally, that is, without a public ip address, we could not setup a git hook. However, we set up a Git poll that simply pings the GitHub repository every 15 minutes (this is adjustable) and makes a build if there are changes

image

We created a slave vm (also using vagrant) that the master connects to via SSH to setup and execute tasks:
image

Here is a screenshot of the log when "slave 3" picked up a build job: image

Our Jenkins config file and the config file for our job are found under jenkins/.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published