Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in the manual

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Continuous Delivery @ Prezi

Automated Testing Meetup, San Francisco, May 15, 2014.
by

Szilveszter Farkas

on 25 June 2014

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Continuous Delivery @ Prezi

Continuous Delivery at
Szilveszter Farkas
@szilveszter
Mac OS X (Android simulator)
Mac OS X (desktop)
Windows
Ubuntu 10.04
Ubuntu 12.04
Mac OS X (iOS simulator)
Maksim: autoscaling Jenkins
deployed manually (scp)
script (deploy.sh)
Fabric
http://www.fabfile.org/
Mission Control
with Jenkins integration
Placement: deployment framework
PaaS Team
canary deploys
Managed by Chef
(just like the entire infrastructure)
branch
merge
code review
unit tests
unit tests
create bundles
(code + assets)
deploy to
preproduction
acceptance
deploy to
commit
~"princess" @ Etsy
http://codeascraft.com/2010/05/20/quantum-of-deployment/
pull request
monitoring
alerting
tests
short-lived
feature flags
push
https://wiki.jenkins-ci.org/display/JENKINS/GitHub+pull+request+builder+plugin
http://bit.ly/cdprezi
production data storage
production network
(production hardware)
Twist
Cucumber
http://prezi.com/az1jfe5n0vpt/moving-from-twist-to-cucumber/
Capybara
Selenium
Firefox
SauceLabs
toggle feature flags using tags
catch bugs early
distribute knowledge
build flow kicks off
https://wiki.jenkins-ci.org/display/JENKINS/Build+Flow+Plugin
dashboards
PagerDuty
Sentry
revision = build.properties["environment"]["GIT_COMMIT"]
build_no = build.properties["environment"]["BUILD_NUMBER"]

release_id = build_no + "-" + revision

parallel (
{ fab_virtualenv = build("zuisite-build-fab-virtualenv", GIT_COMMIT: revision)
fab_virtualenv_build_no = fab_virtualenv.buildNumber.toString() },
{ tarball = build("zuisite-build-tarball", GIT_COMMIT: revision, BUILD_NO: build_no)
tarball_build_no = tarball.buildNumber.toString() }
)

parallel(
{ unittests = build("zuisite-placement-unit-tests", TARBALL_BUILD_NO: tarball_build_no, BUILD_NO: build_no) },
{
assets = build("zuisite-build-assets", TARBALL_BUILD: tarball_build_no, BUILD_NO: build_no)
assets_build_no = assets.buildNumber.toString()
parallel (
{ build("zuisite-upload-assets", ASSETS_BUILD_NO: assets_build_no, BUILD_NO: build_no, ROLE: "production") },
{ build("zuisite-upload-tarball", GIT_COMMIT: revision, TARBALL_BUILD: assets_build_no, FAB_VIRTUALENV_BUILD_NO: fab_virtualenv_build_no, BUILD_NO: build_no) }
)
}
)

build("zuisite-placement-deploy-to-preprod", GIT_COMMIT: revision, BUILD_NO: build_no, RELEASE_ID: release_id, FAB_VIRTUALENV_BUILD_NO: fab_virtualenv_build_no)

parallel(
{ build("zuisite-git-acceptance-test-suite", GIT_COMMIT: revision) },
{ build("zuisite-cucumber-tests-desktop", GIT_COMMIT: revision) },
{ build("zuisite-placement-qunit", GIT_COMMIT: revision, TARBALL_BUILD: tarball_build_no, BUILD_NO: build_no) }
)

build("zuisite-register-release", GIT_COMMIT: revision, BUILD_NO: build_no, RELEASE_ID: release_id)
jenkins
using mocks
no Django TestClient
assets uploaded
to CDN
EC2
Mission
Control
cleanup?
emulate devices to test
responsiveness
flaky tests
production
democratized deployment
http://engineering.prezi.com/blog/2014/05/12/outage-of-the-sentry/
https://getsentry.com/
http://blog.8thlight.com/uncle-bob/2014/05/10/WhenToMock.html
https://github.com/prezi
http://engineering.prezi.com/
quality through social
accountability
http://prezi.com/jobs/
See the full transcript