Continuous Delivery – Jenkins in the Real World



Continuous Delivery – Jenkins in the Real World

0 1


jenkins-real-world

Continuous Delivery with Jenkins in the Real World

On Github gianarb / jenkins-real-world

Continuous Delivery

Jenkins in the Real World

by Gianluca Arbezzano / @CurrencyFair

Gianluca Arbezzano

Software Engineer at CurrencyFair

OpenSource maintainer

twitter.com/gianarb - github.com/gianarb

We don't

Install a new Jenkins server

We don't

understand how works a specific plugin

We don't

learn how put your symfony application under CI

In first because we work with ZF

but you don't care about it! We will be agnostic

Continuous Delivery

your project has a lifecycle, there is a button to put a version of your code on one environment

Continuous Integration

Continuous Integration is a software development practice where members of a team integrate their work frequently. Martin Fowler

Continuous delivery

vs

Continuous deployment

Continuous Deployment means that every change goes through the pipeline and automatically gets put into production Continuous Delivery you are able to do frequent deployments but may choose not to do it.

Why?

Reduced Deployment Risk

little but frequent change, server is better that dev

Why?

Focused on business

Don't care about how your code go in prod, stay focused on features
Deploying major new features to production should be as easy as starting a flamewar on Hacker News about spaces versus tabs.

Zach Holman

How to deloy software - stay easy, one of the first Github's engineer

Artifact

Build's result

About the ecosystem

  • ~40 employee
  • 5 teams

Our stack

  • 3 PHP applications and different libraries
  • 1 Java application and different libraries
  • Other different repositories

Developers are great people but they have some problem of focus

Make your pipeline unique!

The integrations are generals

Pipeline

Layers to deploy your code

Like: notifications, tests, artifact, other notification, deploy, smoke tests

1. Unique

There are a lot of rules but all projects and all team are different, study and build the best pipeline for your project

2. face the front but don't forget the past

The new code is awesome but your pipeline must work also during a disaster

3. Speedy

in 1 minutes I can maintain the focus on the execution but 5 minutes are a lot, you can take a coffé or start to think about another task and return on your old task require an effort

4. Reproducible

make, ant, grunt make your pipe easy to reproduce outside the runner

5. Versionable

The history of your pipeline it's important, try to maintain it

6. Track! Track! Track!

Monitor the productivity and mark your important steps

6. Track! Track! Track!

Mark a deploy to understand the changes

6. Track! Track! Track!

And also to organize a party when you pass 1.000 deploy!

7. Scalable

your company would grow and the continuous integration system burns to helps it to grow and it can not stop it because doesn't scale!

7. Communication layer

Create the best communication flow between your continuous integration system and your team, your goal is disable the Jenkins UI

Only for strong hearts

Infrastructure as code

Also Chef server is in continuous delivery

Infrastructure as code

Also Chef server is in continuous delivery

Tools

Build flow

  • Ant
  • Capistrano

Concurrency

We are in the real world

Stay focused

plugin jenkins ghprb

Create strong integration

Work hard to maintain your pipeline efficient

It's in continuous evolution

Future

Support our growing

Future

Jenkins 2, Pipeline and DSL

Thanks

gianarb.it

@gianarb

Continuous Delivery Jenkins in the Real World by Gianluca Arbezzano / @CurrencyFair