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,537