Changing Cosmic Build System to Bamboo

Similar documents
Continuous Integration and Delivery at NSIDC

ALERT installation setup

Continuous Delivery on AWS. Version 1.0 DO NOT DISTRIBUTE

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

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

CPSC 491. Today: Source code control. Source Code (Version) Control. Exercise: g., no git, subversion, cvs, etc.)

Continuous Integration

Automated build service to facilitate Continuous Delivery

Extending Remote Desktop for Large Installations. Distributed Package Installs

SAS Marketing Automation 4.4. Unix Install Instructions for Hot Fix 44MA10

Manual. CollabNet Subversion Connector to HP Quality Center. Version 1.2

Version Control with Subversion

Magento OpenERP Integration Documentation

Workflow Templates Library

TSM for Windows Installation Instructions: Download the latest TSM Client Using the following link:

Tool-Assisted Knowledge to HL7 v3 Message Translation (TAMMP) Installation Guide December 23, 2009

Bitrix Site Manager ASP.NET. Installation Guide

1 Building, Deploying and Testing DPES application

Expresso Quick Install

Installation Instructions

Setting up and Automating a MS Dynamics AX Job in JAMS

Workshop for WebLogic introduces new tools in support of Java EE 5.0 standards. The support for Java EE5 includes the following technologies:

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

Business Process Management IBM Business Process Manager V7.5

INSTALLATION GUIDE Datapolis Process System v

CycleServer Grid Engine Support Install Guide. version 1.25

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

SAP Business Objects Data Services Setup Guide

3. Installation and Configuration. 3.1 Java Development Kit (JDK)

Ipswitch Client Installation Guide

Building a Continuous Integration Pipeline with Docker

Outlook Connector. Version 2 User Manual. client-side plugin. Collaborate Using Outlook. Version 2.0.0

EVALUATION ONLY. WA2088 WebSphere Application Server 8.5 Administration on Windows. Student Labs. Web Age Solutions Inc.

SSO Plugin. J System Solutions. Upgrading SSO Plugin 3x to 4x - BMC AR System & Mid Tier.

Stellar Phoenix Exchange Server Backup

vsphere App HA Installation and Configuration Guide

Trytond Magento Documentation

Tivoli Endpoint Manager for Remote Control Version 8 Release 2. User s Guide

Users Guide. SelenioFlex File. Version

Sonatype CLM Enforcement Points - Continuous Integration (CI) Sonatype CLM Enforcement Points - Continuous Integration (CI)

Software Delivery Integration and Source Code Management. for Suppliers

Provider's Guide to Integrating Parallels Presence Builder 12 with Parallels Automation

IBM WebSphere Application Server V8.5 lab Basic Liberty profile administration using the job manager

Introduction to Source Control Management in OO 10

AWS CodePipeline. User Guide API Version

Pipeline Orchestration for Test Automation using Extended Buildbot Architecture

On premise upgrade guide (to 3.3) XperiDo for Microsoft Dynamics CRM

Witango Application Server 6. Installation Guide for Windows

Installation & Upgrade Guide

Eylean server deployment guide

NETWRIX USER ACTIVITY VIDEO REPORTER

DEPLOYING EMC DOCUMENTUM BUSINESS ACTIVITY MONITOR SERVER ON IBM WEBSPHERE APPLICATION SERVER CLUSTER

Vodafone PC SMS (Software version 4.7.1) User Manual

Witango Application Server 6. Installation Guide for OS X

AutoMate BPA Server 10 Installation Guide

Inventory Computers Using TechAtlas for Libraries

1) Go to the following URL: 2) Login with your NUS account and password.

escan SBS 2008 Installation Guide

SUCCESFUL TESTING THE CONTINUOUS DELIVERY PROCESS

Version 4.61 or Later. Copyright 2013 Interactive Financial Solutions, Inc. All Rights Reserved. ProviderPro Network Administration Guide.

Volume SYSLOG JUNCTION. User s Guide. User s Guide

Hudson configuration manual

Version Control. Luka Milovanov

DeployStudio Server Quick Install

Selenium Automation set up with TestNG and Eclipse- A Beginners Guide

SysPatrol - Server Security Monitor

Omnixx Client Installer for TXDPS

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

NetBeans IDE Field Guide

The goal with this tutorial is to show how to implement and use the Selenium testing framework.

tpischeduler tpischeduler TotalFBO tpischeduler TotalFBO Initial Installation tpischeduler TotalFBO tpischeduler

Exclaimer Mail Archiver User Manual

Beginning with SubclipseSVN

Practicing Continuous Delivery using Hudson. Winston Prakash Oracle Corporation

Click Start > Control Panel > System icon to open System Properties dialog box. Click Advanced > Environment Variables.

HOW TO SILENTLY INSTALL CLOUD LINK REMOTELY WITHOUT SUPERVISION

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

IBM Sterling Control Center

Altova LicenseServer. User and Reference Manual

JavaScript Applications for the Enterprise: From Empty Folders to Managed Deployments. George Bochenek Randy Jones

Hadoop Data Warehouse Manual

Richmond SupportDesk Web Reports Module For Richmond SupportDesk v6.72. User Guide

Installation Guide for Websphere ND

DocAve Upgrade Guide. From Version 4.1 to 4.5

Sonatype CLM for Maven. Sonatype CLM for Maven

DAVE Usage with SVN. Presentation and Tutorial v 2.0. May, 2014

Installing The SysAidTM Server Locally

Git - Working with Remote Repositories

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

Admin Reference Guide. PinPoint Document Management System

NTP Software VFM Administration Web Site for EMC Atmos

HP Enterprise Integration module for SAP applications

Efficient Automated Build and Deployment Framework with Parallel Process

Terms and Definitions for CMS Administrators, Architects, and Developers

P R O V I S I O N I N G O R A C L E H Y P E R I O N F I N A N C I A L M A N A G E M E N T

Installation and Deployment

Transcription:

Changing Cosmic Build System to Bamboo CERN Summer Student Program Created by: Robert Varga 2013 August Supervisor: Pablo Saiz IT-SDC 1

Contents Abstract... 2 Introduction... 3 Specification of the work project... 3 Used tools in the project... 4 Cosmic Build System... 4 Bamboo CI System... 5 Selenium... 6 Implementation... 6 Created plans in Bamboo... 6 Package Creation with Bamboo... 9 Package deployment and test running for modules in Bamboo... 11 Selenium Tests... 13 Acknowledgement... 16 References... 16 Abstract The aim of this project is to change Cosmic custom build system to an Automated build system used Bamboo CI System services. The goal is when a developer performs some changes on the source code, the system builds installation packages for different architectures and runs tests automatically on the software modules as soon as possible. The Bamboo build system polls the git repository which is a commonly used source code repository by the developers of the IT department. Bamboo CI System is a widely used system by the department. Thus the project uses widely accepted tools by the department which makes the Cosmic project even more standardized. Project also aims to create packages for every versions of Cosmic modules for different architectures (SLC5/SLC6) which can be accessed by different package repositories on AFS file system. The created package repositories can be used for automated deploy environment such as puppet. 2

Introduction The Cosmic project for LHC experiments aims to provide a single entry point to the monitoring data collected from the distributed computing systems of the LHC virtual organization. The Cosmic collects information from multiple sources. It covers various activities of the LHC experiments like job processing, data management, transfer tests, monitoring of the reconstruction at Tier-0, or monitoring of site efficiency. So, the Cosmic monitoring tool provides information from the Grid from different aspects. The Cosmic is currently working on different Grid flavors (OSG, LCG, glite). It is deployed for the four LHC experiments ATLAS, ALICE, CMS and LHCb. Because of the diversity of systems and the widespread use of the Cosmic monitoring tool it is necessary to create a build system which can easily create installation packages for different architectures when a software developer release new versions of Cosmic modules. Instead of a software developer manually create installation packages using a custom build system it would be more convenient if a build system automatically performs tasks which are create installation packages for each module when the source code has been changed. To perform automatically build and deploy software modules the IT group uses Bamboo Continuous Integration System as a common solution which is provide a lot of features to customize our jobs or tasks. An advantage of Bamboo it can collaborate with source code repositories (git, svn, etc.) (check for changes of the source code) which are commonly used by the IT group. One other benefit of Bamboo build system that can automatically run tests for the software module and provides information about the status of the tasks and the test results. Due the highlighted advantages above it is desirable to migrate from the custom build system to the Bamboo CI System. Specification of the work project Cosmic monitoring Tool consists of software modules. The developer group have already created a custom build system for the modules based on python distutils and Koji build system to create rpm packages for the software modules. The goal of the project to create rpm packages automatically in a shared file repository and run tests, 3

when a software developer makes changes on the source code. To perform the package creation for Cosmic modules the work project uses the Bamboo CI System. The Bamboo System polls the git repository for the source code changes periodically. When the changes committed in the source code repository Bamboo creates packages of the latest version of the software module for SLC5 and SLC6 architecture and it copies to a shared package repository on the AFS file system. When the changes committed in the source code repository Bamboo creates packages of the earlier tagged versions of the software module for SLC5 and SLC6 architecture which are not exists already on the AFS package repository (creates rpm packages only for the newly created tags). Jobs in the Bamboo plan creates separate package repositories on AFS for stable and unstable (rc release candidate) tagged versions of the software modules. A Bamboo job deploys the newly created packages one by one: After the package creation, a job deploys Cosmic modules to a Bamboo machine used by the AFS package repositories. After the deployment a Bamboo job run tests for Cosmic modules which are contain Selenium tests. After the module deployment on Bamboo machine the job removes the software modules with the recently installed packages (remove cosmic package with its dependencies) to obtain clean Bamboo machine for every modules. Used tools in the project This chapter summarize the main tools which are used in my work to meet the requirements of the project. Cosmic Build System The developed custom build system for Cosmic modules uses python distutils and the Koji build system which is operate with the git source code repository. The python distutils services makes very simple the installation process or the package creation process for Cosmic modules. These processes can customize with setup.cfg file which is describe the installation folder and the required packages for the modules and the module.cfg describes some metadata (URL, Author, e-mail, version number of the module, etc.). The setup.py code contains a setup method, which is copies resource files to the installation folder. With python distutils, bdist_rpm command creates rpm package for the Cosmic module. Koji build system used for release a new version of Cosmic module which is operate with the git repository (Checks the working branch and version number, add release notes for the module). However, This custom made build system makes very easy to create packages and it is working properly, this system is not provide test execution and automated build options for the modules 4

Bamboo CI System Bamboo is a continuous integration (CI) server that can be used to automate the release management for a software application, creating a continuous delivery pipeline. Bamboo schedules and coordinates the work involved in building and testing an application. Therefore, to use Bamboo, you will need to already have the following set up [1]: a code repository that contains the complete source code for the project. build scripts test suites Bamboo uses the concept of a plan with jobs and tasks to configure and order the actions in the workflow. These concepts may deserve more explanation, because these concepts appear later in this document. I used these "Bamboo building blocks" to solve my task. The main properties of these concepts summarized by table 1, and the hierarchy of these "Building blocks" can be seen on figure 1. In this project, I used the middle structure on figure 1 for the stages, so each stage within a plan contains only one job which is executes several tasks on a Bamboo machine. Plan Stage Job Task Processes a series of one or more stages that are run sequentially using the same repository. Processes its jobs in parallel, on multiple agents. Processes a series of one or more tasks that are run sequentially on the same agent. Run sequentially within a job on a Bamboo working directory Specifies the default repository. Specifies how the build is triggered. Specifies notifications of build results. Must successfully complete all its jobs before the next stage in the plan can be processed. May produce artifacts that can be made available for use by a subsequent stage. Controls the order in which tasks are performed. Collects the requirements of individual tasks in the job so that these requirements can be matched with agent capabilities Defines the artifact that the build will produce Provides for the definition of plan variables. Table 1. Properties of the building blocks of Bamboo CI System Is a small discrete unit of work, such as source code checkout, running a script 5

Fig. 1 Bamboo plan anatomy. Selenium Selenium is a test automation tool for web applications. Some modules of Cosmic have a web interface so they are running in Internet browser. Selenium IDE is a Firefox plugin which is provides an easy-to-use interface for developing automated tests. It can record user interactions with the web browser and save it as a test suite (html format) that can be later executed to test Cosmic modules. These test suites can check the appearance of specific texts and other elements such as buttons or pop-up windows. After the execution of the test suite Selenium generates test results in html format. Implementation This chapter describes the details of the created Bamboo plans for Cosmic and shows the workflow of the process. To go into the details of the Bamboo jobs in this chapter also discuss the working mechanism of the created tasks and the creation of Selenium tests. Created plans in Bamboo I created different plans for SLC5/SLC6 architectures. The jobs of these plans have different requirements (see: configure jobs -> requirements). To build earlier versions of 6

software modules I define another plans to manage tasks with the tagged versions (in git) of the Cosmic modules. Thus, a failure of the package creation or installation of an earlier module version will not hinder the creation of the latest versions of the software modules. All of these plans consists of two stages. A stage can run when the previous stages have successfully finished (see: Table 1.). The first stage executes a job which is performs a source code checkout and builds the rpm packages for the modules. After the package creation this job is responsible for the creation of the package repositories on AFS file system which are available for public. These processes are implemented in separated tasks within the job. These tasks uses predefined Bamboo local variables which are contains password and frequently used file paths (see: configure plan -> variables). The use of the stored variable makes more convenient to follow changes on the AFS file system (eg. changes the path of the repository.) The second stage deploys the software modules on clean Bamboo machine one-by-one. The job runs Selenium tests for the module if the developers created test suite for the module. The Bamboo plans sends notification via e-mail about the job status changes. Bamboo sends notification to cosmic-bamboo-notification group mail list. To make not so obtrusive these notifications, Bamboo will sends notifications only, when the status of the job has been changed (failed-succeed, succeed-failed transitions) (see: configure plans -> notifications). In accordance with the described above, the created plans can be seen on figure 2. The name of the jobs within the stages are highlighted blue on figure 2. The workflow of the created plan can be seen on figure 3. As we can see on figure 3, the deployment stages are use the shared repository to deploy cosmic packages on the Bamboo machine. The job in stage 2 generates Selenium test results for the modules which have a test suite. These results are available on Bamboo server as a job artifact. 7

SLC5-earlier Building packages Source Code checkout Build packages Copy to AFS repo(stable/unstable) Package deployment Deploy modules separately Run Selenium test Stage 1 Stage 2 SLC6-earlier Building packages Source code checkout Build packages Copy to AFS repo(stable/unstable) Stage 1 Package deployment Deploy modules separately Run Selenium test Stage 2 SLC5-latest Building packages Source Code checkout Build packages Copy to AFS repo Package deployment Deploy modules separately Run Selenium test Stage 1 Stage 2 SLC6-latest Building packages Source Code checkout Build packages Copy to AFS repo Stage 1 Package deployment Deploy modules separately Run Selenium test Stage 2 Fig. 2 Created Bamboo plans for Cosmic. 8

Bamboo SLC5-earlier Source Code checkout Build packages Consume artifacts Deploy modules separately Run Selenium test Stage 1 Stage 2 Selenium test results SLC5-earlier-unstable SLC5-earlier-stable SLC6-earlier Source code checkout Build packages Stage 1 Consume artifacts Deploy modules separately Run Selenium test Stage 2 Selenium test results SLC6-earlier-unstable SLC6-earlier-stable AFS repo SLC5-latest Source Code checkout Build packages Consume artifacts Deploy modules separately Run Selenium test Stage 1 Stage 2 Selenium test results SLC5-latest SLC6-latest Source Code checkout Build packages Stage 1 Consume artifacts Deploy modules separately Run Selenium test Stage 2 Selenium test results SLC6-latest Check git repository modifications Send notifications via e-mail: Plan status changed Job status changed Package Creation with Bamboo Fig. 3 Created workflow for Cosmic. To create packages for the modules, I write bash scripts within a job in stage 1 (see Fig. 2). The scripts executed by the Bamboo agent. Job will perform a source code checkout as a first step. After the source code checkout, the script will gather the name of the modules (or git tag names for earlier versions of Cosmic modules) to know for which modules have to create rpm packages. Because of the building dependency, Firstly the script install the cosmic main module to build any other module packages successfully (see Fig 4 and Fig 5). After package creation and installation of the main Cosmic module the script will build packages for other Cosmic modules sequentially. The flowchart of the script for the package creation for the latest version can be seen on figure 4, and for the previous versions can be seen on figure 5. On figure 5. k represents the number of the earlier versions of Cosmic modules and n represents the number of the tagged versions of the other Cosmic modules (so, there are the total number of the git tags is n+k). As we can see on the flowcharts, the scripts check the creation of the packages on Bamboo agent and they printed on the log file, when a package module does not created. For the previous versions (see Fig. 5) the script executes a source code checkout with the corresponding git tag before to create tagged module. The script also checks the 9

existence of the tagged module on shared file repository to eliminate unnecessary work with the package creation. The task will create packages only for the "newest" earlier modules. Thus, with the proliferation of the git tags will not increase script run-time. Checkout latest version Gather module names Create pkg for Cosmic Install Cosmic with yum Install Cosmic with setup.py pkg Created? Exit 1 Installed? Exit 1 i = 0 Create pkg for module[i] pkg Created? print module[i] i = i+1 i = i+1 i < n Stop Fig. 4 Flowchart for creating latest rpm packages. 10

Gather repo tags Checkout with tag[i] Extract module names from tags j = 0 Exist on AFS? i = i+1 Checkout earlier Cosmic[j] versions Create pkg for Cosmic[j] Create pkg for module[i] Install Cosmic[j] with yum Install Cosmic[j] with setup.py pkg Created? pkg Created? Print Cosmic[j] not created print module[i] j = j+1 Installed? Print Cosmic[j] not installed i < n i = i+1 j < k Stop i = 0 Fig. 5 Flowchart for creating earlier Cosmic packages Package deployment and test running for modules in Bamboo In stage 2 (see Fig. 2) a script within the job performs the package deployment using the shared file repository and runs Selenium tests. To run Selenium tests, the script installs Firefox and a display for the Bamboo agent. The Selenium tests (contains in cosmic/<module_name>/selenium/testsuite.html ) are executed by Seleniumstandalone.jar (jar file available on AFS file system). On figure 7. we can see a Selenium test for Cosmic-wlcg module which is checks some elements of the index page. The flowchart of the script can be seen on figure 6. The script deploys packages one-byone on clean Bamboo machine. After module deployment and Selenium tests, the script will remove all previously installed packages to keep clean the Bamboo machine for the next Cosmic module to see all required package install properly during the deployment. As we can see on figure 6. the script collects packages which are not deployed for some reason and prints out the undeployed modules. In this case the job will fail to informs the developers about the building or the deployment went wrong during the plan execution. 11

Install Firefox Install pkg[i] Install xorg-x11-server-xvfb Copy Cosmic repository config file to Bamboo machine pkg[i] Installed? Mark pkg[i] as not installed Copy Selenium standalone jar file to Bamboo machine Gather package names Selenium test exists? Failed_pkgs = Failed_pkgs+1 i = 0 Restart apache server Failed_pkgs = 0 Run Selenium test for pkg[i] Remove pkg[i] with all dependencies i = i+1 i < n Failed_pkgs > 0 Print all uninstalled packages Exit 1 Stop Fig 6. Flowchart for package deployment and test execution. 12

Fig. 7 Created Selenium test for Cosmic-wlcg module with Firefox plugin. Selenium Tests I created Selenium tests for the cosmic-django and cosmic-wlcg module to check the index pages of the applications after the deployment. The created test suites check the existence of the elements on the index pages. The created tests and their commands can be seen on figure 8. In the first step, the Selenium tests are navigate to 127.0.0.1 (localhost) to access to the index page of the Cosmic application on the Bamboo agent. On the figure 8. the first column contains the name of the Selenium commands which are 13

perform in Firefox browser, the second contains the targeted element of the command and the third contains the expected value of the element. Fig 8. Created Selenium tests for the modules. The Selenium test suite for cosmic-django module contains two test cases. The first test case is created for the index page and the second for the admin page. The developers which are more familiar with the functionalities of the module can add more complex test cases for the test suite without to break Selenium test execution mechanism in Bamboo. The created test suite with the test cases for cosmic-django can be seen on figure 9. After the running of the Selenium tests, the task makes the test results available on Bamboo framework as a job artifact. An example of the Selenium test result for cosmicwlcg module can be seen on figure 10. Fig 9. Test Suite for cosmic-django module with two test cases. 14

Fig 10. Selenium Test result in Bamboo framework for cosmic-wlcg module. 15

Acknowledgement I want to thank Andres Abad Rodriguez, who helped me to understand how Bamboo CI System works in IT department. I also want to say a big thank you to Alexandre Beche and Ivan Antoniev Dzhunov who are helped me to get familiar with the Cosmic source code, git repository commands, linux commands and to configure apache server to run installed Cosmic modules on virtual machine. Finally, a special thanks to my supervisor Pablo Saiz who gave me useful advices for bash scripting, makes the tasks more effectively and for his help, when I stuck with the project. I am very grateful for their helps and their encouragements. References [1] Atlassian documentation for Bamboo 4.4 http://downloads.atlassian.com/software/bamboo/downloads/documentation/bamboo- 4-4-20130130-PDF.pdf 16