SPI NIGHTLIES Alex Hodgkins. SPI nightlies  Build and test various software projects each night  Provide a nightlies summary page that displays all.

Slides:



Advertisements
Similar presentations
Cultural Heritage in REGional NETworks REGNET Project Meeting Content Group
Advertisements

CIMCO Integration Software Products
Global MP3 Geoffrey Beers Deborah Ford Mike Quinn Mark Ridao.
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)
Web Forms and ASP.NET Programming Right from the Start with Visual Basic.NET 1/e 12.
Web Applications Development Using Coldbox Platform Eddie Johnston.
Chapter One The Essence of UNIX.
T-FLEX DOCs PLM, Document and Workflow Management.
Chapter 9 Chapter 9: Managing Groups, Folders, Files, and Object Security.
CVS Selim Çıracı Ahmet Kara Metin Tekkalmaz. CVS – Open Source Version Control System Outline What are Version Control Systems? And why do we need them?
70-290: MCSE Guide to Managing a Microsoft Windows Server 2003 Environment Chapter 8: Implementing and Managing Printers.
70-293: MCSE Guide to Planning a Microsoft Windows Server 2003 Network, Enhanced Chapter 7: Planning a DNS Strategy.
MCTS Guide to Microsoft Windows Server 2008 Network Infrastructure Configuration Chapter 8 Introduction to Printers in a Windows Server 2008 Network.
Chapter 11 ASP.NET JavaScript, Third Edition. 2 Objectives Learn about client/server architecture Study server-side scripting Create ASP.NET applications.
Configuring Print Services Lesson 7. Skills Matrix Technology SkillObjective DomainObjective # Deploying a Print ServerConfigure and monitor print services.
Selenium – Testing Tool. What is Selenium? Selenium is a robust set of tools that supports rapid development of test automation for web-based applications.
Perforce (Version Control Software). Perforce is an enterprise version management system in which users connect to a shared file repository. Perforce.
SmartLog X 3 TEAM Basic SmartLog X 3 TEAM Basic DescoEMIT.com USER STATUS USER EDIT TEST LOG ADMIN TEST MACHINE SCHEDULE INSTALL System Requirements:
Linux Operations and Administration
M. Taimoor Khan * Java Server Pages (JSP) is a server-side programming technology that enables the creation of dynamic,
Christopher Jeffers August 2012
WorkPlace Pro Utilities.
MAVEN-BLUEMARTINI Yannick Robin. What is maven-bluemartini?  maven-bluemartini is Maven archetypes for Blue Martini projects  Open source project on.
Framework for Automated Builds Natalia Ratnikova CHEP’03.
Basics of Web Databases With the advent of Web database technology, Web pages are no longer static, but dynamic with connection to a back-end database.
DIRAC Web User Interface A.Casajus (Universitat de Barcelona) M.Sapunov (CPPM Marseille) On behalf of the LHCb DIRAC Team.
Module 14: Configuring Print Resources and Printing Pools.
Reporting and Build Statistics Using Business Intelligence By Naga Sowjanya Karumuri Build Team, VMware, Cambridge Summer Internship 2008.
Stimulsoft Reports.Net 20 Problems which Stimulsoft Reports.Net solves
JavaScript, Fourth Edition Chapter 12 Updating Web Pages with AJAX.
LSC Segment Database Duncan Brown Caltech LIGO-G Z.
1 The following presentation is from the Oracle Webcast “What’s New in P6 EPPM Release 8.1.” As a partner, you may not use the Oracle Power Point template,
GDT V5 Web Services. GDT V5 Web Services Doug Evans and Detlef Lexut GDT 2008 International User Conference August 10 – 13  Lake Las Vegas, Nevada GDT.
Business Unit or Product Name © 2007 IBM Corporation Introduction of Autotest Qing Lin.
Nightly Releases and Testing Alexander Undrus Atlas SW week, May
Copyright © 2007, Oracle. All rights reserved. Managing Concurrent Requests.
Section 1: Introducing Group Policy What Is Group Policy? Group Policy Scenarios New Group Policy Features Introduced with Windows Server 2008 and Windows.
SUSE Linux Enterprise Desktop Administration Chapter 12 Administer Printing.
Module 10: Monitoring ISA Server Overview Monitoring Overview Configuring Alerts Configuring Session Monitoring Configuring Logging Configuring.
TEAM Basic TotalElectrostatic ManagementAwareness&
MAE Continuous Integration Administration guide July 8th, 2013.
EPICS Direction to Support Large Projects and Incorporate New Technology Leo R. Dalesio 09/21/99.
Contents 1.Introduction, architecture 2.Live demonstration 3.Extensibility.
July 2011CMSC 341 CVS/Ant 1 CMSC 341 Java Packages Ant CVS Project Submission.
Continuous Integration and Code Review: how IT can help Alex Lossent – IT/PES – Version Control Systems 29-Sep st Forum1.
Chapter 8 Configuring and Managing Shared Folder Security.
Getting started DIRAC Project. Outline  DIRAC information system  Documentation sources  DIRAC users and groups  Registration with DIRAC  Getting.
Computer Software Types Three layers of software Operation.
Strictly Business Using “StrictlyFused” to Create an Extensible Knowledge Portal.
Application Software System Software.
CSI 3125, Preliminaries, page 1 SERVLET. CSI 3125, Preliminaries, page 2 SERVLET A servlet is a server-side software program, written in Java code, that.
ClearQuest XML Server with ClearCase Integration Northwest Rational User’s Group February 22, 2007 Frank Scholz Casey Stewart
TOPIC 7.0 LINUX SERVICES AND CONFIGURATION. ROOT USER Root user is called “super user” because it has power far beyond those of mortal user. As root,
Geant4 is a toolkit to simulate the passage of particles through matter, and is widely used in HEP, in medical physics and for space applications. Ongoing.
Active-HDL Server Farm Course 11. All materials updated on: September 30, 2004 Outline 1.Introduction 2.Advantages 3.Requirements 4.Installation 5.Architecture.
Enterprise Oracle Solutions Oracle Report Manager The New ADI and More Revised:June 20091Report Manager/SROAUG Presentation.
Configuring Print Services Lesson 7. Print Sharing Print device sharing is another one of the most basic applications for which local area networks were.
CIS-NG CASREP Information System Next Generation Shawn Baugh Amy Ramirez Amy Lee Alex Sanin Sam Avanessians.
SPI Report for the LHCC Comprehensive Review Stefan Roiser for the SPI project.
XNAT 1.7: Getting Started 6 June, Introduction In this presentation we’ll discuss:  Features and functions in XNAT 1.7  Requirements  Installing.
SQL Database Management
Development Environment
How to Contribute to System Testing and Extract Results
Trends like agile development and continuous integration speak to the modern enterprise’s need to build software hyper-efficiently Jenkins:  a highly.
LCGAA nightlies infrastructure
GLAST Release Manager Automated code compilation via the Release Manager Navid Golpayegani, GSFC/SSAI Overview The Release Manager is a program responsible.
NIGHTLY BUILD SCRIPT FOR THE LEVEL-1 TRIGGER ONLINE SOFTWARE
WEBINAR: Integrating SpiraTest with JIRA
Building Web Applications
JENKINS TIPS Ideas for making your life with Jenkins easier
Presentation transcript:

SPI NIGHTLIES Alex Hodgkins

SPI nightlies  Build and test various software projects each night  Provide a nightlies summary page that displays all the results from the previous nights build (number of build/test errors) and historical data.  Place all of the files onto AFS and make the log files accessible from the nightlies page.

Our build configuration  Slots  An ordered list of projects to build and their configuration (version, where to build, etc).  Can contain any number of projects to build.  Contains a unique list of platforms that belong to the slot.  Platforms  Dictate a specific machine configuration: The architecture Operating system Compiler to use Build mode (e.g. debug)  Also contain a numbered priority.

Current Infrastructure  We use LCGCMT as our ‘configuration management tool’ to manage the checkout, build, install and test of each software project.  The infrastructure is responsible for:  Automating the usage of LCGCMT to perform all build steps  Putting results into our database  Moving builds to AFS (for Mac and Windows)  Deleting old build data

Current Infrastructure (cont.)

Current infrastructure (cont.)  Run once nightly through crontab after server has been restarted  Continually requests platforms from server  Stops running when the server has no jobs left  Runs on Linux, Mac and Windows Client Server  Restarted every night through crontab  Acts as a queue (based on priority assigned to each job) for all loaded platforms  Performs all database connections  Runs on Linux, so writes to AFS for Mac and Windows clients.  Uses XMLRPC to receive requests from the clients.

Problems with infrastructure  Queue  No way of viewing the queue.  No way to add/remove a platform to be built to the running queue – the entire queue must be reset.  Client  No automated way to kill a started build.  If a platform is manually re-built on the same day it will overwrite the previous build completely.  Builds occasionally hang, and stay hung silently until they are manually killed.  Scheduling  Clients must be launched manually or the crontab edited to schedule a client to run later.  The moving of builds to AFS is currently scheduled by crontab, instead of when a build finishes.  Reporting  Once a build has been requested from the server it is marked as completed – the server doesn’t know who is building it or what stage it’s at.  The infrastructure sends up to 20 s per project per night.

Basic Infrastructure Requirements  We must be able to supply multiple configuration options for a job; architecture, operating system, compiler, mode and project tag.  It must perform all build steps for all requested projects in order.  All data generated (build logs, number of errors, etc.) must be viewable from a web interface.  Historical data is also required so we can look at trends – a database of some description is required.

Available build automation software  There are many different build automation tools available, all of which carry out the same core set of tasks:  Checkout specified code.  Run user specified build steps (python script, maven script, etc).  Collect test/build logs.  There are differences between the various tools, but they are largely irrelevant to us as it is things that we won’t use like different supported builders (CMake, Ant, QMake, MSBuild, etc.) or IDE integration.

Benefits of other build systems  The main benefit is that all the build systems have useful functionality already implemented that we do not have:  Maintain a list of connected clients – when a job is added to the queue the most appropriate client is selected to do the job.  Continuous integration.  The ability to kill a job and any processes it created via the web interface.  Display the output of a running job in real time in the web interface – immediate notification upon failure.  Estimated build times.  RSS feed for the build history.  Used by many people, so there is documentation, plugins etc.

Drawbacks of other build systems  Due to complexity of the nightlies, if we used another build automation system we would still require the following:  Scripts to set up the environment and perform all the build stages.  A web summary page (like we have now) with its own database – something like the BuildBot waterfall page will not contain all of the information we need.  Scripts to place all build data into a database.  Manually defined slots and platforms – we would likely have to add all configurations to the web interface, so editing would become more complicated.

Drawbacks of other build systems (cont.)  Complexity of nightlies mean a lot of time must be spent integrating the current working infrastructure.  No direct support for our current build tools – typically it is much easier to integrate with something like a Maven project, for which there are many plugins/tutorials.  It would not be as easy to extend for the other users of the current system (e.g. LHCb).  We would also be reliant on a build system we don’t have full control over.  We chose Hudson to look into as it is easily extendable, simple to use and is being actively developed.

Hudson  I attempted to use Hudson to build an entire slot:  To have multiple configurations for a single job a ‘matrix project’ that creates all possible combinations from given lists must be used.  This would generate 162+ possibilities (of which we run 20) which can only be filtered using a single groovy statement.  This leaves separate jobs for everything, so we would potentially have to:  Create a job for each project (ROOT, RELAX, CORAL, etc).  Create a job for each slot/platform combination so that they can be called individually or as a group.  Create a slot job that would set all the options for each project in environment variables for the build scripts to use, and lists all the projects to build.  The only other option is to leave the configuration inside the current infrastructure, and use Hudson as a tool just for client/server interaction.  There is also the minor issue of Hudson being forked to Jenkins over a trademark dispute with Oracle in January.

Future of our infrastructure  We are slowly moving towards implementations of the following core set of features:  The client/server interaction will be like the other build automation software – the server will keep track of connected clients, and distribute jobs to them.  Ability to add jobs to the queue via a web interface, as well as kill them or remove from the queue.  Ability for a job to timeout.  Estimated completion times.  Ability to run the same job more than once in a day without overwriting the previous build (going towards continuous integration).  But various changes have had to be made to the infrastructure to make these possible.