Continuous Integration using Docker & Jenkins

Similar documents
Continuous Delivery of Micro Applications with Jenkins, Docker & Kubernetes at Apollo

DevOps Course Content

DEVOPS COURSE CONTENT

JetBrains TeamCity Comparison

DEVOPS TRAINING COURSE CONTENT

Developing and Testing Java Microservices on Docker. Todd Fasullo Dir. Engineering

AALOK INSTITUTE. DevOps Training

We are ready to serve Latest Testing Trends, Are you ready to learn?? New Batches Info

Taming your heterogeneous cloud with Red Hat OpenShift Container Platform.

Advanced Continuous Delivery Strategies for Containerized Applications Using DC/OS

Accelerate at DevOps Speed With Openshift v3. Alessandro Vozza & Samuel Terburg Red Hat

Bitte decken Sie die schraffierte Fläche mit einem Bild ab. Please cover the shaded area with a picture. (24,4 x 7,6 cm)

Who Moved My Module? 1

DevOps Technologies. for Deployment

CloudCenter for Developers

Lifecycle management with Foreman and Katello Basics and Spacewalk migration

Deployment Patterns using Docker and Chef

Sunil Shah SECURE, FLEXIBLE CONTINUOUS DELIVERY PIPELINES WITH GITLAB AND DC/OS Mesosphere, Inc. All Rights Reserved.

Amir Zipory Senior Solutions Architect, Redhat Israel, Greece & Cyprus

[Docker] Containerization

Linux System Management with Puppet, Gitlab, and R10k. Scott Nolin, SSEC Technical Computing 22 June 2017

CONTINUOUS DELIVERY WITH DC/OS AND JENKINS

DevOps Online Training

UP! TO DOCKER PAAS. Ming

Jenkins: A complete solution. From Continuous Integration to Continuous Delivery For HSBC

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

EVERYTHING AS CODE A Journey into IT Automation and Standardization. Raphaël Pinson

ACCELERATE APPLICATION DELIVERY WITH OPENSHIFT. Siamak Sadeghianfar Sr Technical Marketing Manager, April 2016

DevOps Course Content

Continuous Integration and Deployment (CI/CD)

Treating Deployments as Code with Puppet and the Atlassian Toolsuite Puppet Camp, Geneva

Multi-Arch Layered Image Build System

Jenkins User Conference Israel. #jenkinsconf. CI / Liveperson. Gidi Samuels. July 16, #jenkinsconf

Red Hat Roadmap for Containers and DevOps

NetApp Jenkins Plugin Documentation

By: Jeeva S. Chelladhurai

Continuous Delivery of your infrastructure. Christophe

ThinkPalm s BreakThrough DevOps Capabilities ThinkPalm

Build Cloud like Rackspace with OpenStack Ansible

ovirt and Docker Integration

OPEN-O DevOps Practice with Automation Toolchain

OpenStack Enabling DevOps Shannon McFarland CCIE #5245 Distinguished DEVNET-1104


Salt A Scalable Systems Management Solution for Datacenters

TM DevOps Use Case TechMinfy All Rights Reserved

KUBERNETES IN A GROWN ENVIRONMENT AND INTEGRATION INTO CONTINUOUS DELIVERY

#jenkinsconf. Managing jenkins with multiple components project. Jenkins User Conference Israel. Presenter Name Ohad Basan

TM DevOps Use Case. 2017TechMinfy All Rights Reserved

JenkinsPipelineUnit. Test your Continuous Delivery Pipeline. Ozan Gunalp - Emmanuel Quincerot

CS-580K/480K Advanced Topics in Cloud Computing. Container III

Container in Production : Openshift 구축사례로 이해하는 PaaS. Jongjin Lim Specialist Solution Architect, AppDev

Think Small to Scale Big

CONTINUOUS DELIVERY WITH MESOS, DC/OS AND JENKINS

Distributed CI: Scaling Jenkins on Mesos and Marathon. Roger Ignazio Puppet Labs, Inc. MesosCon 2015 Seattle, WA

SUSE Manager and Salt

Seven Habits of Highly Effective Jenkins Users

OpenShift Roadmap Enterprise Kubernetes for Developers. Clayton Coleman, Architect, OpenShift

AEM Code Promotion and Content Synchronization Best Practices

CONTINUOUS INTEGRATION; TIPS & TRICKS

UNDER THE HOOD. ROGER NUNN Principal Architect/EMEA Solution Manager 21/01/2015

Continuous Integration, Continuous Deployment and Continuous Testing by HP Codar using ALM and Jenkins

Index. Chaminda Chandrasekara 2017 C. Chandrasekara, Beginning Build and Release Management with TFS 2017 and VSTS, DOI /

개발자와운영자를위한 DevOps 플랫폼 OpenShift Container Platform. Hyunsoo Senior Solution Architect 07.Feb.2017

Anchore Container Image Scanner Plugin

Containers OpenStack. Murano brings Docker & Kubernetes to OpenStack. Serg Melikyan. software.mirantis.com. January 27, 2015

How to Take the CI/CD Plunge

DevOps examples on NonStop Tools Overview. Cor Geboers, ATC Consultant

TEN LAYERS OF CONTAINER SECURITY

Docker and Oracle Everything You Wanted To Know

Jenkins CI for MacDevOps. Tim Sutton Concordia University, Faculty of Fine Arts Montreal

70-532: Developing Microsoft Azure Solutions

TM DevOps Use Case. 2017TechMinfy All Rights Reserved

Cloud Native Java with Kubernetes

Continuous Integration & Code Quality MINDS-ON NUNO 11 APRIL 2017

HOW TO STAND OUT IN DEVOPS

Microservice Deployment. Software Engineering II Sharif University of Technology MohammadAmin Fazli

Patching and Updating your VM SUSE Manager. Donald Vosburg, Sales Engineer, SUSE

Red Hat Satellite Server 6.2 Pattern

Deploying a Private OpenStack Cloud at Scale. Matt Fischer & Clayton O Neill

Pipeline as Code for your IAC. Kris

Deployment Within a Traditional IT environment

Bitnami JRuby for Huawei Enterprise Cloud

SUSE s vision for agile software development and deployment in the Software Defined Datacenter

What s New in Red Hat OpenShift Container Platform 3.4. Torben Jäger Red Hat Solution Architect

Baremetal with Apache CloudStack

A WEB-BASED SOLUTION TO VISUALIZE OPERATIONAL MONITORING LINUX CLUSTER FOR THE PROTODUNE DATA QUALITY MONITORING CLUSTER

Multi-Cloud and Application Centric Modeling, Deployment and Management with Cisco CloudCenter (CliQr)

CONTINUOUS DELIVERY IN THE ORACLE CLOUD

Lab 5 Exercise Build and continuous integration tools

Important DevOps Technologies (3+2+3days) for Deployment

Quick Prototyping+CI with LXC and Puppet

What I ll be talking about. About me & bol.com The CI/CD bol.com Current setup. The future in the cloud

Orchestrating the Continuous Delivery Process

Continuous Deployment with Gerrit and Jenkins

Roles. Ecosystem Flow of Information between Roles Accountability

Using DC/OS for Continuous Delivery

Leveraging the OO Jenkins Plugin in DevOps scenarios

Azure DevOps. Randy Pagels Intelligent Cloud Technical Specialist Great Lakes Region

Continuous Integration (CI) with Jenkins

GETTING STARTED WITH. Michael Lessard Senior Solutions Architect June 2017

Transcription:

Jenkins LinuxCon Europe 2014 October 13-15, 2014 Mattias Giese Solutions Architect giese@b1-systems.de - Linux/Open Source Consulting, Training, Support & Development

Introducing B1 Systems founded in 2004 operating both nationally and internationally more than 60 employees; low employee turnover Provider for IBM, SUSE, Oracle & HP vendor-independent (hardware and software) Focus: Consulting Support Development Training Operations Solutions Jenkins 2 / 43

Areas of Expertise Virtualization (XEN, KVM & RHEV) Systems management (Spacewalk, Red Hat Satellite, SUSE Manager) Configuration management (Puppet & Chef) Monitoring (Nagios & Icinga) IaaS Cloud (OpenStack & SUSE Cloud) High availability (Pacemaker) Shared Storage (GPFS, OCFS2, DRBD & CEPH) File Sharing (owncloud) Packaging (Open Build Service) Providing on-site systems administration and/or development Jenkins 3 / 43

Partners Jenkins 4 / 43

Deployment Stack Jenkins 5 / 43

Deployment Stack Technologies Used Docker an open platform for developers and sysadmins to build, ship, and run distributed applications Fig a Docker orchestration tool Gitlab an Open Source software to collaborate on code Jenkins an Open Source continuous integration system Puppet/r10k an Open Source configuration management system to define the state of an IT infrastructure and to automatically enforce this state Jenkins 6 / 43

Docker Build, Ship and Run Applications Jenkins 7 / 43

What is Docker? an open platform for developers and sysadmins Open Source Engine to standardize LXC build, ship and run (distributed) applications easy to use create and share images chroot on steroids all you need is inside the container not a Virtual Server less overhead Jenkins 8 / 43

Technologies Used Linux Containers (LXC) chroot use of Linux Kernel features: cgroups kernel namespaces... Jenkins 9 / 43

Features can run any distribution if it will run on Linux it will run in Docker limited to the same architecture as the host all you need is inside the container libraries dependencies... Jenkins 10 / 43

Fig A Docker Orchestration Tool simple orchestration tool for Docker easy to deploy and use helps to define and control a multi-container service Jenkins 11 / 43

GitLab Collaboration on Code Jenkins 12 / 43

Features completely free and Open Source manage and browse Git repositories keep your code secure on own server manage access permissions perform code review and merge requests hooks much more! Jenkins 13 / 43

Gitlab 1/3 Jenkins 14 / 43

Gitlab 2/3 Jenkins 15 / 43

Gitlab 3/3 Jenkins 16 / 43

Jenkins Continuous Integration Jenkins 17 / 43

What is Jenkins? Jenkins is a server-based system for continuous integration running in a servlet container (like Apache Tomcat). Jenkins supports SCM tools including AccuRev, CVS, Subversion, Git, Mercurial, Perforce, Clearcase and RTC, and can execute Apache Ant and Apache Maven. Jenkins is free software, released under the MIT License. Builds can be started by various means, including being triggered by commit in a version control system. Jenkins monitors executions of repeated jobs, such as building a software project or jobs run by cron. Jenkins is written in Java and released under the MIT License. Jenkins 18 / 43

Jenkins 1/3 Jenkins 19 / 43

Jenkins 2/3 Jenkins 20 / 43

Jenkins 3/3 Jenkins 21 / 43

Jenkins Plugins Docker Buildstep allows to add various docker commands into a job as a build step. Docker publish provides the ability to build projects with a Dockerfile and publish them to the docker registry. Git allows the use of Git as a build SCM. Gitlab a build trigger that makes GitLab think Jenkins is a GitLab CI. Build Pipeline Plugin provides a Build Pipeline View of upstream and downstream connected jobs that typically form a build pipeline. Downstream-Ext Plugin supports extended configuration for triggering downstream builds. Publish Over SSH Plugin transfers files and data secured by SSH. Chuck Norris ;)... Jenkins 22 / 43

Jenkins Build Pipeline Plugin provides a Build Pipeline View of upstream and downstream connected jobs that typically form a build pipeline. offers the ability to define manual triggers for jobs that require intervention prior to execution, e.g. an approval process outside of Jenkins. Jenkins 23 / 43

Jenkins Downstream-Ext Plugin This plugin supports extended configuration for triggering downstream builds: triggers build only if downstream job has SCM changes triggers build if upstream build result is better/equal/worse than any given result (SUCCESS, UNSTABLE, FAILURE, ABORTED) for Matrix (alias multi-configuration) jobs, you can decide which part of the job should trigger the downstream job: parent only, configurations only, or both Jenkins 24 / 43

Jenkins Publish Over SSH Plugin SCP send files over SSH (SFTP) execute commands on a remote server username and password or public key authentication passwords & -phrases encryption in configuration files and UI SSH SFTP/SSH Exec as a build step during the build process SSH before a (maven) project build, or to run after a build whether the build was successful or not send files directly from the artifacts directory of the build that is being promoted ("promotion aware") optionally override the authentication credentials for each server in the job configuration optionally retry if the transfer of files fails enable the command/script to be executed in a pseudo TTY Jenkins 25 / 43

Puppet Configuration Management Jenkins 26 / 43

What is Puppet? a configuration management system to define a certain state of an IT infrastructure developed since 2005 by Puppet Labs describes resources and their state in manifests uses its own declarative language distributes these manifests through a server program called master Agents on the target systems enforce the desired state. System specific information will be discovered using facter for a dynamic configuration. Agents also send a report on the taken actions back to the Puppet master. Puppet s open API can send and receive data to/from third-party tools. Jenkins 27 / 43

Puppet r10k deployment helper for Puppet modules (internal/puppet Forge) uses a cache directory to preserve space may use a so called Puppetfile for complex deployment needs ( Gemfile) Jenkins 28 / 43

Use Case 1: Automatic Testing of a Puppet Module Jenkins 29 / 43

Use Case 1 Automatic Testing of a puppet module Jenkins 30 / 43

Use Case 1 Prerequesites Requirements: base Docker container for every supported OS of a module are being built as seperate jobs Preparation: 1 git push to development branch 2 Gitlab triggers Jenkins Webhook 3 Jenkins merges dev with test branch Jenkins 31 / 43

Use Case 1 puppet-memcached-units 1 Jenkins creates a new container. 2 r10k deploys all puppet code. 3 simple syntax and style(lint) checks 4 rspec-puppet is run. Jenkins 32 / 43

puppet-memcached-units Jenkins 33 / 43

Use Case 1 Job: puppet-memcached-acceptance 1 Jenkins starts a fresh container from a puppet-enabled base image 2 r10k deploys all needed Puppet code 3 puppet apply is run with the specified module: PUPPETENV=/puppet/environments/dev/ puppet apply debug modulepath $PUPPETENV/modules $PUPPETENV/modules/$PUPPETMODULE/test/init.pp Jenkins 34 / 43

puppet-memcached-acceptance Jenkins 35 / 43

Use Case 2: Integration/Acceptance Testing of a Simple Webapp Jenkins 36 / 43

Use Case 2: Integration/Acceptance Testing of a Simple Webapp simple use case for a multi-tier app httpd + webapp and mysql need to be linked together should be automatically deployed if possible two containers: owncloud and mysql automatic rebuild on change after changes, integration testing should be done if integration tests succeed, deploy app on staging host Jenkins 37 / 43

Jenkins Job Overview Jenkins 38 / 43

Docker Build Pipeline 1 Jenkins 39 / 43

Docker Build Pipeline 2 Jenkins 40 / 43

Next Steps Jenkins 41 / 43

Next Steps Most Docker image jobs are identical: implement flow/job dsl plugin create a dynamic test matrix for Puppet modules multi-configuration jobs may help with that use Packer for building base Docker images (Puppet Provisioner) integrate with CoreOS/Project Atomic/OpenStack implement a better global orchestration scheme (TerraForm, Ansible, SaltStack maybe?) integrate with clustered configuration through Serf/Consul or others automatic handoff to QA, tests with real world data in staging environments easy push button tagging of Docker images to production may be implemented through promoted builds Jenkins 42 / 43

Thank you for your attention! For further information, please contact: info@b1-systems.de or +49 (0)8457-931096 - Linux/Open Source Consulting, Training, Support & Development