Using Jenkins for Continuous Integration, Automated Testing, Continuous Delivery · 2016-06-08 ·...

Post on 02-Jun-2020

12 views 0 download

Transcript of Using Jenkins for Continuous Integration, Automated Testing, Continuous Delivery · 2016-06-08 ·...

Using Jenkins for Continuous Integration,

Automated Testing, Continuous Delivery

Ron Fowler

STFC

Content

• The advantages of Continuous Integration

• The Jenkins service on CCPForge & local server

• The Jenkins dashboard and configuration

• Aims for the Jenkins service

• Current status

Software development

• Version control system to maintain consistent source

code: SVN, GIT, etc.

• Allows separate branches/tags for release versions

and development versions.

• Does not address testing and building of release

versions.

• Build servers allow automated testing/building.

Benefits of Continuous Build Server

• Instant feedback on code “correctness”

– Does the whole package still compile on the current

architecture?

– Does the code compile on other architectures?

• Feedback on code quality

– e.g. doxygen comments, pylint, mlint reports

Benefits of Continuous Build Server (2)

• Test code correctness

– Regression testing, unit testing, integration testing, etc. e.g.

gadgetron unit & integration tests, STiR test suite.

• Build modules with latest features

– Automated compile and link can provide packages for users

to download and test. Build server can work over multiple

architectures, e.g. Linux, MacOSX, Windows.

– Possibly build “docker” releases.

Jenkins Build Server

• Open source Build server

• Java with web interface

• Support by CCPForge

• Large range of plugins

• CCPForge server on CentOS7

• Currently working with CentOS6 based server

– Local server, may make Matlab testing easier?

7

8

9

10

Aims for the build service

• Initial focus on building the Python/Matlab interfaces,

running simple tests based to demo scripts.

• Do not intend to build unit/integration tests of

Gadgetron or test suite of STiR.

• Wish to automate binary distributions of packages for

Linux and Windows.

• Provide code metric though pylint/mlint etc.

Current status

• Build server set up to monitor git repo of the

xGadetron extensions.

• Checks hourly for new updates if found runs script

• Build not yet working - clashes with HDF5 versions

(sys vs Anaconda)

• Looking to modify demos for basis of integration

tests.