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

Continuous Delivery für Groß und Klein

Continuous Delivery für Groß und Klein

Continuous Integration und Delivery oder Pipeline as Code sind in aller Munde. Trotzdem gibt es noch einige Projekte, die gänzlich ohne automatisierte Builds und Tests auskommen.

Anhand eines Beispielprojekts zeigen wir euch die Schritte von einem manuellen Deployment über einfachere Buildskripte, bis hin zu einer vollautomatisierten Deliverypipeline. Dabei werden wir Fragen wie „Gibt es das eine Tool für alle Anwendungsfälle?“ und „Wieviel Automatisierung ist zu viel?“ beantworten.

Jannis Schaefer

March 30, 2017
Tweet

More Decks by Jannis Schaefer

Other Decks in Programming

Transcript

  1. Continuous Delivery • Was ist das? • Wie geht das?

    • Welche Tools sollte ich wann benutzen?
  2. Warum Continuous Delivery? • Feedback an Entwickler • Bugs früh

    erkennen • Verbessert Zusammenarbeit • Jeder sieht aktuellen Status des Projekts CC-BY Thomas Ferris Nicolaisen tfnico.com
  3. • Auslieferung auf Stagingumgebung • Stagingumgebung gleicht Produktionsumgebung bis auf

    Skalierung • Testet Integrität mit altem Datenbestand • Erste Möglichkeit eigene Änderungen live zu sehen
  4. • Builddefinition soll versioniert werden • CI Server schneller konfigurierbar

    • Modularisierbar & Wiederverwendbar Pipeline as Code
  5. Pipeline as Code build: stage: build image: maven:3.3.9-jdk-8 script: -

    'mvn $MAVEN_CLI_OPTS verify' artifacts: paths: - target/ .deploy: &deploy stage: deploy image: quay.io/cosee-concourse/heroku-cli script: - cp ./Procfile ./target/Procfile - heroku deploy:jar target/continuous-0.0.1-SNAPSHOT.jar #--app $APPNAME deploy-staging: #<<: *deploy variables: APPNAME: techtalk-gitlab-stage environment: name: staging url: https:#//techtalk-gitlab-stage.herokuapp.com/
  6. Resümee • CI/CD nur in sinnvollem Maße einsetzen • Für

    kleine Projekte Pipelines nicht immer sinnvoll • Es gibt nicht das eine Tool
  7. Concourse • Pipeline as Code „Hardliner“ • Jeder Task in

    eigenem Container • Debuggen von Containern einfach möglich