You are here: Foswiki>FESA Web>Fesa3CoreDevInfo>FESA3BuildsystemIdeas (11 Aug 2020, DominicDay)Edit Attach

Buildsystem for Automated Testing

A build system such as Jenkins can be used for test automation. This helps to detect issues in case of software changes. The system can not only be used to test the FESA framework itself but also FESA software. Automated tests can be scheduled on a daily basis or after source code repository changes. In case of conflicts the last committer can be notified automatically.

Requirements

For unit-testing the Framework
  • makefiles
  • libraries / headers for FESA framework dependencies (boost/zmq/cmw/cmx)
  • libraries / headers for the FESA core framework.
  • gtest installation (FESA 8.0.0 uses gtest 1.10.0, and a different build procedure)
For unit-testing FESA classes
  • FESA model
  • FESA code generation
  • a command line tool to synchronize FESA class source code from FESA designs
For integration-testing of FESA Deploy Units (a complete FESA installation)
  • resources / configuration files
  • a shell to run the FESA software
  • a shell to run the e.g. google test
  • Mocked hardware interface, Simulated Timing

Workspace Build Solution

The Jenkins server is used to build all jobs from source. The build artifacts of a job are stored in that job's workspace. Jobs that depend on the artifacts generated by a previous job mut be configured to use the previous job's workspace.

The jenkins label "el7fesa" is a single node reserved for FESA. Limiting all jobs to a single node allows jobs to share artifacts via workspaces.
Location of dependencies

For Example cmw-data is normally installed at /opt/cern/cmw/cmw-data/x.x.x

On the buildserver, it is at ($jenkinsroot)/fesa3/cmw/cmw-data-cpp/build/

In a job that depends on cmw-data, makefile variables must be overrriden to point at this location
Version of dependencies:

A FESA release requires specific versions of dependencies that need to be carried over to checkout specific git tags in the dependency jobs

Jobs

Status for FESA3 8.0.0:

https://builder.acc.gsi.de/jenkins/job/fesa3/

Todo1 versioning of CMW dependencies, saftlib, device-server-framework, fesa-core gtest

Todo2 codegen, model, fesa3 commandline

Todo3 resources, build pipelines

Alternative Approaches

Building artifacts and storing to NFS (binary repository)

RPM installation of stable FESA releases on build server

Containers
  • Container for specific FESA Release version / architecture (for FESA class testing)
  • Containers for stable dependencies only

Open Issues

  • how to run tests which involve communication with hardware?
  • instance files for buildserver?
  • running without the database

Infos

Topic revision: r2 - 11 Aug 2020, DominicDay
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Foswiki? Send feedback