Slide 1

Slide 1 text

DELIVER @gerhardlazu LRUG 03.2013

Slide 2

Slide 2 text

GIT-DEPLOY CAPISTRANO VLAD MINA FABRIC ASGARD CHEF PUPPET puppi GIT-DEPLOY application RECAP

Slide 3

Slide 3 text

BACK TO BASICS git ssh foreman bash WE ARE A UNIX SHOP, EVERYTHING ELSE IS JUST A DETAIL

Slide 4

Slide 4 text

DO ONE THING DO IT TO THE BEST OF YOUR ABILITIES

Slide 5

Slide 5 text

SMALL IS BEAUTIFUL SIMPLICITY OVER PERFECTION

Slide 6

Slide 6 text

.deliver/config 1 #!/usr/bin/env bash 2 3 $APP="foo" 4 $HOSTS="foo.1 foo.2" 5 $PORT="5000" 6 7 post_launch() { 8 notify_newrelic_of_deployment 9 clean_static_cache 10 }

Slide 7

Slide 7 text

PROBLEM FOCUS ON THE

Slide 8

Slide 8 text

$ deliver check ORIGIN_DIR /Users/gerhard/code/foo STRATEGY ruby HOSTS foo.1 foo.2 ----------------------------------------------------------- APP foo APP_USER foo DELIVER_TO ~foo/app REFSPEC master GIT_PUSH -f REVISION f80584aa195479eaa613aa2f5900009188 PORT 5000 SUPERVISOR upstart READY TO DELIVER!

Slide 9

Slide 9 text

MODES COMPACT verbose debug plain

Slide 10

Slide 10 text

$ deliver DELIVERING FOO WITH RUBY STRATEGY -----> Authorizing hosts -----> Ensuring hosts are ready to accept git pushes -----> Pushing new commits with git to: [email protected] [email protected] -----> Resetting remote hosts to f80584aa195479eaa613aa2f590 -----> Updating git submodules -----> Installing gems with bundler -----> Exporting services to upstart -----> Launching app with upstart -----> Notifying New Relic of new deployment FOO DELIVERED!

Slide 11

Slide 11 text

ruby STRATEGIES node.js shared generated gh-pages S3

Slide 12

Slide 12 text

strategies/ruby 1 run() { 2 authorize_hosts 3 init_app_remotely 4 git_push 5 git_reset_remote 6 authorize_remote_hosts 7 git_submodules 8 rvmrc_trust 9 bundle_install 10 foreman_export 11 launch 12 }

Slide 13

Slide 13 text

HOOKS init_app_remotely git_push git_submodules bundle_install foreman_export launch

Slide 14

Slide 14 text

.deliver/config 1 #!/usr/bin/env bash 2 3 $APP="foo" 4 $HOSTS="foo.1 foo.2" 5 $PORT="5000" 6 7 post_launch() { 8 notify_newrelic_of_deployment 9 clean_static_cache 10 }

Slide 15

Slide 15 text

CONTINUOUS DELIVERY RELIABLY RELEASING HIGH-QUALITY SOFTWARE QUICKLY CONTINUOUS INCREMENTAL CHANGES WITH MINIMAL RISK

Slide 16

Slide 16 text

bin/build 1 #!/usr/bin/env bash 2 3 # functions 4 5 setup_dependencies 6 run_tests 7 tag_for_deploy 8 use_compiled_assets 9 _deliver

Slide 17

Slide 17 text

Gerhard L. hubot deliver foo foo.1

Slide 18

Slide 18 text

PRODUCTION IF IT’S NOT IN PRODUCTION, IT’S INVENTORY

Slide 19

Slide 19 text

DELIVER, BE HAPPY! QUESTIONS @gerhardlazu LRUG 03.2013