Continuous Integration and Automatic Testing for the FLUKA release using Jenkins (and Docker)



Similar documents
DevOps. Building a Continuous Delivery Pipeline

Jenkins Continuous Build System. Jesse Bowes CSCI-5828 Spring 2012

How Bigtop Leveraged Docker for Build Automation and One-Click Hadoop Provisioning

Automated build service to facilitate Continuous Delivery

Continuous Integration and Delivery at NSIDC

Building a Continuous Integration Pipeline with Docker

Continuous Integration

DRUPAL CONTINUOUS INTEGRATION. Part I - Introduction

A central continuous integration platform

My DevOps Journey by Billy Foss, Engineering Services Architect, CA Technologies

Acronis Backup & Recovery 10 Server for Linux. Installation Guide

ovirt self-hosted engine seamless deployment

Continuous integration with Jenkins CI

CS197U: A Hands on Introduction to Unix

APPLICATION NOTE. How to build pylon applications for ARM

TEST AUTOMATION FRAMEWORK

Software configuration management

Acronis Backup & Recovery 10 Server for Linux. Update 5. Installation Guide

Pipeline Orchestration for Test Automation using Extended Buildbot Architecture

Continuous Delivery on AWS. Version 1.0 DO NOT DISTRIBUTE

Continuous Integration

Jenkins: The Definitive Guide

Jenkins World Tour 2015 Santa Clara, CA, September 2-3

Continuous Integration. Wellcome Trust Centre for Gene Regulation & Expression College of Life Sciences, University of Dundee Dundee, Scotland, UK

Beginners guide to continuous integration. Gilles QUERRET Riverside Software

DevOps Course Content

Best Overall Use of Technology. Jaspersoft

Paul Barham Program Manager - Java. David Staheli (dastahel@microsoft.com) Software Development Manager - Java

Standards and Open Source: Trends Affecting Microsoft and You. October 9, :00 am 8:50 am

SOFTWARE DEVELOPMENT BASICS SED

Beginner s guide to continuous integration. Gilles QUERRET Riverside Software

Deploying SecureCloud SaaS in a vcloud Environment

Running a Program on an AVD

Continuous Integration using Docker & Jenkins

How to Build an RPM OVERVIEW UNDERSTANDING THE PROCESS OF BUILDING RPMS. Author: Chris Negus Editor: Allison Pranger 09/16/2011

IKAN ALM Architecture. Closing the Gap Enterprise-wide Application Lifecycle Management

RTI Quick Start Guide for JBoss Operations Network Users

Source Code Review Using Static Analysis Tools

Continuous Integration and Deployment Modern Technique's

Continuous Integration Processes and SCM To Support Test Automation

AlienVault Unified Security Management (USM) 4.x-5.x. Deploying HIDS Agents to Linux Hosts

Intro to Docker and Containers

Yocto Project Eclipse plug-in and Developer Tools Hands-on Lab

IBM Endpoint Manager Version 9.1. Patch Management for Red Hat Enterprise Linux User's Guide

Acronis Backup & Recovery 10 Server for Linux. Installation Guide

@jenkinsconf. Maintaining huge Jenkins clusters - Have we reached the limit of Jenkins?

Application Release Automation (ARA) Vs. Continuous Delivery

Source Code Management for Continuous Integration and Deployment. Version 1.0 DO NOT DISTRIBUTE

Version Control with Subversion

Introduction to Android Development. Jeff Avery CS349, Mar 2013

Security Automation in Agile SDLC Real World Cases

DJANGOCODERS.COM THE PROCESS. Core strength built on healthy process

Cisco UCS CPA Workflows

Zero-Touch Drupal Deployment

Massey University Follow Me Printer Setup for Linux systems

Escaping the Works-On-My-Machine badge Continuous Integration with PDE Build and Git

Part I. OpenCIT Server

Source Control Systems

Developer Workshop Marc Dumontier McMaster/OSCAR-EMR

Building, testing and deploying mobile apps with Jenkins & friends

Content. Development Tools 2(63)

Efficient Automated Build and Deployment Framework with Parallel Process

Continuous Integration Multi-Stage Builds for Quality Assurance

RTI Quick Start Guide

Git Fusion Guide August 2015 Update

Continuous Integration

Load and Performance Load Testing. RadView Software October

Continuous Integration: A case study

Continuous Delivery for Alfresco Solutions. Satisfied customers and happy developers with!! Continuous Delivery!

Continuous Integration and Bamboo. Ryan Cutter CSCI Spring Semester

Basic Linux & Package Management. Original slides from GTFO Security

XenServer Pool Replication: Disaster Recovery

D5.4.4 Integrated SemaGrow Stack API components

Copyrighted , Address :- EH1-Infotech, SCF 69, Top Floor, Phase 3B-2, Sector 60, Mohali (Chandigarh),

Practicing Continuous Delivery using Hudson. Winston Prakash Oracle Corporation

Linux Distributions. What they are, how they work, which one to choose Avi Alkalay

Continuous Keylane

Automating Business Processes Using SharePoint Designer

Continuous Integration (CI) and Testing - Configuring Bamboo, Hudson, and TestMaker

Version Control with Subversion and Xcode

ECT362 Installing Linux Virtual Machine in KL322

WHITE PAPER. Getting started with Continuous Integration in software development. - Amruta Kumbhar, Madhavi Shailaja & Ravi Shankar Anupindi

Single Node Hadoop Cluster Setup

Software Configuration Management and Continuous Integration

Continuous Integration and Delivery. manage development build deploy / release

Mastering Continuous Integration with Jenkins

ALERT installation setup

FUJITSU Cloud IaaS Trusted Public S5 Setup and Configure yum Software Package Manager with CentOS 5.X/6.X VMs

Automated Configuration of Open Stack Instances at Boot Time

McAfee Threat Intelligence Exchange Software

Jenkins User Conference Herzelia, July #jenkinsconf. Testing a Large Support Matrix Using Jenkins. Amir Kibbar HP

Acronis Backup & Recovery 10 Server for Linux. Installation Guide

Windows Template Creation Guide. How to build your own Windows VM templates for deployment in Cloudturk.

Continuous Integration (CI) for Mobile Applications

Break It Before You Buy It!

OpenStack CI: flow, tools and more

<Insert Picture Here> Introducing Hudson. Winston Prakash. Click to edit Master subtitle style

Notes for Installing RedHawk 6.3 with Red Hat Enterprise Linux 6.3. Installation Notes. November 6 th, 2014

Installation & Upgrade Guide

NXTware Remote. Advanced Development and Maintenance Environment for OpenVMS and other Strategic Platforms

Transcription:

Continuous Integration and Automatic Testing for the FLUKA release using Jenkins (and Docker) Vittorio BOCCONE DECTRIS Ltd. 5405 Baden-Daettwil Switzerland www.dectris.com

Definitions Continuous Integration (CI) is a development practice that requires developers to integrate code into a shared repository several times a day. At each iteration the code is then verified by an automated build system, allowing teams to detect problems early. Continuous Delivery (CD) is a design practice used in software development to automate and improve the process of software delivery

The Integration Eldorado

Continuous Integration tools Continuous Integration tools (CI) are software packages which orchestrate the build process and automate the building, testing, archiving and (eventually) deploy procedures. Functions: - Automate repetitive and error prone task; - Automate builds and test for each commit; - Execute test; - Archive artifacts; - Handle and log building report. - Report failure and possible culprits.

CI implementation Reliable Builds: - Creation a new expandable builders (Docker containers); - The builder live only the time to build the code and than is purged. Avoid dependencies misalignment: - Encode the dependencies source code; - Satisfy the dependencies just before building using the packages in the YUM repository; - Dependencies will also be inherited by the produced RPM package; A positive byproduct is that we could define a fluka-toolchain package whose dependencies solve the installation problems for the most common distributions (RH-like and Debian-like) Monitor and Evaluate the code development: - Handle the testing of the code; - Monitor the code health status; - Log the Building, Testing and Error reports.

report Test commit fetch Example of CI implementation at DECTRIS Git SCM fetch Fresh Builders CI Tool Example @ DECTRIS Main Software Components jaun eiger YUM RPM Repositories dectris-corelib dectris-boost dectris-hdf5 eiger-firmware eiger-tools jaun-ui Testing

Why Jenkins? Why Docker? Jenkins (automation tool) - Relatively OS independent as it works on everything where an SSH connection or a Java apps can be run; - Integrate with SVN/Git and bug tracking tools (Jira) - Free version extendable to an Enterprise version. Cost is based on the size of the CI infrastructure; - Easy to install, setup and maintain (no hidden cost for IT); - Fastest growing tool in CI community, yet stable. Docker (lightweight Linux container alternative to VMs) - Fresh Linux container (Ubuntu, CentOS, Fedora...) in matter of seconds; - Free version extendable with plugins; - Easy to install, setup and maintain (no hidden manpower cost); - Easy to use, new clean development environment on the fly (no it needed to request a dedicated VMs); - Fastest growing tool in VM community, yet stable.

Continuous Integration @Dectris Tools - Jenkins as Continuous Integration manager. - Docker for the Linux builder infrastructure. Requirements - Each component must be in a versioning scheme and in a SCM; - Each (meaningful) build should be tracked and defined. - The components workflow should be defined and clear; Automatic Testing - Unit, Integration and Functional testing. - Test with real simulation input files batteries - Report generation Debugging - Automatic reporting and identification of culprits. Important: Tools are just tools and we should be flexible in case we would need to replace one tool with another

Continuous Integration @Dectris Continuous integration and Science - Dectris is PSI spin-off and produces X-Ray detectors for the synchrotron, laboratory and industry market; - Application of Continuous Integration methods does not only apply strictly to software development but also to simulation and calibration projects; Scientific Software Development @Dectris - Software Core Team:6 developers (mostly physicist) + 1 (IT); - 60-70 packages supported (external customers + internal user) + hundreds of scripts for detector and sensor testing and calibration; - Scientific software and simulation support to the other groups (Development, Support and Production groups); - Need reliable quality assurance methods in the production phase.

Minimal CI workflow Commit to SCM Automated Procedure Trigger Build Build Pass U/F Test Pass Archive Artifact (RPM) Fail Notify Build Failure Fail Notify Test Failure Trigger Code Test Test #1 Report Generation ` Test [...] YUM RPM Repository Test #N

Extended CI workflow Automated Procedure Commit to SCM Trigger Build Build Pass U/F Test Pass Trigger Code Test Fail Fail Notify Build Failure Notify Test Failure YUM RPM Repository Report Generation Archive Artifact (RPM) Notify Integration Failure Fail Pass Release? Result Test #1 Test [...] Test #N

Example: FLUKA deployment test Process - Take the generated artifacts (RPMS and tarballs) - Apply the installation procedure: - rpm: yum install <package> - tarball: tar -zxvf <tarball> export FLUPRO=/path/to/fluka export FLUFOR=g77/gfortran make RPM Jenkins s job - Matrix job with two axis OS (centos6, centos7) and the artifact ARCHITECTURE (32 and 64bit) - Use Docker to provide clean OS containers mkdir fluka mv "ARCHITECTURE="${ARCHITECTURE}/*.rpm fluka/ docker run --rm -v $(pwd)/fluka:/fluka -t centos:$os bash -c 'yum \ install -y /fluka/*.rpm'

Example: FLUKA RPM deployment test Results Each job execution is nicely logged in its own console log accessible in the job s menu - CentOS6 (64bit): - FLUKA g77 (32bit) works out of the box - FLUKA gfortran (64bit) requires new gfortran which is not provided by the standard repositories --> Finished Dependency Resolution Error: Package: fluka-2011.2c-3.x86_64 (/fluka-2011.2c-3.x86_64) Requires: libgfortran.so.3(gfortran_1.4)(64bit) Error: Package: fluka-2011.2c-3.x86_64 (/fluka-2011.2c-3.x86_64) Requires: libquadmath.so.0()(64bit) Error: Package: fluka-2011.2c-3.x86_64 (/fluka-2011.2c-3.x86_64) Requires: libc.so.6(glibc_2.14)(64bit) - CentOS7 (64bit) - FLUKA gfortran (64bit) works out of the box - FLUKA g77 (32bit) requires cross compilation packages which are not included in the dependencies (and discontinued) --> Finished Dependency Resolution Error: Package: fluka-2011.2c-3.i686 (/fluka-2011.2c-3.i686) Requires: compat-gcc-34

Other FLUKA-related applications FLUKA Benchmarking/Testing - Run predefined test simulation for each version and monitor execution and result; - Trigger the analysis of the output data and provide a reliable logging of the operation. Large Projects/Simulations: - Monitor a release branch of a large scale simulation project and trigger (and analyse) test simulation (short runs) as soon a commit appears. - Identify implementation errors (i.e. geometry, settings) Flair/Geoviewer FLUPIX automatic ISO file generation Handle FLUKA development version - FLUKA collaboration members could pick them up directly from the Jenkins server. My 2cents https://github.com/drbokko/docked-fluka-builders

Testing Examples

Monitoring Jobs

Testing Example

Testing Examples

Thank you for your attention! www.dectris.com DECTRIS Ltd. 5405 Baden-Daettwil Switzerland www.dectris.com