A central continuous integration platform



Similar documents
Openshift for Continuous Integration

JAVA IN THE CLOUD PAAS PLATFORM IN COMPARISON

Java PaaS Enabling CI, CD, and DevOps

Agile Software Factory: Bringing the reliability of a manufacturing line to software development

Mastering Continuous Integration with Jenkins

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

Jenkins: The Definitive Guide

Continuous Integration using Docker & Jenkins

November 12 th 13 th London: Mastering Continuous Integration with Jenkins

OpenShift on you own cloud. Troy Dawson OpenShift Engineer, Red Hat November 1, 2013

Configuration Management Evolution at CERN. Gavin

Azure Day Application Development

Enterprise PaaS Evaluation Guide

APP DEVELOPMENT ON THE CLOUD MADE EASY WITH PAAS

Jenkins World Tour 2015 Santa Clara, CA, September 2-3

PaaS solutions evaluation

OpenShift. OpenShift platform features. Benefits Document. openshift. Feature Benefit OpenShift. Enterprise

ACCELERATE DEVOPS USING OPENSHIFT PAAS

depl Documentation Release depl contributors

DevOps. Building a Continuous Delivery Pipeline

How Bigtop Leveraged Docker for Build Automation and One-Click Hadoop Provisioning

Pipeline Orchestration for Test Automation using Extended Buildbot Architecture

PES. TWiki at CERN Service Evolution. Platform & Engineering Services. Terje Andersen, Peter Jones for IT-PES-IS Jan 2014

TestOps: Continuous Integration when infrastructure is the product. Barry Jaspan Senior Architect, Acquia Inc.

A Complete Open Cloud Storage, Virt, IaaS, PaaS. Dave Neary Open Source and Standards, Red Hat

OpenShift on OpenStack

DevOps with Containers. for Microservices

Continuous Integration and Automatic Testing for the FLUKA release using Jenkins (and Docker)

SUCCESFUL TESTING THE CONTINUOUS DELIVERY PROCESS

StriderCD Book. Release 1.4. Niall O Higgins

Single Sign On. SSO & ID Management for Web and Mobile Applications

Building, testing and deploying mobile apps with Jenkins & friends

Continuous Integration: Put it at the heart of your development

DevOps. Josh Preston Solutions Architect Stardate

Content Management System - Drupal. Vikrant Sawant (vikrant.sawant@lc.ca.gov) Legislative Data Center, California

Git Branching for Continuous Delivery

Stackato PaaS Architecture: How it works and why.

Web Application Platform for Sandia

WHITE PAPER. Getting started with Continuous Integration in software development. - Amruta Kumbhar, Madhavi Shailaja & Ravi Shankar Anupindi

Cloud Hosting. QCLUG presentation - Aaron Johnson. Amazon AWS Heroku OpenShift

DevOps Course Content

Jenkins and Chef Infrastructure CI and Application Deployment

Intel IT s Cloud Journey. Speaker: [speaker name], Intel IT

HOW OPEN SOURCE IS DRIVING DEVOPS INNOVATION. Gordon William Cloud & DevOps Product Strategy, Red Hat 17 August 2015

Continuous Integration and Delivery at NSIDC

Version Control Your Jenkins Jobs with Jenkins Job Builder

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

GitLab as an Alternative Development Platform for Github.com

Self service for software development tools

Continuous integration with Jenkins CI

Achieving Continuous Integration with Drupal

Java, PHP & Ruby - Cloud Hosting

University of Maine System Liferay 6 EE Solution - RFP# ADDENDUM #01

Continuous Integration

Building Success on Acquia Cloud:

Continuous Integration: A case study

DevOps. Jesse Pai Robert Monical 8/14/2015

Improving your Drupal Development workflow with Continuous Integration

Service Orchestration

Deploying Your Application On Public Cloud

WINDOWS AZURE EXECUTION MODELS

SUCCESFUL TESTING THE CONTINUOUS DELIVERY PROCESS

Best Overall Use of Technology. Jaspersoft

Last time. Today. IaaS Providers. Amazon Web Services, overview

You ll need to have: It d be great if you have:

PES. High Availability Load Balancing in the Agile Infrastructure. Platform & Engineering Services. HEPiX Bologna, April 2013

Introduction to CoprHD: An Open Source Software Defined Storage Controller

Build Automation for Mobile. or How to Deliver Quality Apps Continuously. Angelo Rüggeberg

Assignment # 1 (Cloud Computing Security)

Deploying Foreman in Enterprise Environments 2.0. best practices and lessons learned. Nils Domrose Cologne, August,

Servers. Servers. NAT Public Subnet: /20. Internet Gateway. VPC Gateway VPC: /16

Testing Automation for Distributed Applications By Isabel Drost-Fromm, Software Engineer, Elastic

Practicing Continuous Delivery using Hudson. Winston Prakash Oracle Corporation

Continuous Integration and Bamboo. Ryan Cutter CSCI Spring Semester

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

WELCOME TO Open Source Enterprise Architecture

DevOps Stack. Reid Holmes. Chris Parnin:

Building a Continuous Integration Pipeline with Docker

OpenStack. Orgad Kimchi. Principal Software Engineer. Oracle ISV Engineering. 1 Copyright 2013, Oracle and/or its affiliates. All rights reserved.

Drive new Revenue With PaaS/IaaS. Ruslan Synytsky CTO, Jelastic

Developer Workshop Marc Dumontier McMaster/OSCAR-EMR

DRUPAL CONTINUOUS INTEGRATION. Part I - Introduction

How Comcast Built An Open Source Content Delivery Network National Engineering & Technical Operations

OpenShift and Cloud Foundry PaaS: High-level Overview of Features and Architectures

Zero-Touch Drupal Deployment

Savanna Hadoop on. OpenStack. Savanna Technical Lead

The Virtualization Practice

Git - Working with Remote Repositories

Agile Infrastructure: an updated overview of IaaS at CERN

OpenShift Enterprise PaaS by Red Hat. Andrey Markelov RHCA Red Hat, Presales Solution Architect

PES. Ermis service for DNS Load Balancer configuration. HEPiX Fall Aris Angelogiannopoulos, CERN IT-PES/PS Ignacio Reguero, CERN IT-PES/PS

CLOUD COMPUTING. When It's smarter to rent than to buy

AWS CodePipeline. User Guide API Version

vsphere Upgrade vsphere 6.0 EN

How To Write A Continuous Delivery

Transcription:

A central continuous integration platform Agile Infrastructure use case and future plans Dec 5th, 2014

1/3 The Agile Infrastructure Use Case By Stefanos Georgiou

What? Development practice Build better quality software, faster Developers integrate their work frequently Applying quality control with each integration Verified by an automated process Tests tests tests 12/5/2014 ITTF on Continuous Integration 4

You mean just testing compilation? Not quite.. Compiling Static & Dynamic Testing Unit & Integration Testing Code reviewing Deploying Documenting 12/5/2014 ITTF on Continuous Integration 5

Why? Postmortem bug-fixing is expensive Automate repetitive manual processes Maintain cohesive software and quality code base Visibility aggregated test data are showing trends No undeployable software It works on my machine 12/5/2014 ITTF on Continuous Integration 6

How? 12/5/2014 ITTF on Continuous Integration 7

Who? Top CI server in use Over 1000 Plugins Check out from your VCS automatically, run your tests, code coverage or static analysis, notify (e-mail, rss, jabber) 12/5/2014 ITTF on Continuous Integration 8

What's happening in Configuration Management? Our own jenkins master available at servant.cern.ch SSO & egroup-based job ownership support Daily building VMs and testing puppet modules CRM workflow runs here Not exactly pure CI QA process per change, multiple repos Getting there 12/5/2014 ITTF on Continuous Integration 9

12/5/2014 ITTF on Continuous Integration 10

CRM ticket process Shared module needs a change People using it probably come from different projects You can't just merge code to master Create CRM ticket in JIRA to notify for the change and wait 12/5/2014 ITTF on Continuous Integration 11

Previously in the CRM Workflow Write your puppet code inside a feature branch Test it yourself Create a ticket on the CRM JIRA project Merge to QA Hold for a week (or two) Any complaints? Merge to master 12/5/2014 ITTF on Continuous Integration 12

Rather do it like this Develop inside a feature branch 12/5/2014 ITTF on Continuous Integration 13

Rather do it like this Develop inside a feature branch Create a ticket on the CRM JIRA project 12/5/2014 ITTF on Continuous Integration 14

Rather do it like this Develop inside a feature branch Create a ticket on the CRM JIRA project Tick the box 12/5/2014 ITTF on Continuous Integration 15

Rather do it like this Develop inside a feature branch Create a ticket on the CRM JIRA project Tick the box Jenkins will run tests from your feature branch and merge it to QA for you 12/5/2014 ITTF on Continuous Integration 16

Rather do it like this Develop inside a feature branch Create a ticket on the CRM JIRA project Tick the box Jenkins will run tests from your feature branch and merge it to QA for you Hold for a week (or two) 12/5/2014 ITTF on Continuous Integration 17

Rather do it like this Develop inside a feature branch Create a ticket on the CRM JIRA project Tick the box Jenkins will run tests from your feature branch and merge it to QA for you Hold for a week (or two) Broken? 12/5/2014 ITTF on Continuous Integration 18

Rather do it like this Develop inside a feature branch Create a ticket on the CRM JIRA project Tick the box Jenkins will run tests from your feature branch and merge it to QA for you Hold for a week (or two) Broken? Jenkins will merge to master on proposed date after final test, assuming no problems found 12/5/2014 ITTF on Continuous Integration 19

Feedback from the build 12/5/2014 ITTF on Continuous Integration 20

What's being tested right now? Most modules have a basic configuration setup for them read: one test hostgroup per puppet module and a simple puppet report check for the launched test VM to verify they are configured right Integration tests done for some (e.g. base modules) 12/5/2014 ITTF on Continuous Integration 21

How it works Launch a test VM that includes the changed module Check its reports Run the module's tests if they exist Kill the machine Report accordingly to Jira 12/5/2014 ITTF on Continuous Integration 22

Tests like what? Mysql: can I create a database & table, insert data and run queries? Shibboleth: can I access a test web server with X credentials? AFS: Is my private data accessible by me and only me? 12/5/2014 ITTF on Continuous Integration 23

Getting involved If you maintain a puppet module you should probably start testing Quickstart templates exist on our master for both static puppet testing and dynamic testing Contact ai-config-team if you need some hands-on support 12/5/2014 ITTF on Continuous Integration 24

Dev'ing Gitlab merge requests Already running a small test suite for ai-tools Refactoring as much as possible using a new brilliant workflow plugin 12/5/2014 ITTF on Continuous Integration 25

Upcoming 'workflow-plugin' In development by the cloudbees team Groovy DSL Parallel flows Sequential staging when needed Grab slave nodes, allocate workspaces... Pause and demand input to resume Resume execution after crash Main concept is to fit everything in one job 12/5/2014 ITTF on Continuous Integration 26

Upcoming 'workflow-plugin' Should allow for much bigger freedom in the CI pipeline Multiple modules and architectures tested per CRM ticket Hopefully all major features will be available in open source If you're already using Jenkins you should probably check it out 12/5/2014 ITTF on Continuous Integration 27

Refs http://www.jenkins-ci.org https://servant.cern.ch http://configdocs.web.cern.ch/configdocs/changes/cr m.html#using-the-continuous-integration-workflow https://github.com/jenkinsci/workflow-plugin 12/5/2014 ITTF on Continuous Integration 28

2/3 A Jenkins Platform Creating Jenkins Masters and Slaves in CERN Forge By Terje Ness Andersen

Motivation Make getting started easier, building on AI experiences Take care of common tasks Single Sign-On Backup SSH Keys Kerberos authentication 12/5/2014 ITTF on Continuous Integration 30

Current prototype Pre-configured Jenkins Master with Slaves Single Sign-On with custom ACL Jenkins configuration and job data stored on persistent volume SSH Key + Kerberos identity for Master+Slaves 12/5/2014 ITTF on Continuous Integration 31

Creation form in CERN Forge Instance Title Access Control List for Single Sign-On Slaves how many, with which size and OS? May be edited after creation 12/5/2014 ITTF on Continuous Integration 32

Creation view in CERN Forge 12/5/2014 ITTF on Continuous Integration 33

Detail view in CERN Forge 12/5/2014 ITTF on Continuous Integration 34

Architecture One VM per Jenkins Master and Slave Jenkins Masters GUI accessible via jenkins.cern.ch Apache frontend reverse proxies to Master Slaves communicate with Jenkins Master directly over HTTPS or SSH 12/5/2014 ITTF on Continuous Integration 35

Jenkins Master 12/5/2014 ITTF on Continuous Integration 36

Architecture Single Sign-On master-1 jenkins.cern.ch frontend-1 frontend-2 master-2 slave-xx master-3 12/5/2014 ITTF on Continuous Integration 37

Configuration ci/jenkins_frontend ci/jenkins_master ci/jenkins_slave Configured with CERN Forge REST API Read for each Puppet Run Uptime and validity critical 12/5/2014 ITTF on Continuous Integration 38

Jenkins Master Initial access control in Jenkins with instance owner as administrator. No administration constraints. Plugins defined in CERN Forge automatically installed. 12/5/2014 ITTF on Continuous Integration 39

Jenkins Slaves Built-in slaves defined in CERN Forge Hosted and configured by us SLC5, SLC6 or CentOS7 Automatically set up in Master User-provided slaves more flexibility: Connect your own slaves Manually set up in master 12/5/2014 ITTF on Continuous Integration 40

Authentication SSH Key installed for Master and built-in slaves Kerberos ticket using machine identity for every Master and built-in slaves Information exposed on info page protected by Single Sign-On 12/5/2014 ITTF on Continuous Integration 41

jenkins.cern.ch/info/<title> 12/5/2014 ITTF on Continuous Integration 42

To-Do Backup of the Jenkins Master volumes Documentation with examples Example jobs in Jenkins Master World or CERN accessible Slave configuration presets 12/5/2014 ITTF on Continuous Integration 43

3/3 CI challenges and future outlook By Alexandre Lossent

Challenge 1: resource efficiency A number of standard slave configurations are provided Within the central Jenkins Openstack project 1 VM / slave Challenge 1: low resource efficiency Depending on the software project, most slave VMs may be doing nothing most of the time How to optimize this? 12/5/2014 ITTF on Continuous Integration 46

Resource efficiency: solutions? Apache Mesos + Docker Slaves running inside Docker containers Pool of VMs in an Apache Mesos cluster to run the Docker containers Enables a clean, fresh slave for every job User-provided Docker images possible with various OS's and environments 12/5/2014 ITTF on Continuous Integration 47

Challenge 2: orchestration Jenkins works with multiple slaves built-in slaves implemented as Puppetmanaged Openstack VMs Master and slaves currently created by hand Initial creation Add/remove slaves for a given project reset to a clean environment How to automate slave provisioning? 12/5/2014 ITTF on Continuous Integration 48

Orchestration: solutions? Custom orchestration workflow and tools Possibly on top of Openstack Heat if available Off-the-shelf orchestration tools for Openstack + Puppet E.g. Cloudify 12/5/2014 ITTF on Continuous Integration 49

Challenge 3: small projects From IT PoW 2015 summary: [ ] ~90 FTE s were involved in software development in one form or another, with many small < 1 FTE projects. Most large software projects using CI already in one form or another Examples in IT, GS, EN, PH, TE, BE TeamCity, Bamboo, Travis CI, Drone.io, Jenkins Challenge 3: How to get small projects (<1 FTE) on board the CI boat? 12/5/2014 ITTF on Continuous Integration 50

Hosted CI services Some examples of popular services for projects hosted on GitHub BuildHive.CloudBees.com (Jenkins) Travis-CI.org Drone.io How do they attract small projects? Zero or minimal configuration effort Zero or minimal cost/build A finite list of supported languages to build+test (Java, C++, PHP ) A list of supported PaaS targets for automated deployment (Google Apps, Heroku, Openshift ) 12/5/2014 ITTF on Continuous Integration 51

Small projects: solutions? Low cost of entry Enabling CI on a project should be a couple clicks away Low maintenance Little to no configuration Automatically detect project type/language Low cost in terms of resources resource efficiency gets even more important Well-defined target platforms Save time and effort by automating application deployment Compromise: no 100% coverage of projects 12/5/2014 ITTF on Continuous Integration 52

Beyond CI These 3 challenges have a scope larger than just Jenkins Docker, orchestration tools, well-defined hosting environments (probably) of interest for a lot of teams PaaS in particular has a really interesting paradigm Consider your typical small web application project 12/5/2014 ITTF on Continuous Integration 53

Typical small web app WebApp instance 1 WebApp instance 2 DNS LB User DBoD 12/5/2014 ITTF on Continuous Integration 54

Just within PES... ~20 typical web apps based on standard platforms From Batch monitoring to Configuration Management tools to Version Control UIs... Django, Ruby on Rails, Perl, Drupal, Tomcat Mobilising >30 VMs Each of them a unique setup 12/5/2014 ITTF on Continuous Integration 55

Typical process Set up a couple VMs to host the app Configuration: Puppet? Ad hoc? Maybe set up a DB Set up DNS Load Balancing Set up SSO Version control? CI/Testing? Long-term VM/OS maintenance... 12/5/2014 ITTF on Continuous Integration 56

Can we do better than this? PaaS Demo: CI in Openshift 12/5/2014 ITTF on Continuous Integration 57

Interesting properties of PaaS Low cost of entry Easily provision a few instances of a given web hosting environment, plus a database Resource efficiency Several instances desired for redundancy, yet each with a small load Low maintenance cost for devs Delegate OS and security hotfix management Trivially add CI to the app 12/5/2014 ITTF on Continuous Integration 58

Typical web app with CI WebApp instance 1 WebApp instance 2 DNS LB User Automatic deployment CI Run tests DBoD Git Dev 12/5/2014 ITTF on Continuous Integration 59

Options to get there? PaaS off-the-shelf solutions Openshift Cloudfoundry Smart orchestration of existing infrastructure and tools Shared Puppet modules, DNSLB, Openstack, SSO, central git service, Jenkins, DBoD Cloudify? 12/5/2014 ITTF on Continuous Integration 61

Conclusion Proven utility of CI in the context of Configuration Management Opportunity to offer CI to a broader audience A must have for all dev projects CI project facing challenges with broad scope Opportunity to improve app development process and hosting in general 12/5/2014 ITTF on Continuous Integration 62

12/5/2014 ITTF on Continuous Integration 63