Tribal Build, Integrate, and Test System Roscoe A. Bartlett Computational Engineering and Energy Sciences Group, Oak Ridge National.

Slides:



Advertisements
Similar presentations
Introduction to Maven 2.0 An open source build tool for Enterprise Java projects Mahen Goonewardene.
Advertisements

Test Case Management and Results Tracking System October 2008 D E L I V E R I N G Q U A L I T Y (Short Version)
Why.NET? Various languages struggling to interoperate with each other Developers undergoing huge learning curves to shift from one language to another.
Validata Release Coordinator Accelerated application delivery through automated end-to-end release management.
VisIt Software Engineering Infrastructure and Release Process LLNL-PRES Lawrence Livermore National Laboratory, P. O. Box 808, Livermore,
Requirements Analysis 5. 1 CASE b505.ppt © Copyright De Montfort University 2000 All Rights Reserved INFO2005 Requirements Analysis CASE Computer.
ANDROID PROGRAMMING MODULE 1 – GETTING STARTED
Using Microsoft SharePoint to Develop Workflow and Business Process Automation Ted Perrotte National Practice Manager, Quilogy, Microsoft Office SharePoint.
@martinwoodward
2007 Adobe Systems Incorporated. All Rights Reserved. 1 Joe Berkovitz VP Engineering Allurent, Inc. Continuous Integration with Flex, FlexUnit, and Ant.
Building with MPC Charles Calkins Principal Software Engineer Object Computing, Inc.
Introduction to The Linaro Toolchain Embedded Processors Training Multicore Software Applications Literature Number: SPRPXXX 1.
1 Introduction to Tool chains. 2 Tool chain for the Sitara Family (but it is true for other ARM based devices as well) A tool chain is a collection of.
ESB Guidance 2.0 Kevin Gock
Page 1 The State of Trilinos Software Engineering Recent Progress, Current Status, and Future Issues Roscoe A. Bartlett
Trilinos Coding and Documentation Guidelines Roscoe A. Bartlett Trilinos Software Engineering Technologies and Integration Lead Computer Science and Mathematics.
Page 1 Multi-Repository Development and Integration in CASL using TriBITS Roscoe A. Bartlett Oak Ridge National Laboratories Trilinos User Group Meeting.
SSI-OSCAR A Single System Image for OSCAR Clusters Geoffroy Vallée INRIA – PARIS project team COSET-1 June 26th, 2004.
Tools and software process for the FLP prototype B. von Haller 9. June 2015 CERN.
Framework for Automated Builds Natalia Ratnikova CHEP’03.
Page 1 Trilinos Software Engineering Technologies and Integration Capability Area Overview Roscoe A. Bartlett Trilinos Software Engineering Technologies.
Page 1 Trilinos Software Engineering Technologies and Integration Capability Area Overview Roscoe A. Bartlett Department.
Lab 11 Department of Computer Science and Information Engineering National Taiwan University Lab11 - Porting 2014/12/9/ 26 1.
Page 1 Trilinos Usage of CMake/CTest/CDash Roscoe A. Bartlett Department of Optimization & Uncertainty Estimation Sandia.
Page 1 Trilinos Software Engineering Status and Future Issues Roscoe A. Bartlett Department of Optimization & Uncertainty.
Page 1 Trilinos Software Engineering Technologies and Integration Capability Area Overview Roscoe A. Bartlett Department.
Git Workflow Building Blocks for Improved VERA Development, Integration, and Deployments Roscoe A. Bartlett Physics Integration Infrastructure Team Lead.
Page 1 Trilinos Software Engineering Technologies and Integration Numerical Algorithm Interoperability and Vertical Integration –Abstract Numerical Algorithms.
INFSO-RI Enabling Grids for E-sciencE The gLite Software Development Process Alberto Di Meglio CERN.
Parallel Interactive Computing with PyTrilinos and IPython Bill Spotz, SNL (Brian Granger, Tech-X Corporation) November 8, 2007 Trilinos Users Group Meeting.
INFSO-RI Module 01 ETICS Overview Alberto Di Meglio.
Page 1 Trilinos Release Improvement Issues Roscoe A. Bartlett Department of Optimization & Uncertainty Estimation Trilinos.
Version control Using Git Version control, using Git1.
BLU-ICE and the Distributed Control System Constraints for Software Development Strategies Timothy M. McPhillips Stanford Synchrotron Radiation Laboratory.
Page 1 Multi-Repository Development and Integration with TriBITS Roscoe A. Bartlett Oak Ridge National Laboratories Trilinos User Group Meeting October.
FairRoot Build and Test System
CMake For Trilinos Developers
INFSO-RI Module 01 ETICS Overview Etics Online Tutorial Marian ŻUREK Baltic Grid II Summer School Vilnius, 2-3 July 2009.
HSAI Institute for Maneuverability and Terrain Physics Simulations (IMTPS) Software Engineering Owen J. Eslinger, Ph.D. 8 Oct 2009.
NA-MIC National Alliance for Medical Image Computing Core 1b – Engineering Software Process Stephen R. Aylward Kitware, Inc.
NA-MIC National Alliance for Medical Image Computing Slicer Building and Deployment Steve Pieper, PhD.
Sandia is a multiprogram laboratory operated by Sandia Corporation, a Lockheed Martin Company, for the United States Department of Energy’s National Nuclear.
CMake refactoring P. Hristov 19/03/2014. History I  Recursive makefiles (F.Carminati):  Problems in dependencies  Slow  "Recursive Makefiles.
MINER A Software The Goals Software being developed have to be portable maintainable over the expected lifetime of the experiment extensible accessible.
Generalization and externalization of the Trilinos package- based system Roscoe A. Bartlett Trilinos Software Engineering Technologies and Integration.
NA-MIC National Alliance for Medical Image Computing UCSD: Engineering Core 2 Portal and Grid Infrastructure.
Presentation Name / 1 Visual C++ Builds and External Dependencies NAME.
Confidential Continuous Integration Framework (CIF) 5/18/2004.
1Managed by UT-Battelle for the U.S. Department of Energy TriBITS Software Engineering Processes for the CASL Innovation Hub Roscoe A. Bartlett, Ph.D.
GLite build and integration system Building and Packaging Robert HARAKALY
 Programming - the process of creating computer programs.
Page 1 CMake Trilinos? Roscoe A. Bartlett Department of Optimization & Uncertainty Estimation Esteban J. Guillen Department.
1Managed by UT-Battelle for the U.S. Department of Energy TriBITS TriBITS Foundations and Updates Roscoe A. Bartlett, Ph.D.
SPI NIGHTLIES Alex Hodgkins. SPI nightlies  Build and test various software projects each night  Provide a nightlies summary page that displays all.
Build Tools 1. Building a program for a large project is usually managed by a build tool that controls the various steps involved. These steps may include:
1Managed by UT-Battelle for the U.S. Department of Energy Roadmap for Sustainable CSE Ecosystems A Roadmap for Sustainable Ecosystems of CSE Software Roscoe.
GLite build and integration system Building and Packaging Robert HARAKALY
ETICS An Environment for Distributed Software Development in Aerospace Applications SpaceTransfer09 Hannover Messe, April 2009.
CMake: Experience in ALICE P. Hristov 19/06/12. History I Recursive makefiles (F.Carminati): – Problems in dependencies – Slow "Recursive Makefiles.
Build and Test system for FairRoot
Open-O Integration Project Introduction
Mobile Application Test Case Automation
Transitioning VisIt to CMake
Advanced Integration and Deployment Techniques
X in [Integration, Delivery, Deployment]
Sviluppo mobile con Visual Studio OnLine
National Library of Medicine Segmentation and Registration Toolkit
Trilinos Software Engineering Technologies and Integration
SSDT and Database Project Basics
Office 365 Development July 2014.
Presentation transcript:

Tribal Build, Integrate, and Test System Roscoe A. Bartlett Computational Engineering and Energy Sciences Group, Oak Ridge National Laboratory

The Problem => Develop and Deploy Complex Software Multiple software repositories and distributed development teams Multiple compiled programming languages (C, C++, Fortran) and mixed-language programs Multiple development and deployment platforms (Linux, Windows, Super-Computers, etc.) Stringent software quality requirements Solution Approach => TriBITS custom CMake build & test framework Solution Approach => TriBITS custom CMake build & test framework

Why CMake? Why TriBITS? Why CMake? Why TriBITS?

Why CMake? Open-source tools maintained and used by a large community and supported by a profession software development company (Kitware). CMake: Simplified build system, easier maintenance Improved mechanism for extending capabilities (CMake language) Support for all major C, C++, and Fortran compilers. Automatic full dependency tracking (headers, src, mod, obj, libs, exec) Faster configure times (e.g. > 10x faster than autotools) Shared libraries on all platforms and compilers Support for MS Windows (e.g. Visual Studio projects) Portable support for cross-compiling Good Fortran support (parallel builds with modules with src => mod => object tracking, C/Fortran interoperability, etc.) CTest: Parallel running and scheduling of tests and test time-outs Memory testing (Valgrind) Line coverage testing (GCC LCOV) Better integration between the test system and the build system

Why TriBITS? Framework for large, distributed multi-repository CMake projects Reduce boiler-plate CMake code and enforce consistency across large distributed projects Subproject dependencies and namespacing architecture (packages) Automatic package dependency handling Additional tools for agile software development processes (e.g. Continuous Integration (CI)) Additional functionality missing in raw CMake Change default CMake behavior when necessary

Raw CMake vs. TriBITS

Raw CMakeLists.txt File # Build and install library SET(HEADERS hello_world_lib.hpp) SET(SOURCES hello_world_lib.cpp) ADD_LIBRARY(hello_world_lib ${SOURCES}) INSTALL(TARGETS hello_world_lib DESTINATION lib) INSTALL(FILES ${HEADERS} DESTINATION include) # Build and install user executable ADD_EXECUTABLE(hello_world hello_world_main.cpp) TARGET_LINK_LIBRARIES(hello_world hello_world_lib) INSTALL(TARGETS hello_world DESTINATION bin) # Test the executable ADD_TEST(test ${CMAKE_CURRENT_BINARY_DIR}/hello_world) SET_TESTS_PROPERTIES(test PROPERTIES PASS_REGULAR_EXPRESSION "Hello World") # Build and run some unit tests ADD_EXECUTABLE(unit_tests hello_world_unit_tests.cpp) TARGET_LINK_LIBRARIES(unit_tests hello_world_lib) ADD_TEST(unit_test ${CMAKE_CURRENT_BINARY_DIR}/unit_tests) SET_TESTS_PROPERTIES(unit_test PROPERTIES PASS_REGULAR_EXPRESSION "All unit tests passed")

TriBITS Package CMakeList.txt File Library linking automatically handled Avoid duplication and boiler-plate code Fewer commands Install by default (most common) Automatic namespacing of test & exec names TRIBITS_PACKAGE(HelloWorld) TRIBITS_ADD_LIBRARY(hello_world_lib HEADERS hello_world_lib.hpp SOURCES hello_world_lib.cpp) TRIBITS_ADD_EXECUTABLE(hello_world NOEXEPREFIX SOURCES hello_world_main.cpp INSTALLABLE) TRIBITS_ADD_TEST(hello_world NOEXEPREFIX PASS_REGULAR_EXPRESSION "Hello World") TRIBITS_ADD_EXECUTABLE_AND_TEST(unit_tests SOURCES hello_world_unit_tests.cpp PASS_REGULAR_EXPRESSION "All unit tests passed") TRIBITS_PACKAGE_POSTPROCESS()

TriBITS Structural Units and Meta-Projects TriBITS Structural Units and Meta-Projects

TriBITS Structural Units TriBITS Project: Complete CMake “Project” Overall projects settings TriBITS Repository: Collection of Packages and TPLs Unit of distribution and integration TriBITS Package: Collection of related software & Tests Lists dependencies on SE Packages & TPLs Unit of testing, namespacing, documentation, and reuse TriBITS Subpackage: Partitioning of package software & tests TriBITS TPLs (Third Party Libraries): Specification of external dependency (libs) Required or optional dependency Single definition across all packages Packages + Subpackages = Software Engineering (SE) Packages

Example: VERA Meta-Project, Repositories, Packages & Subpackages VERA Trilinos Epetra … Teuchos Core Comm ParameterList … NOX Exnihilo Nemesis … Insilico Neutronics … Shift PSSDriversExt VRIPSS common cobra … VERAInExt VERAIn … VERA: Git repository and TriBITS meta-project (contains no packages) Git repos and TriBITS repos: Trilinos, VERAInExt, LIMEExt, Exnihilo, … TriBITS packages: Teuchos, Epetra, VERAIn, Insilico, LIME, VRIPSS, … TriBITS subpackages: TeuchosCore, InsilicoNeutronics, VRIPSSTiamat, … TriBITS SE (Software Eng.) packages: Teuchos, TeuchosCore, VERAIn, Insilico, InsilicNeutronics, … LIMEExt LIME Tiamat

Automated Package Dependency Handling

Package Dependency Structure (Example: Trilinos) RTOpTeuchosEpetraTriutilsThyraEpetraExt Required Dependence Optional Dependence

Package Dependencies.cmake Files TRIBITS_PACKAGE_DEFINE_DEP ENDENCIES( LIB_REQUIRED_TPLS BLAS LAPACK LIB_OPTIONAL_TPLS Boost ) Teuchos TRIBITS_PACKAGE_DEFINE_DEP ENDENCIES( LIB_REQUIRED_TPLS BLAS LAPACK ) Epetra TRIBITS_PACKAGE_DEFINE_DEP ENDENCIES( LIB_REQUIRED_PACKAGES Teuchos ) RTOp TRIBITS_PACKAGE_DEFINE_DEP ENDENCIES( LIB_REQUIRED_PACKAGES Epetra ) Triutils TRIBITS_PACKAGE_DEFINE_DEP ENDENCIES( LIB_REQUIRED_PACKAGES Epetra Teuchos LIB_OPTIONAL_PACKAGES Triutils ) EpetraExt TRIBITS_PACKAGE_DEFINE_DEP ENDENCIES( LIB_REQUIRED_PACKAGES RTOp Teuchos LIB_OPTIONAL_PACKAGES EpetraExt Epera ) Thyra

Pre-Push Testing: Change Epetra $./do-configure \ -D Trilinos_ENABLE_Epetra:BOOL=ON \ -D Trilinos_ENABLE_ALL_FORWARD_DEP_PACKAGES: BOOL=ON \ -D Trilinos_ENABLE_TESTS:BOOL=ON RTOpTeuchosEpetraTriutilsThyraEpetraExt

Pre-Push Testing: Change RTOp $./do-configure \ -D Trilinos_ENABLE_RTOp:BOOL=ON \ -D Trilinos_ENABLE_ALL_FORWARD_DEP_PACKAGES: BOOL=ON \ -D Trilinos_ENABLE_TESTS:BOOL=ON RTOpTeuchosEpetraTriutilsThyraEpetraExtLib OnlyLibs & Tests

Extended Testing Support

TriBITS Standard Testing Layers Coverage Testing Nightly Testing Secondary Tested (ST) CATEGORIES [BASIC CONTINUOUS NIGHTLY] (more platforms, more TPLs) Post-Push CI Testing Secondary Tested (ST) CATEGORIES [BASIC CONTINUOUS] (post-push CTest/CDash, Linux/GCC) Pre-Push CI Testing Primary Tested (PT) CATEGORIES [BASIC] (pre-push checkin-test.py) Memory (Valgrind) Testing Correctness Testing

Pre-Push CI Testing: checkin-test.py checkin-test.py --do-all -- push Integrates with latest version in remote git repositories Figures out modified packages Modified file: 'packages/teuchos/CMakeLists.txt' => Enabling 'Teuchos'! Enables all forward/downstream packages & tests Configures, builds, and runs tests Does the push (if all builds/tests pass) Sends notification s Fully customizable (enabled packages, build cases, etc.) Documentation: checkin-test.py --help

Post-Push Testing: TRIBITS_CTEST_DRIVER() CDash Dashboard for 4/6/2014 Rolled-up summaries for each build case Nightly, CI, Experimental build cases CDash CI Iterations Individual packages built in sequence Targeted s for failed package build & tests Failed packages disabled in downstream packages => Don’t propagate failures!

TriBITS Miscellaneous Facts TriBITS System Dependencies: TriBITS Core: Basic configure, build, test & install => Only raw CMake (2.8.4+) TriBITS Extra SE tools (checkin-test.py, …) => Git ( ) and Python 2.4 Usage of TriBITS: Trilinos (SNL, originating project) ORNL: SCALE, Exnihilo, DataTransferKit Non-ORNL: MPACT (Univ. of Misc.), COBRA-TF (Penn. State) CASL-Related: VERA TriBITS Development & Distribution: 3-clause BSD-like license, Copyright SNL Current: Trilinos (trilinos.sandia.gov), CASL (casl-dev) Near future: Github (public repo, global pull)

Contact: Sponsors: –CASL: Consortium for the Advanced Simulation of Lightwater reactors Contact: Sponsors: –CASL: Consortium for the Advanced Simulation of Lightwater reactors