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

Continuous Integration

Continuous delivery

vs

Continuous deployment

Why?

Reduced Deployment Risk

Why?

Focused on business

Deploying major new features to production should be as easy as starting a flamewar on Hacker News about spaces versus tabs.

Zach Holman

Artifact

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

too much notifications

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