Slide 1

Slide 1 text

Your build is probably broken, you just don't know it yet

Slide 2

Slide 2 text

Broken? ▪ You don’t have one ▪ Your pipeline is unsecure ▪ Your pipeline is slow ▪ Your pipeline is unreliable or unreproducible ▪ Your pipeline is a time sink ▪ Your pipeline is not a core deliverable

Slide 3

Slide 3 text

Treat CI like code ▪ Development Lifecycle ▪ Fast feedback ▪ Zero-downtime ▪ Scalable & Instrumented ▪ Ephemeral ▪ Everything as code

Slide 4

Slide 4 text

Before ▪ Time consuming pipeline orchestration - Chef ▪ Bring your own automation - Jenkins Job Builder ▪ Polluted and inconsistent ▪ Performance & Cost ▪ Environment disparity ▪ Poor usability

Slide 5

Slide 5 text

Concourse CI What you might miss Plugins Being able to configure a gazillion plugins Runtime configuration Change the environment at build time Click-click-clicking Being able to use a GUI to configure build Not knowing BOSH Great tool, getting easier (BBL) with steep learning curve Not knowing Docker Docker is key and you’ll need a workflow to manage images Speed Isolated builds can be slower to initialise e.g. bundle install

Slide 6

Slide 6 text

Install ▪ Vagrant ▪ Docker Compose ▪ Standalone Binary ▪ BOSH [with BBL] e.g. bbl up http://concourse.ci/installing.html

Slide 7

Slide 7 text

Install Vagrant & fly Vagrant 3 minute Configuration 1 second View Up to you $ vagrant init concourse/lite $ vagrant up $ fly -t lite login -c http://192.168.100.4:8080 $ fly -t lite set-pipeline -p hello-world -c hello.yml http://192.168.100.4:8080

Slide 8

Slide 8 text

Configuration Resources resources: - name: micro-app type: git source: uri: https://github.com/bendodd/micro-app.git

Slide 9

Slide 9 text

Configuration Tasks jobs: - name: say-hello-world plan: - get: micro-app trigger: true - task: say-hello-world config: inputs: [name: micro-app] platform: linux image_resource: type: docker-image source: {repository: ubuntu} run: dir: micro-app path: ./pass.sh

Slide 10

Slide 10 text

- name: say-goodbye-world plan: - get: micro-app trigger: true passed: [say-hello-world] - task: say-goodbye-world config: inputs: [name: micro-app] platform: linux image_resource: type: docker-image source: {repository: ubuntu} run: dir: micro-app path: ./fail.sh jobs: - name: say-hello-world plan: - get: micro-app trigger: true - task: say-hello-world config: inputs: [name: micro-app] platform: linux image_resource: type: docker-image source: {repository: ubuntu} run: dir: micro-app path: ./pass.sh

Slide 11

Slide 11 text

- name: say-goodbye-world plan: - get: micro-app trigger: true passed: [say-hello-world] - task: say-goodbye-world config: inputs: [name: micro-app] platform: linux image_resource: type: docker-image source: {repository: ubuntu} run: dir: micro-app path: ./fail.sh jobs: - name: say-hello-world plan: - get: micro-app trigger: true - task: say-hello-world config: inputs: [name: micro-app] platform: linux image_resource: type: docker-image source: {repository: ubuntu} run: dir: micro-app path: ./pass.sh

Slide 12

Slide 12 text

- name: say-goodbye-world plan: - get: micro-app trigger: true passed: [say-hello-world] - task: say-goodbye-world config: inputs: [name: micro-app] platform: linux image_resource: type: docker-image source: {repository: ubuntu} run: dir: micro-app path: ./fail.sh jobs: - name: say-hello-world plan: - get: micro-app trigger: true - task: say-hello-world config: inputs: [name: micro-app] platform: linux image_resource: type: docker-image source: {repository: ubuntu} run: dir: micro-app path: ./pass.sh

Slide 13

Slide 13 text

UI

Slide 14

Slide 14 text

UI

Slide 15

Slide 15 text

UI

Slide 16

Slide 16 text

UI

Slide 17

Slide 17 text

UI

Slide 18

Slide 18 text

UI

Slide 19

Slide 19 text

$ fly set-pipeline Echo Before I was lost! Echo Now I’m found! Apply configuration: [yN] :

Slide 20

Slide 20 text

$ fly execute $ fly -t my-cci execute \ --config tests.yml --input code=.

Slide 21

Slide 21 text

$ fly hijack $ fly -t my-cci hijack \ --job some-pipeline/some-job

Slide 22

Slide 22 text

No content

Slide 23

Slide 23 text

Examples Super Mega Awesome

Slide 24

Slide 24 text

Getting Started Learning by Example

Slide 25

Slide 25 text

HELP!

Slide 26

Slide 26 text

After ▪ Configurable as code ▪ Unpolluted builds ▪ Scaleable ▪ Fast feedback ▪ Learnt in a single-sitting ▪ Platforms & Software

Slide 27

Slide 27 text

Give it a go? @bendodd @armakuniHQ http://concourse.ci/getting-started.html