All About Gump Presentation

Slides:



Advertisements
Similar presentations
© 2010 Bennett, McRobb and Farmer1 Use Case Description Supplementary material to support Bennett, McRobb and Farmer: Object Oriented Systems Analysis.
Advertisements

Feature requests for Case Manager By Spar Nord Bank A/S IBM Insight 2014 Spar Nord Bank A/S1.
Using subversion COMP 2400 Prof. Chris GauthierDickey.
G51FSE Version Control Naisan Benatar. Lecture 5 - Version Control 2 On today’s menu... The problems with lots of code and lots of people Version control.
Version Control with git. Version Control Version control is a system that records changes to a file or set of files over time so that you can recall.
Git: Part 1 Overview & Object Model These slides were largely cut-and-pasted from tutorial/, with some additions.
Version Control with Subversion. What is Version Control Good For? Maintaining project/file history - so you don’t have to worry about it Managing collaboration.
CLARIN tools for workflows Overview. Objective of this document  Determine which are the responsibilities of the different components of CLARIN workflows.
Erlware For Managing Distribution and Build Erlang User Conference 2007.
Christopher Jeffers August 2012
Apache Software Foundation Building FOSDEM 2005 Apache Gump: Continuous integration on Steroids By Leo Simons, 26 February.
16-1 The World Wide Web The Web An infrastructure of distributed information combined with software that uses networks as a vehicle to exchange that information.
Git – versioning and managing your software L. Grewe.
INFSOM-RI Juelich, 10 June 2008 ETICS - Maven From competition, to collaboration.
Ant & Jar Ant – Java-based build tool Jar – pkzip archive, that contains metadata (a manifest file) that the JRE understands.
A university for the world real R © 2009, Chapter 9 The Runtime Environment Michael Adams.
TOS / TIS Code Architecture Copyright © 2008 Talend. All rights reserved.
G.Govi CERN/IT-DB 1 September 26, 2003 POOL Integration, Testing and Release Procedure Integration  Packages structure  External dependencies  Configuration.
SPI NIGHTLIES Alex Hodgkins. SPI nightlies  Build and test various software projects each night  Provide a nightlies summary page that displays all.
Information Systems and Network Engineering Laboratory I DR. KEN COSH WEEK 1.
Maven and Jelly James Strachan. Introduction Maven and Jelly are both Apache projects at Jakarta Ultimately both will be top.
SWIM Project Meeting, Bloomington, IN September 2006 Working with the SWIM Code Repository David E. Bernholdt Oak Ridge National Laboratory
1 Working with Queues Presented to KC PUG: Kansas City's PHP User Group Daniel Holmes.
Platform & Maven2 David Šimonek. Certified Engineer Course Agenda What is Maven? Why Maven? NB IDE & Maven NB Platform & Maven.
Theming in GNUstep ● What is it for? ● It seems there have been three groups calling for theming in GNUstep. ● Some don't like the standard NeXTstep look.
Autonomy Paradigm Warning: This document is a part of my “Responsible Programming” theme. All docs related to that theme just gather some of my ideas.
Introduction to Computing Systems
Product Training Program
Progress Apama Fundamentals
Agenda:- DevOps Tools Chef Jenkins Puppet Apache Ant Apache Maven Logstash Docker New Relic Gradle Git.
Advanced Computer Systems
Development Environment
Modularity Most useful abstractions an OS wants to offer can’t be directly realized by hardware Modularity is one technique the OS uses to provide better.
Information Systems and Network Engineering Laboratory II
Configuration Management
OPERATING SYSTEM CONCEPT AND PRACTISE
Maven 04 March
Chapter Objectives In this chapter, you will learn:
User-Written Functions
Physics validation database
Build Automation with Gradle
Product Training Program
Version Control with Subversion
Shared Services with Spotfire
Protecting Memory What is there to protect in memory?
GIT AND GITHUB WORKSHOP
Protecting Memory What is there to protect in memory?
Testing and Debugging.
Chapter 3: Using Methods, Classes, and Objects
IT Atoumation / Conf. Mgmt...
Software Documentation
Modularity and Memory Clearly, programs must have access to memory
I’m going to talk about my vision for the future of system administration, and a question for you to contemplate.
Applied Software Implementation & Testing
Computer Architecture “Bomb Lab Hints”
Introduction to Configuration Management
Concepts From Alice Switching to Java Copyright © Curt Hill.
Introduction to Ansible
Coding Concepts (Data Structures)
Exploring the Power of EPDM Tasks - Working with and Developing Tasks in EPDM By: Marc Young XLM Solutions
Building a Custom Gadget in OU Campus
JENKINS TIPS Ideas for making your life with Jenkins easier
Git CS Fall 2018.
Discussing an OVS/OVN Split
CS 240 – Advanced Programming Concepts
Tonga Institute of Higher Education IT 141: Information Systems
Tonga Institute of Higher Education IT 141: Information Systems
CISC101 Reminders Assignment 3 due today.
Container technology, Microservices, and DevOps
Building LabKey with Gradle
Presentation transcript:

All About Gump Presentation Workflow model Descriptors GM AR RM Gumpy At a very high level, this is what gump does. We’ll be looking at each of the items described here seperately. User edits project descriptor and commits Projects maintain their own descriptors (based on the GOM or mavens POM) The Gump Metadata (GM) is built from those GOMs and POMS (as a RDBMS, potentially) Gump checks out or updates stuff and runs build scripts Gump sends certain output into the artifact repository Gump sends build results and information into the Runtime Metadata (RDBMS with history information) Dynagump sends e-mails and the like based on that Dynagump generates user reports on demand Dynagump

All About Gump Presentation Descriptors Descriptors <workspace> <module> <svn …/> <project name=“myproject”> <ant target=“jar”/> <jar name=“build/myproject.jar”/> <depend name=“otherproject”/> … </project> </module> <module href=“project/other.xml”> </workspace> XML files. Most live in Gump CVS (will live in Gump SVN). Similar to maven project.xml files Can split up into multiple files (across repositories) using hrefs <module/> for each CVS or SVN module <project/>, usually for each “unit” that produces something (ie a jar file), may also run tests or generate docs or … Projects declare inputs (dependencies), outputs, and build commands (<ant/>, <maven/>, <mkdir/>…) See http://gump.apache.org/metadata/, actually a lot of docs on these Learn by example…look at setups for other projects… TODO: We want to make gump read maven project.xml files…

All About Gump Presentation GM Metadata Workspace Module Project Cmd Gumpy builds an object graph in memory (gump.model package) which contains all the gump “intelligence” regarding the model, for example, it will fill out the model with defaults if some elements are omitted, and transform the way dependencies are specified into a standard way. It is a bit of a shame that most of what goes on here is not documented. Rather, the assumptions made here can only be retrieved from seeing how the actual XML descriptors we use actually lead up to something. Fortunately for end users, you never need to see most of this.

All About Gump Presentation AR Artifact Repository myproject.jar Gumpy maintains a repository of all the stuff that it has built. But we consider it internal-use only: because Gump is inherently unsecure (we download arbitrary code from arbitrary CVS that can execute arbitrary commands), these files could contains bugs or even viruses!

All About Gump Presentation Gumpy Gumpy CLI 1 <<runs>> <<starts>> <<runs>> Builder 4 Actor 5 Runner Checkouts <<updates>> Actor Updater 3 <<runs>> <<creates>> Actor Descriptors <<reads>> Run Loader 2 <<creates>> GM Workspace Module Project Cmd <<runs>> Gumpy is our “buildmeister”, an object-oriented python engine which handles all different kinds of tasks, which we split up into bits called “Work”. These Work items are handled by either a core component (Runner, Loader, Updater or Builder) or by an Actor (documenter, notifier, and others). The workflow is as follows: A command is started from a cronjob This command does a self-update, initialization, parses options, sets up logging, etc Now, a Runner is created, which contains most of the core build logic It delegates to the Loader to build a Gump Object Model in memory from the xml descriptors Next it fires up the Update which checks out or updates materials from version control It is now time to start doing “real” things. The main task is building all the different projects, which the Builder handles. The runner also references several Actors, which can cause “side effects”, like sending out e-mail. TODOs: It would probably be better to make Builder, Updater and perhaps even Loader into Actors as well It might be a good idea to stash the Gump Metadata into a relational database instead of a python object graph The GM right now contains quite a bit of logic which might best be offloaded elsewhere <<reads,annotates>> <<interacts>> SVN,CMS, Files, Mailing lists, Database, Website, …

All About Gump Presentation RM Runtime Metadata (RM) time-invariant environment Host Run Package n n address|properties uri|timestamp uri|name n Workspace dependencies n Result Build Project_version 1 1 The RM database is the basis for most of gump’s “intelligent” behaviour. By careful analysis of the data in this database, we can figure out who caused what to break when, which projects are long-term problematic, etc etc. The RM database is different from what happens before it (ie the stuff that Gumpy does) in that it models time. Gumpy simply runs several times a day and publishes the result of each run, but it doesn’t try and compare those runs to each other. Instead, Gumpy pushes data into the RM so that Dynagump can do that analysis. Hosts are identifiers for physical machines; besides an address (ie brutus.apache.org) they have certain info about it, like the # and type of cpu. Workspaces are gump runs configured with some particular set of parameters that might influence the way it builds (like the “live” build or the “kaffe” build on a machine). Decisions which change over time (by a gump admin changing something) are in the workspace rather than directly with the host. Runs are the complete sets of results for any particular gump run. They specify what installed packages (for example java version or kernel version) was built against, ie the entire environment, as well as all the builds that were run. Things which change over time (out of the gump admin’s direct concious control) are part of a run rather than the workspace. Builds are the “meat” of the model. There is a-build-per-project-per-run. Among other things, we associate the build log (console output) of executing a particular project build with this table. Results are integers defining what state the build ended in (ie, success or failure). The project_version is a project-at-a-specific-timestamp. Projects depend on other projects (with usually nearly the same timestamp) so this table defines the dependencies. Projects are what corresponds to the Gump Object Model representations of projects. They’re always checked out from a module, hence always reference one. Modules are what corresponds to a particular branch or tag of a particular svn or cvs sourcetree, and as such correspond to the Gump Object Model representation of modules. n success|failure|halt uri|log timestamp 1 Project Module 1 uri|descriptor url|descriptor

All About Gump Presentation Dynagump I don’t really get it! Could you make gump easier to use? And make it a little prettier as well? DynaGump is currently under development. We don’t know exactly what it will look like (Shiny! Sweet! Cool!) and its featureset is still being thought about. The key thing we want to do here is make gump easier to use. Better reporting, friendlier e-mails, etc etc. Watch this space!