## [A pipeline](#/0) ### to get you excited https://github.com/gerhard/pipeline
## [Workshop preview](#/1) * 30' - INTRO & SETUP * 15' - ☕ 🏓 * 30' - HANDS-ON LEARNING * 15' - 🏓 ☕ * 30' - LEARN FROM OTHERS
## [Intro](#/2) & setup

What is
a pipeline?

## [A pipeline makes](#/4) ### the repetitive always correct Note: Imagine if getting the best of your work to your users was automated. Some of you might already be doing this, and some might be doing it for many years, maybe even a decade. Now imagine if every single trivial task was automated by some pipeline. I'm thinking testing, compiling, packaging, distributing, benchmarking, scaling and everything else in between. Imagine if anything that can be run in a shell environment was automated... Imagine all the things that you could be doing with the time that this would gain you...
## [A pipeline is the secret](#/5) ### to happy & successful teams Note: What if I told you that there are many companies out there that are doing just this? This is everything from one-man bands to enterprises with tens of thousands of developers. I want to show you what that means...
## Pre-requisites for ## [making your pipeline](#/6)
## 1/5 | [workshop files](#/7)
## 2/5 | [fly](#/9)
Note: The easiest way to ensure that you have the correct fly version is to download it from the CI that you will be targeting
## 3/5 | [make](#/12)
## 4/5 | [openssl](#/14)
## 5/5 | [login](#/16)
# ☕ [15'](#/18) BREAK 🏓
## [Let's make](#/19) ## a simple ## pipeline Note: `make simple`
Note: `make preview` This is a pipeline with: 1 resource called app & 1 job called deploy `app` is an input to deploy - think STDOUT in the UNIX pipe context `deploy` is a job - think unit of work
## [Unpause](#/23) ## your pipeline
Note: `make unpause`
## Manually ## [trigger deploy](#/27)
## What is [app](#/32)?
Note: App is a resource - of type git - it's a git repository - every git commit is a different version - the resource's version determines the job artefact - it acts both as an input and output - this is a very simple and powerful concept that scales really well
## What is [deploy](#/34)?
Note: Deploy is a job - every job has builds - builds can be in different states - every build has input versions - a job has tasks
Note: Your deploy job has 1 input, app with a version. It also has 1 task called make-public for which you can see the output when the job builds.
## So what did you [deploy](#/37)?
## [Let's make](#/39) ## a better ## pipeline Note: `make production`
## The push job ## [auto-triggers](#/41)
## The push job has ## [1 input](#/43) & [1 output ](#/43) Note: No tasks...
## New app version ## [0-downtime deploy](#/45) Note: It took 1 line of YAML configuration
## App auto-scales ## [based on time of day](#/47)
# ☕ [15'](#/50) BREAK 🏓
# [Learn](#/51) ## from others
## [Infrastructure](#/52) pipeline
## [Small OSS](#/56) pipeline
## [Large OSS](#/61) pipeline
## [Pipeline-driven](#/71) company
# [Q](#/73) & [A](#/73)