The easy lazy way to production

Who am I?

Carlos PHP developer

  • 6 year experience in PHP
  • 2 year experience Symfony 3 & Drupal 8
  • 1 year experience Docker & Concourse CI

 

@Saphyel

Where do I work?

Comic Relief is a major charity in the UK.
We've raised over £1 billion since we started 1985 and organize two main campaigns: Red nose day & Sport relief.

 

Peak visitors per day: 273,117

 

Lazy Developer

Hire a lazy developer to do a difficult job because he will find an easy way to do it

Bill Gates

Problems

  • Scare of deployments to production
  • Spend a whole day deploying
  • Check that production is not broken

Inspiration

In software, when something is painful, the way to reduce the pain is to do it more frequently, not less

David Farley, Continuous Delivery: Reliable Software Releases through build, test and deployment automation.

Goals

  • Developers focus only to produce good code/test
  • Fast delivery to production
  • Instant feedback
  • Regular updates of the tool
  • Snapshots/backups, reports, etc.. automatically
  • Newcomers commit to production the first day
  • Do nothing

Jenkins fight!

  • Jenkins servers are extremely resistant to being declaratively configured

  • It has no first class support for pipelines (You need plugins)

  • It needs you to scouring the earth for a still-maintained plugin to accomplish your goals

  • Trying to find the build output log for a failed build in Jenkins are a bit hidden

Fly

  • It’s the CLI of concourse CI.
  • This tool allow you to login in your account in order to create teams, create, update or delete your pipelines and more options.

Task - Theory

  • A task is the smallest configurable unit in the pipeline … usually they execute a script and they return if it succeeded or failed.

  • They may have an input, that could be anything and is defined in the resource section. The input is fetched before of the execution of the script.

  • Additionally they may have an output too, this one is similar to input but is executed after the script finish and usually updates a resource.

Tasks - Code

Jobs - Tasks

Tasks - input/output

Jobs - Theory

  • They are the main thing you see in the pipeline.
  • They may have more than one resource but only one task, they can be linked, run in serial or parallel (default).

Jobs - Code

Resources - Theory

  • It is the object that is going to be used by a job.
  • There are several types of resource, some of them are official, others supported by the community and you can create your own custom one.
  • Another important thing is resources can trigger a job, so for instance if there is a new commit in your master branch and your resource is getting that branch it will trigger the job automatically.

Resources - Code

Resource types - Code

Groups / Tabs

Recorded demo

Microservices pipeline

That's all folks!

  • Questions?

Special Thanks:

Clare, Peter and Ayan

The lazy way to production

By Carlos Jimenez (Saphyel)

The lazy way to production

Drupal summer 2017 slides

  • 1,421