Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Continuous wut?

Continuous wut?

Small talk on continuous integration

Sergey Arkhipov

January 14, 2013
Tweet

More Decks by Sergey Arkhipov

Other Decks in Programming

Transcript

  1. Continuous wut?
    Pretty humble talk by Sergey Arkhipov.
    Seriously.

    View full-size slide

  2. — Hi there. I write code.

    View full-size slide

  3. package com.hello.world;
    public class HelloWorld {
    public static void main(String[] args) {
    System.out.println("Hello, world!");
    }
    }

    View full-size slide

  4. — And this is how we build product

    View full-size slide

  5. package com.hello.world;
    public class HelloWorld {
    public static void main(String[] args) {
    System.out.println("Hello, world!");
    }
    }

    View full-size slide

  6. package com.hello.world;
    public class HelloWorld {
    public static void main(String[] args) {
    System.out.println("Hello, world!");
    }
    }
    Magic

    View full-size slide

  7. package com.hello.world;
    public class HelloWorld {
    public static void main(String[] args) {
    System.out.println("Hello, world!");
    }
    }
    Magic
    Product

    View full-size slide

  8. — Before agile became mainstream
    nobody actually cared about quality
    of magic

    View full-size slide

  9. — This is Microsoft daily build flow

    View full-size slide

  10. — So why agile matters and what is the problem?

    View full-size slide

  11. — Agile renamed team leaders to scrum
    masters, gave billions to sticky
    notes manufacturers and
    responsibility for developers.

    View full-size slide

  12. — Agile renamed team leaders to scrum
    masters, gave billions to sticky
    notes manufacturers and
    responsibility for developers.

    View full-size slide

  13. Agile fundamentals

    Team responsibility

    Iterative development

    Plan driven management

    Requirements emerge through feedback

    View full-size slide

  14. Agile fundamentals

    Team responsibility

    Iterative development

    Plan driven management

    Requirements emerge through feedback

    View full-size slide

  15. Software should always be
    Software should always be buildable

    View full-size slide

  16. Software should always be
    Software should always be tested

    View full-size slide

  17. Software should always be
    Software should always be deployable

    View full-size slide

  18. Software should always be
    Software should always be ready

    View full-size slide

  19. /usr/lib/gcc/i386-redhat-linux/4.0.0/../../../crt1.o(.text+0x18): In function
    `_start':: undefined reference to `main'
    collect2: ld returned 1 exit status
    — Red build again!

    View full-size slide

  20. /usr/lib/gcc/i386-redhat-linux/4.0.0/../../../crt1.o(.text+0x18): In function
    `_start':: undefined reference to `main'
    collect2: ld returned 1 exit status
    — I have nothing to test!

    View full-size slide

  21. /usr/lib/gcc/i386-redhat-linux/4.0.0/../../../crt1.o(.text+0x18): In function
    `_start':: undefined reference to `main'
    collect2: ld returned 1 exit status
    — We have nothing to deliver to customer!..

    View full-size slide

  22. /usr/lib/gcc/i386-redhat-linux/4.0.0/../../../crt1.o(.text+0x18): In function
    `_start':: undefined reference to `main'
    collect2: ld returned 1 exit status
    — We are losing money!..

    View full-size slide

  23. — Let's go CI!

    View full-size slide

  24. Continuous Integration
    Continuous Integration is a software development
    practice where members of a team integrate their work
    frequently, usually each person integrates at least daily —
    leading to multiple integrations per day. Each integration
    is verified by an automated build (including test) to detect
    integration errors as quickly as possible. Many teams find
    that this approach leads to significantly reduced
    integration problems and allows a team to develop
    cohesive software more rapidly.
    — Martin Fowler

    View full-size slide

  25. Continuous Integration
    Continuous Integration is a software development
    practice where members of a team integrate their work
    frequently, usually each person integrates at least
    daily — leading to multiple integrations per day. Each
    integration is verified by an automated build (including
    test) to detect integration errors as quickly as
    possible. Many teams find that this approach leads to
    significantly reduced integration problems and allows a
    team to develop cohesive software more rapidly.
    — Martin Fowler

    View full-size slide

  26. Continuous Integration Practices

    Maintain a Single Source Repository

    Automate the Build

    Make Your Build Self-Testing

    Everyone Commits To the Mainline Every Day

    Every Commit Should Build the Mainline on an Integration
    Machine

    Keep the Build Fast

    Test in a Clone of the Production Environment

    Make it Easy for Anyone to Get the Latest Executable

    Everyone can see what's happening

    Automate Deployment

    View full-size slide

  27. — What are you going to do if machinery
    stopped?

    View full-size slide

  28. — Please stop this marketing bullshit!
    What is the main idea to use CI?
    responsibility for developers.

    View full-size slide

  29. The real reasons why CI

    We don't trust you

    View full-size slide

  30. The real reasons why CI

    We don't trust you

    We care about overall quality of product

    View full-size slide

  31. The real reasons why CI

    We don't trust you

    We care about overall quality of product

    We hate big merges

    View full-size slide

  32. The real reasons why CI

    We don't trust you

    We care about overall quality of product

    We hate big merges

    We hate duches prefer escalating not solving
    problems

    View full-size slide

  33. The real reasons why CI

    We don't trust you

    We care about overall quality of product

    We hate big merges

    We hate duches prefer escalating not solving
    problems

    We got paid

    View full-size slide

  34. Got questions?

    View full-size slide