Continuous Integration mit TravisCI u.a. Jan Steemann

Ähnliche Dokumente
Linux-Camp: Linux als Server am Beispiel LAMP

Benutzer und Rechte Teil 1, Paketverwaltung

Entwicklungsumgebungen. Packer, Vagrant, Puppet. Alexander Pacnik Mannheim,

IT Engineering Continuous Delivery. Development Tool Chain Virtualisierung, Packer, Vagrant und Puppet. Alexander Pacnik Karlsruhe,

Hier ein Ausschnitt aus der Datei /DEBIAN/control in einem Installationspaket mit der Liste der Abhängigkeiten:

Installation von Zope, Plone, exam auf OSS

Node.js der Alleskönner. Kai Donato MT AG Ratingen

Linux Prinzipien und Programmierung

GitLab als alternative Entwicklungsplattform zu Github.com

Deploy von PHP-Applikationen

Container als Immutable Infrastructure. John M. Hutchison

KURZANLEITUNG DUPLICITY MIT CLOUD OBJECT STORAGE

Datenbanken und Netzanbindung

Automatisierte Serververwaltung mit Hilfe von Puppet

Einrichtung OpenVPN mit Hilfe des Network Managers

Kurzanleitung zu XML2DB

Grundkurs C++ Buildsysteme Versionsverwaltung mit git

Let s Encrypt: Kostenlose SSL-Zertifikate auf STRATO Linux-Server nutzen

Grundkurs C++ Buildsysteme Versionsverwaltung mit git

Carlos Santos. Fachbereich Informatik Fakultät für Mathematik, Informatik und Naturwissenschaften. Universität Hamburg

Installation von Git für unsere OpenDCC/Fichtelbahn Entwickler Stephan Bauer, Christoph Schörner, Andreas Kuhtz

Grundkurs C++ Buildsysteme Versionsverwaltung mit git

Deployment Deployment Seite 1 / 25

Composing Shops. Modulinstallation und andere coole Composer Features. (auch) für den OXID eshop... und ein bisschen Shopware ;)

Benutzer und Rechte Teil 1

Lernjournal Auftrag 1

Powershell DSC Desired State Configuration

Konfiguration Zentyal 3.3 Inhaltsverzeichnis

Schulfilter Plus Installationsanleitung CentOS 7

4 Einrichten von Windows

Renée Bäcker. Perl $foo Magazin

Merkblatt System-C Installation Linux

Diplomarbeit LEGO Mindstorms Simulator - JORGE Installationshandbuch.

Embedded So)ware. Einrichten der Arbeitsumgebung

Automatisierte Entwickler VMs works on my machine zählt nicht mehr ;-)

Linux Cafe Referent: Bernd Strößenreuther

Installationsanleitung

DISTRIBUTION / MARKETING

Einführung zu den Übungen aus Softwareentwicklung 1

Universität Leipzig - Softwaretechnik Praktikum 2014/2015 Installationsanleitung zum Projekt: Ein kartenbasiertes Multiplayer -Spiel

Installation und Aktualisierung der VMware-Tools

Schulfilter Plus Installationsanleitung Ubuntu 12.04

cs106 Informatiklabor Teil 1: Java-Installation

Benutzer und Rechte Teil 1, Paketverwaltung, SSH

Schnellinstallationsanleitung Timemaster WEB

Inhaltsverzeichnis ERWEITERUNG. 26. Januar 2014 RECORDTIME ENTERPRISE (LINUX) BENUTZERANLEITUNG-

1.1 Datenbankprogramm Oracle für MCIS MDA

Platform as a Service (PaaS) & Containerization

Druckereinrichtung unter Ubuntu LTS mit Keyring

Build-Pipeline mit Jenkins

Continuous Everything

C++ OpenCppCoverage. Detlef Wilkening

Installationsanleitung NX 11

TimeMachine. Installation und Konfiguration. Version 1.4. Stand Dokument: install.odt. Berger EDV Service Tulbeckstr.

Continuous Integration im medizinischen Bereich

Lehrstuhl für Datenverarbeitung. Technische Universität München. Grundkurs C++ Buildsysteme

Schulfilter Plus Installationsanleitung Debian 8

Remote Zugriff auf Mediaprint Citrix Applikationen (B2B/Token/ Zertifikat)

Mapbender-Installation

Wir implementieren Lösungen. + DevOps-in-the-Box. Rainer Heinold VP Technology and Services

Scripting Framework PowerShell Toolkit Quick-Install a Workplace for Packaging and Test

Maven Einführung. Dipl.-Inform. Alex Maier

Installation von gnuradio auf Ubuntu mit build-script. Zusammenfassung

Hex Datei mit Atmel Studio 6 erstellen

Wiederherstellen des Android-Betriebssystems

Installation Messerli MySQL auf Linux

Buildsystem. Maven & Scons. Controls Entwicklungsforum Januar 2012

IT Services Support. VPN-Verbindung mit Mac

Multiformat-Publishing mit Sphinx

We have declared war on error!

Viele Entwickler finden Testen langweilig.

Einführung in Git. Dirk Deimeke. 19. August My own IT. ddeimeke (My own IT) Einführung in Git 19. August / 23

C ++ in der Computerlinguistik

Installation und Konfiguration

Installation & Usage. Version 1.0. estickflashtool

i-net HelpDesk Erste Schritte

Lokale Scanner am Thin Client als Netzwerkscanner nutzen. Inhaltsverzeichnis

Linutronix - Wir verbinden Welten. Open Source Software in der Industrie. Firmenvorstellung

Ursachen und Lösungen Ursache (1): Defektes/beschädigtes Dateisystem

Versionskontrollsysteme

Migration von Windows

CocoaPods Schnelleinstieg

IBM SPSS Modeler - Essentials for R: Installationsanweisungen

Nexinto Business Cloud - HAProxy Anleitung zum Aufsetzen eines HAProxy Images. Version: 1.0

TechNote. Produkt: TWINFAX 7.0 (ab CD_24), TWINFAX 6.0 Modul: SMTP, T611, R3 Kurzbeschreibung: Briefpapier- und Mailbodyunterstützung

Praktische Einführung in die Versionsverwaltung mit Eclipse

Vom Umgang mit Containern in der Informatik

Cloud-Umgebungen mit Terraform verwalten. Sascha Askani

Multisite Setup. mit Nutzung von Subversion. Drupal Voice Chat

OSx / MAC. MegaZine3 MZ3-Tool3. Download und Installation. Video 2-1

Upgrade-Leitfaden. Apparo Fast Edit. Wechsel von Version 2 auf Version 3 1 / 10

Installieren und Verwenden des Document Distributor 1

Transkript:

Continuous Integration mit TravisCI u.a. Jan Steemann

Ziele für heute sind: eine kleine Applikation und Code-Änderungen daran automatisiert zu testen Build-Status und Coverage zu veröffentlichen die Code-Coverage der Tests zu ermitteln mehrere Test-Umgebungen abzudecken möglichst wenig Geld für Test-Infrastruktur auszugeben

Ausgangslage: eine (kleine) C++-Applikation zum Addieren von Zahlen Build-System ist CMake erste Version der Applikation kompiliert bereits unter Linux noch keine Tests vorhanden

Kompilieren: out of source-build im Verzeichnis build: mkdir p build (cd build && cmake.. && make)

Testen! zuerst brauchen wir ein Test-Framework! wir wählen Googletest (gtest) den Source-Code clonen wir direkt in unser Repository, Unterordner tests: mkdir p tests cd tests git clone \ https://github.com/google/googletest

Tests hinzufügen: nun kann der eigentliche Test-Code in CalculatorTest.cpp geschrieben werden anschließend kann der Test ins CMakeFile eingetragen werden und lokal getestet werden: (cd build && cmake.. && make) (cd build/tests && ctest V)

Github service hooks wir wollen, dass alle Änderungen an der Applikation automatisch getestet werden Github bietet an, bei Code-Änderungen in einem Repository konfigurierbare externe Services aufzurufen diese können den aktuellen Code abrufen und z. B. Tests darauf ausführen

Integration mit TravisCI: als CI-"Dienstleister" wählen wir TravisCI (https://travis-ci.org/) zur Anmeldung bei TravisCI brauchen wir nur den Github-Account das Token unseres TravisCI-Accounts muss bei Github angegeben werden, damit Github an TravisCI "posten darf" (unter Settings > Services)

TravisCI-Build-Umgebung: Ubuntu 12.04 LTS mit vielen vorinstallierten Tools (z. B. automake, cmake, gcc/g++, clang), Skriptsprachen, Datenbanken die Build-Umgebung wird für jeden Build neu aufgebaut (clean state)

TravisCI-Build-Umgebung: die Default-Versionen in der Build-Umgebung passen oft nicht es können aber andere Versionen und auch zusätzliche Pakete installiert werden dadurch gibt es erst Unterstützung für C++11

.travis.yml: zur Konfiguration des Builds muss im Github- Repository unserer Applikation eine Datei.travis.yml hinterlegt werden diese Datei enthält die Build-Konfiguration und -Anweisungen für TravisCI darin müssen auch die eigentlichen cmakeund ctest-anweisungen eingetragen werden

Wichtige Parameter in.travis.yml: sudo: true: legacy infrastructure mit Root-Rechten false: containerized infrastructure ohne Root compiler: z. B. g++ oder clang addons: zusätzliche zu installierende Pakete

Wichtige Parameter in.travis.yml: install: zur manuellen Installation zusätzlicher Pakete script: das eigentliche Build und Test-Kommando after_failure: Kommando nach fehlgeschlagenem Build after_success: Kommando nach erfolgreichem Build

TravisCI-Build-Status: bei jedem Push zu Github wird nun ein Build bei TravisCI angestoßen der Travis-CI-Build-Status ist entweder: das Build-Ergebnis ist öffentlich

TravisCI-Benachrichtigungen: nach jedem abgeschlossenen Build wird man bzgl. des Build-Status benachrichtigt, per Default-per E-Mail weitere Benachrichtigungsmöglichkeiten u.a.: IRC Slack Gitter

Environment-Variablen: in einem Build-Skript können beliebige Environment-Variablen gesetzt werden diese können im Klartext oder verschlüsselt in die.travis.yml eingetragen werden, oder im Web interface von TravisCI hinterlegt werden mit Environment-Variablen und Konfiguration kann eine Build-Matrix erzeugt werden bestimmte Kombinationen können ausgeschlossen werden

Coverage: um Coverage hinzuzufügen, müssen die Anwendung und Tests mit Coverage-Support kompiliert und ausgeführt werden die Coverage-Ergebnisse können im Travis- Build mit lcov prozessiert werden anschließend können sie automatisiert beim Dienst https://coveralls.io veröffentlicht werden

Windows-Tests: mittels Service-Integration von Appveyor kann die Applikation zusätzlich auf Windows gebaut und getestet werden zum Login bei appveyor.com wird ebenfalls der Github-Account benötigt nach dem Anmelden des Projekts wird eine Konfigurationsdatei appveyor.yml im Repository angelegt

Ergebnis: bei jedem Push in das Repository der Applikation werden die Tests auf Linux und Windows ausgeführt die Code-Coverage der Tests wird automatisiert berechnet es erfolgen automatisierte Benachrichtigungen über die Build-Status

Vor- und Nachteile: Abhängigkeit von externen Dienstleistern benutzte Dienste sind für Open source- Projekte kostenlos Build-Ergebnisse sind öffentlich Komponenten (TravisCI, Appveyor, Coveralls) sind nur lose verbunden Build-Konfiguration erfordert Skripting und Herumprobierei

Links: https://github.com/ https://travis-ci.org/ https://coveralls.io/ https://www.appveyor.com/

TravisCI-Links: Travis-Lint (Validierung für.travis-yml- Dateien): https://docs.travis-ci.com/user/travis-lint Build-Status-Badges: https://docs.travis-ci.com/user/status-images/ Build-Anpassung im Detail: https://docs.travis-ci.com/user/customizingthe-build/