Скачать презентацию Experiencing in using ETICS a multi-platform and open Скачать презентацию Experiencing in using ETICS a multi-platform and open

b971527f9df87e509dc28aabb95ff2b9.ppt

  • Количество слайдов: 34

Experiencing in using ETICS, a multi-platform and open source build and test system for Experiencing in using ETICS, a multi-platform and open source build and test system for big software projects Elisabetta Ronchieri INFN CNAF 5 July 2011, Computing R&D Workshop, Ferrara, Italy

Overview • ETICS course – From ‘ETICS in Plain English’ by Lorenzo Dini, 10 Overview • ETICS course – From ‘ETICS in Plain English’ by Lorenzo Dini, 10 January 2010, CERN • Experience as user 7/5/2011 Experience in using ETICS, a multi-platform and open source build and test system for big software projects, Elisabetta Ronchieri 2

Overview • ETICS course – From ‘ETICS in Plain English’ by Lorenzo Dini, 10 Overview • ETICS course – From ‘ETICS in Plain English’ by Lorenzo Dini, 10 January 2010, CERN • Experience as user 7/5/2011 Experience in using ETICS, a multi-platform and open source build and test system for big software projects , Elisabetta Ronchieri 3

ETICS Chronicles • ETICS stands for “E-infrastructure for Testing, Integration and Configuration of Software” ETICS Chronicles • ETICS stands for “E-infrastructure for Testing, Integration and Configuration of Software” • It was funded by the European Commission on January 2006 and February 2008. • ETICS 2 ended on February 2010 • It was a consortium of 8 partners • Now it is provided by CERN and part of EMI • It is also maintained by Engineering Ingegneria Informatica 7/5/2011 Experience in using ETICS, a multi-platform and open source build and test system for big software projects, Elisabetta Ronchieri 4

The ETICS System INFSO-RI-223782 • Continuous software build, test and QA system – Checkout, The ETICS System INFSO-RI-223782 • Continuous software build, test and QA system – Checkout, Build, Test, Code Analysis Metrics, Reports, Packages • Versatile dependency management system – Build/Test dependencies, Metapackages, Release definition • Extensive collection of ready-to-use third-party libraries • Extensive multi-platform virtualized infrastructure • Independent from any specific language, build or test tool – CVS, SVN, Make, Ant, Maven, Java, Python, C/C++, Bash, . . . • Plugin framework for tools integration – JUnit, Find. Bugs, Checkstyle, Py. Unit, Py. Coverage, CCCC, … • Open repository of configuration metadata, packages and build, test and QA reports. With YUM generation 7/5/2011 ETICS in Plain English, Lorenzo Dini 5

Architecture 7/5/2011 Experience in using ETICS, a multi-platform and open source build and test Architecture 7/5/2011 Experience in using ETICS, a multi-platform and open source build and test system for big software projects, Elisabetta Ronchieri INFSO-RI-223782 6

Command-line Client 7/5/2011 ETICS in Plain English, Lorenzo Dini INFSO-RI-223782 7 Command-line Client 7/5/2011 ETICS in Plain English, Lorenzo Dini INFSO-RI-223782 7

The ETICS Portal 7/5/2011 ETICS in Plain English, Lorenzo Dini INFSO-RI-223782 8 The ETICS Portal 7/5/2011 ETICS in Plain English, Lorenzo Dini INFSO-RI-223782 8

Data Model: Basic Concepts • • INFSO-RI-223782 It is compliant with the standard CIM Data Model: Basic Concepts • • INFSO-RI-223782 It is compliant with the standard CIM model (Configuration Information Model) It defines: – Modules: objects representing software Components or an aggregation of components to be managed as a units of functionality or deployment (Subsystems), or Projects – Configurations: unique versions of a component, or a subsystem, or a project • • • A module can have 0, 1 or many Configurations Each configuration: – can only belong to one Module – contains an aggregation of more specific objects to fully define its identity and behaviour, like platform, checkout command, build command, and so on Platform is a particular combination of operating system distribution, processor architecture, and c++ compiler version – 7/5/2011 A Defulat platform contains configuration objects that are platform-independent Experience in using ETICS, a multi-platform and open source build and test system for big software projects 9

The Configuration Web Client INFSO-RI-223782 7/5/2011 ETICS in Plain English, Lorenzo Dini 10 The Configuration Web Client INFSO-RI-223782 7/5/2011 ETICS in Plain English, Lorenzo Dini 10

The Repository Web Client INFSO-RI-223782 7/5/2011 ETICS in Plain English, Lorenzo Dini 11 The Repository Web Client INFSO-RI-223782 7/5/2011 ETICS in Plain English, Lorenzo Dini 11

Data Model: Component versions and INFSO-RI-223782 dependencies EXTERNALS MY PROJECT Project Subsystem TOMCAT Component Data Model: Component versions and INFSO-RI-223782 dependencies EXTERNALS MY PROJECT Project Subsystem TOMCAT Component UTILS SERVICE UTILS WA CLIENT v. 1. 3. 7 v. 2. 1. 8 Configuration BOOST … JDK 1. 4 v. 2 v. 3 1. 5 1. 6 7/5/2011 Experience in using ETICS, a multi-platform and open source build and test system for big software projects, Elisabetta Ronchieri 12

Data Model: Defining releases MY PROJECT Release v. 1. 0. 0 UTILS SERVICE UTILS Data Model: Defining releases MY PROJECT Release v. 1. 0. 0 UTILS SERVICE UTILS WA CLIENT v. 1. 3. 7 v. 2. 1. 8 v. 2 INFSO-RI-223782 Utils v. 1. 1. 0 v. 3 Service v. 2. 1. 0 v. 1. 3. 7 v. 2. 1. 8 Project Subsystem Component Configuration 7/5/2011 Experience in using ETICS, a multi-platform and open source build and test system for big software projects, Elisabetta Ronchieri 13

Data Model: Metapackages EXTERNALS MY PROJECT INFSO-RI-223782 Project Subsystem Component TOMCAT MPKG 1. 4 Data Model: Metapackages EXTERNALS MY PROJECT INFSO-RI-223782 Project Subsystem Component TOMCAT MPKG 1. 4 Configuration 1. 0 1. 5 JDK 1. 4 UTILS SERVICE UTILS WA CLIENT v. 1. 3. 7 v. 2. 4. 5 Metapackage v. 2 v. 3 1. 5 1. 6 7/5/2011 Experience in using ETICS, a multi-platform and open source build and test system for big software projects, Elisabetta Ronchieri 14

Dependencies INFSO-RI-223782 • Automatic build-order resolution WHEN? • Build-time: pointer to binaries made available Dependencies INFSO-RI-223782 • Automatic build-order resolution WHEN? • Build-time: pointer to binaries made available • Run-time: REQUIRES added in package WHICH VERSION? • Static: hardcoded by the component • Dynamic: decided at project level • Version based: Dynamic with >= X. Y. Z 7/5/2011 Experience in using ETICS, a multi-platform and open source build and test system for big software projects, Elisabetta Ronchieri 15

Properties INFSO-RI-223782 • Key-Value Pairs for customization CUSTOM • Inherited, overwritable, isolated enable. optimization=yes Properties INFSO-RI-223782 • Key-Value Pairs for customization CUSTOM • Inherited, overwritable, isolated enable. optimization=yes DEFAULT • Used to manipulate dependencies My. SQL. DEAFULT=mysql v 5. 0. 28 SYSTEM • Used to tune the system • package. buildarch=noarch • Used to load the system information libdir location 7/5/2011 Experience in using ETICS, a multi-platform and open source build and test system for big software projects, Elisabetta Ronchieri 16

Typical ETICS Build Execution Sequence etics-get-project etics-checkout Extract metadata information about a project from Typical ETICS Build Execution Sequence etics-get-project etics-checkout Extract metadata information about a project from the ETICS DB Extract configuration information from the ETICS DB and source/binary packages from different repositories INFSO-RI-223782 etics-build Execute the build operations make ant cvs 7/5/2011 svn http ETICS in Plain English, Lorenzo Dini Unit tests, coverage, compliance, packaging, reporting 17

The ETICS Packager INFSO-RI-223782 • ETICS contains an automated packaging system, the ETICS Packager The ETICS Packager INFSO-RI-223782 • ETICS contains an automated packaging system, the ETICS Packager • It uses configuration metadata to create package or packages for a given platform (RPMS, deb, MSIs, tarballs, zip files etc) • It covers about 80% of the packaging needs of a typical software component • It can be overridden by the users in various ways to get more specific behaviours • Developers focus on the code not the packaging for N different packaging systems, it allows to enforce consistent packaging guidelines 7/5/2011 ETICS in Plain English, Lorenzo Dini 18

The Repository INFSO-RI-223782 • ETICS provides an online repository where all software packages and The Repository INFSO-RI-223782 • ETICS provides an online repository where all software packages and build, test and QA reports are stored • The Repository generates dynamic YUM repository at every build to automate the execution of deployment, integration and functional tests • It can be browsed and queried using a web application with a REST interface (XPATH and SQL syntax), a command-line client or a mountable file system (AFS-based) 7/5/2011 ETICS in Plain English, Lorenzo Dini 19

Plugins and Metrics Collectors INFSO-RI-223782 • The ETICS system is plugin-based • Plugins are Plugins and Metrics Collectors INFSO-RI-223782 • The ETICS system is plugin-based • Plugins are wrappers around existing or custom tools providing specific functionality • Can be activated by user choice (profiles) or letting ETICS decide which tools are most appropriate (autoprofile) • Plugins can publish information in the ETICS system as metrics used to do trend analysis and quality monitoring using the ETICS reporting tools 7/5/2011 ETICS in Plain English, Lorenzo Dini 20

Examples of metrics collectors INFSO-RI-223782 Metrics Type Programming languages/ technologies Complexity static Java, Python Examples of metrics collectors INFSO-RI-223782 Metrics Type Programming languages/ technologies Complexity static Java, Python Javancss JCcn. Plugin Py. Complexity. Plugin. py Design quality static Java Jdepend JDepend. Plugin N of potential bugs static C/C++, Python, Perl, PHP Java Flawfinder, RATS, PMD, Findbugs CFlawfinder. Plugin CPy. Php. Rats. Plugin JPmd. Plugin JFindbugs. Plugin N of potential bugs dynamic C/C++ Valgrind CValgrind. Plugin static All SLOCCount. Plugin Coverage dynamic Java Emma, Cobertura Py. Coverage, LCOV JUnitemma. Plugin JCobertura. Plugin Unit tests success rate dynamic Java, Python JUnit Py. Unit JUnit. Plugin JUnitreports. Plugin. py Py. Unit. Plugin. py static IPv 6, WSI dynamic C/C++, Java Lines of code Compliance with standards Profiling 7/5/2011 ETICS in Plain English, Lorenzo Dini Tool ETICS Plugin IPv 6 Plugin WSInteroperability. Plugin Jrat, Valgrind JRat. Plugin CValgrind. Plugin 21

Example of ETICS metric report CCN = Cyclomatic Complexity Number 7/5/2011 Experience in using Example of ETICS metric report CCN = Cyclomatic Complexity Number 7/5/2011 Experience in using ETICS, a multi-platform and open source build and test system for big software projects 22

Screenshot of dashboard 7/5/2011 ETICS in Plain English, Lorenzo Dini INFSO-RI-223782 23 Screenshot of dashboard 7/5/2011 ETICS in Plain English, Lorenzo Dini INFSO-RI-223782 23

Overview • ETICS course – From ‘ETICS in Plain English’ by Lorenzo Dini, 10 Overview • ETICS course – From ‘ETICS in Plain English’ by Lorenzo Dini, 10 January 2010, CERN • Experience as user 7/5/2011 Experience in using ETICS, a multi-platform and open source build and test system for big software projects, Elisabetta Ronchieri 24

In case of Sto. RM • The Sto. RM software is structured in several In case of Sto. RM • The Sto. RM software is structured in several components: – written mainly in C++ and Java by different people – managed by autotool, ant and maven • A Sto. RM project is being added into ETICS since ETICS 2, supported and maintained by the INFN partner of ETICS 2 – Provided changes in all components to handle non hard-coded dependencies – Requested all needed dependencies to the ETICS support team • Now Sto. RM is a subsystem inside the EMI project of ETICS • Most of the Sto. RM components provides a custorm spec file – Improved spec files according to fedora guidelines 7/5/2011 Experience in using ETICS, a multi-platform and open source build and test system for big software projects, Elisabetta Ronchieri 25

In case of WNo. De. S • The WNo. De. S software is structured In case of WNo. De. S • The WNo. De. S software is structured in several components: – written mainly in Python – managed by autotool • A WNo. De. S project is being added into ETICS since the end of May 2011 – Triggered Nightly Build by a cron file executed on a machine at INFN CNAF – Re-engineered WNo. De. S software to be compliant with the python best practices and the fedora guidelines 7/5/2011 Experience in using ETICS, a multi-platform and open source build and test system for big software projects, Elisabetta Ronchieri 26

9 Steps to adopt the ETICS system 1. Asking the ETICS support to register 9 Steps to adopt the ETICS system 1. Asking the ETICS support to register your software project into the ETICS system and to give to your project manager permission to access it 2. Modelling your software project in terms of subsystem and components 3. Defining the project structure containing all modules that are part of a specific version of the project 4. Defining the project configuration (representing a specifc version of the project) containing one and only one configuration of one or more of the project components and subsystems relevant to prepare a specific release of the project 7/5/2011 Experience in using ETICS, a multi-platform and open source build and test system for big software projects, Elisabetta Ronchieri 27

9 Steps to adopt the ETICS system 5. Composing the configuration structrue, the tree 9 Steps to adopt the ETICS system 5. Composing the configuration structrue, the tree of configurations attached to a project configuration 6. Identifying dependencies of your software 7. Asking the ETICS support to register dependencies into the ETICS repository when necessary 8. Asking the ETICS support to register your software project users into the ETICS system 9. Granting your siftware project users with the appropriate role on modules and configurations 7/5/2011 Experience in using ETICS, a multi-platform and open source build and test system for big software projects, Elisabetta Ronchieri 28

Considerations: Pros • Trigger a build on several platforms • Adhere custom scemarios: • Considerations: Pros • Trigger a build on several platforms • Adhere custom scemarios: • Maintaining just one configuration with several platforms • easily compiling in different platforms • Maintaining just one configuration per platform • completely independent of changes in the other platforms • Verify local build results remotelly • Simplify handling of dependencies • Automate the creation of a YUM repository with the contents of the builds • Provide a public repository for your artefacts 7/5/2011 Experience in using ETICS, a multi-platform and open source build and test system for big software projects 29

Considerations: Pros • Uniform the build environment of your components • Improve the quality Considerations: Pros • Uniform the build environment of your components • Improve the quality of your software thanks to the reports of the metrics calculated during the builds • Produce artefacts for different distributions and operating systems • Require few effort after the first porting of a software project into ETICS • Ask central level to provide you with private resoruces in case of licensed external packages (like oracle) • Be well-supported by the ETICS team 7/5/2011 Experience in using ETICS, a multi-platform and open source build and test system for big software projects 30

Considerations: Cons • Local build can be unconsistent with the remote one due to Considerations: Cons • Local build can be unconsistent with the remote one due to a mismatch between build environments – The use of a virtual machine that replicates a remote resource of ETICS can be a solution • Remote build is often time consuming – A local machine dedicated to the ETICS builds can represent a workaround • Software components versions set in several locations such as ETICS configuration, configure. ac, build. xml, pom. xml, Makefile, can cause values’ discrepancy and be error prones – Be carful during the update of the version • An initial training is necessary to use ETICS properly • An expert packager needs no more than two weeks to port a software product 7/5/2011 Experience in using ETICS, a multi-platform and open source build and test system for big software projects 31

Considerations: Cons • The ETICS packager does not support all rpm build functionalities – Considerations: Cons • The ETICS packager does not support all rpm build functionalities – A custom spec file can be a solution • Private resources at central level can be provided after a long time – An ETICS infrastructure can be installed and configured on software projct side if resources are available • Guest user can look at information of all the projects metadata registered into ETICS – Software products that have strict privacy requirements can perceive this as a big issue 7/5/2011 Experience in using ETICS, a multi-platform and open source build and test system for big software projects 32

Useful Links • ETICS Portal – https: //etics. cern. ch/etics. Portal/ • ETICS Documentation Useful Links • ETICS Portal – https: //etics. cern. ch/etics. Portal/ • ETICS Documentation – http: //etics. web. cern. ch/etics/ • FAQs – https: //web. infn. it/etics-support/index. php/faq 2 • Mailing list – [email protected] ch 7/5/2011 Experience in using ETICS, a multi-platform and open source build and test system for big software projects 33

Thanks. . . 7/5/2011 Experience in using ETICS, a multi-platform and open source build Thanks. . . 7/5/2011 Experience in using ETICS, a multi-platform and open source build and test system for big software projects 34