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

Continuous What?! - Deploying software the right way - Part II

Continuous What?! - Deploying software the right way - Part II

The practical part of a two-part presentation given to university students about the process of deploying software.

Marcel Neidinger

November 24, 2016
Tweet

More Decks by Marcel Neidinger

Other Decks in Programming

Transcript

  1. what happend till now ?

    View Slide

  2. View Slide

  3. “In theory, there is no difference between
    theory and practice. But in practice, there
    is.” - Yogi Berra

    View Slide

  4. Kontinuierliche Integration ist ein Begriff aus der Software-Entwicklung,
    der den Prozess des fortlaufenden Zusammenfügens von
    Komponenten zu einer Anwendung beschreibt. […]
    - Wikipedia

    View Slide

  5. code

    View Slide

  6. production

    View Slide

  7. Continous what?
    CI in the real world
    Deploy software
    in the 21th century
    Marcel Neidinger
    m.neidinger (at) unibas.ch

    View Slide

  8. - Yogi Berra
    Designing CI Pipelines

    View Slide

  9. Designing CI Pipelines
    SCM
    Changes
    Code
    compile
    check
    report
    report
    executable

    View Slide

  10. Designing CI Pipelines
    SCM
    Changes
    Code
    compile
    check
    report
    report
    executable
    Unit Tests
    Integration Tests
    Code coverage
    Memory leaks
    Translation checks …

    View Slide

  11. Designing CI Pipelines
    SCM
    Changes
    Code
    compile
    check
    report
    report
    executable
    E-Mail
    ChatOps
    Issues

    View Slide

  12. tools
    to the rescue

    View Slide

  13. Jenkins

    View Slide

  14. Jenkins
    Web Service
    cloud before it was cool
    Language agnostic
    You „could“ do ASM with it
    Pluggable
    There’s an app plugin for it

    View Slide

  15. Jenkins
    is pretty damn cool
    To summarize

    View Slide

  16. Setup Jenkins
    # On Ubuntu/Debian
    $ wget -q -O - https://pkg.jenkins.io/debian/jenkins-ci.org.key | sudo apt-key add -
    $ echo ‘’deb http://pkg.jenkins.io/debian-stable binary/’’>/etc/apt/sources.list.d/jenkins.list'
    $ sudo apt-get update
    $ sudo apt-get install jenkins
    # On Arch Linux
    $ sudo pacman -S jenkins
    $ sudo systemctl enable jenkins
    # On Gentoo
    $ open https://wiki.archlinux.org/index.php/installation_guide

    View Slide

  17. Some people think that R is the right
    language for this. We call them „wrong“
    - altered after Joel Grus
    bash

    View Slide

  18. bash python

    View Slide

  19. python python
    fabric
    +
    I am in no way affiliated with Disney but if anybody
    could get me a sponsoring with them that would be great.

    View Slide

  20. python
    fabric
    +
    # On Ubuntu/Debian
    $ pip2 install fabric
    # or
    $ sudo apt-get install fabric

    View Slide

  21. Task
    Task
    python
    fabric
    +
    fabfile.py
    Remote
    Host #1
    Remote
    Host #2
    Remote
    Host #n

    Task

    View Slide

  22. Task
    python
    fabric
    +
    run() put() get() local()

    View Slide

  23. lazytime is over!

    View Slide