FOSSology Automation¶
Overview¶
Automation within the FOSSology project is driven by a core belief in continuous integration. Any time a developer makes changes to the code, the project's continous integration (CI) environment ensures that the new changes are integrated with the existing codebase and that all automated tests successfully run and packages get built. To make this work, there are some basic pieces available within a developer's sandbox as well as an external continuous integration environment managed by Jenkins.
The end-to-end process is the following:- Code is checked out and built via ‘make’ within a sandbox – developer or Continuous Integration (CI) via Jenkins
- Unit tests are run within a sandbox – developer or CI
- Functional tests are run within a sandbox – developer or CI
- Source installs occur on all supported platforms and functional tests are run against the “working” system (note: unit tests are not run)
- Packages are built and installed on all supported platforms and functional tests are run against the “working” system (note: unit tests are not run)
- “Success” is communicated if there are no errors, otherwise “Failure” is communicated with a clear indication of where the failure occurred to be fixed
Jenkins¶
Jenkins is a continuous integration server application written in Java that is used to automate various tests and other team activities.
Types of Automation¶
| Type | Description | Used in Developer Sandbox? | Frequency |
|---|---|---|---|
| Build | Makefiles used to compile the code, execute the tests, and package up the software and/or install it locally | Yes | All the Time |
| Unit Testing | "Push-button" automation focused on testing the code unit (the atomic piece of code) in isolation, not the interactions with other code, with as few dependencies as possible | Yes | Every Commit |
| Functional Testing | Automation focused on testing the interaction of several units together, not just one unit, and run both in and out of sandbox | Yes | Multiple times per day, not every commit |
| Packaging and Installation | Automation focused on testing the packaging and installation processes for both package- and source-installs across all supported platforms | No | Daily |
Build¶
Test Harnesses¶
FOSSology mostly uses the C and PHP languages to create the application. To facilitate the creation and execution of automated tests, test frameworks have been adopted by the team.
Integration Server¶
TBD describing fonightly.
Other Routine Tasks That Automation Provides¶
Code Documentation via Doxygen¶
The latest Fossology Code Documentation is generated daily from top of tree.
Database Schema Diagrams¶
The latest SchemaSpy database analysis is generated daily from the fonightly PostgreSQL database.
Test Statistics¶
- Number of tests
- Test Code Coverage analysis using LCOV/GCOV
CI Configuration in Subversion¶
TBD by Dan.