Continuous Integration mit GitLab CI. Christine Koppelt Philipp Haußleiter GUUG-Frühjahrsfachgespräch 1. März 2018

Ähnliche Dokumente
Continuous Integration mit GitLab CI Christine Koppelt Open-Source-Treffen, 26. Januar 2018

Brownbag Zieht den Helm auf

Continuous Delivery. für Java Anwendungen. Axel Fontaine Software Development Expert

Platform as a Service (PaaS) & Containerization

Build Management Tool

Vernetzte Gebäudereinigung - Aufbau einer Cloud-Lösung

Erhöhe den Nutzen deines Dienstes

APEX OOS TOOLS & HELFER

Continuous Everything

Build Management Tool?

Dockerbank II. Block 2: Komplexbeispiel. Benjamin Baum 1, Christian Bauer 1

Build Management Tool?

Build. Ship. Run. Docker. Namics.

Container Hype. TODO : Vollflächiges Container Bild. Håkan Dahlström Source:

4 Einrichten von Windows

Teile und herrsche: Integration und Automatisierung der Tools im Entwicklerstack

Referat. Continuous Integration. mit Maven und Jenkins. Benjamin Keeser. Hochschule für angewandte Wissenschaften München FB 07 Informatik (Master)

DevOps with AWS. Software Development und IT Operation Hand in Hand. Matthias Imsand CTO Amanox Solutions AG

DevOps und Red Hat Openshift Eine Traumkombination SEVEN PRINCIPLES AG

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

OpenShift Tech Lab. Daniel Tschan CTO. Anselm Strauss Senior System Engineer

Kurzanleitung Eclipse

Continuous Integration mit TravisCI u.a. Jan Steemann

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

Continuous Integration (CI) Workshop

Git in großen Projekten

Atlassian Git Essentials Nahtlose Entwicklungsworkflows aus einer Hand

Einstieg in GitLab. Grundlagen und automagische Code-Übersetzung. Christian Stankowic. Free and Open Source software Conference

Continuous Delivery in der Praxis

Operation am offenen Herzen

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

DOCKER IN PRACTICE. Matthias Zober EXXETA GmbH Leipzig

Continuous Code Review

Application Lifecycle Management mit dem Oracle Developer Cloud Service

Vorlesung Service and Cloud Computing" 7. Cloud Computing Platform as a Service (PaaS)

Oracle Enterprise Manager 10g Grid Control Release 2

Continuous Delivery mit OpenShift, 2nd Edition

Ohne Build geht's besser: Makeloses Java mit dem z 2 -Environment. Henning Blohm

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

Klein, aber oho Continuous Delivery von Micro Applications mit Jenkins, Docker & Kubernetes bei Apollo

<Insert Picture Here> Grid Control 11g und My Oracle Support Ulrike Schwinn

Automatisierter Java EE Entwicklungs-Lifecycle mit WebLogic Server 12c. Robin Müller-Bady Systemberater, Oracle Deutschland

GitLab als alternative Entwicklungsplattform zu Github.com

Red Hat Satellite mehr als nur ein Content Delivery und Subscription Management System

Oracle Cloud Services für Forms-Kunden. Jürgen Menge (Der IT-Macher)

Gerd Aschemann. 6/15/2016 Continuous Delivery of Continuous Delivery

SaaS Von der Revolution zur Option

v i r t u a l 7 G m b H Consulting- und Softwarepartner Unternehmergeführt 1996 gegründet 85 Mitarbeiter 1 Team aus Spezialisten W E R W I R S I N D

Forms 12c, Reports und Weblogic in Docker betreiben

Upgrade-Leitfaden. Apparo Fast Edit. Wechsel von Version 2 auf Version oder Wechsel von Version auf Version 3.0.

NEUIGKEITEN SAS 9.4 ARCHITEKTUR PHILLIP MANSCHEK

Upgrade-Leitfaden. Apparo Fast Edit. Wechsel von Version 2 auf Version oder Wechsel von Version auf Version 3.0.

Con guration as Code Über Ansible Ansible Grundlagen Live Demo Weitere Informationen

Eine Einführung, aktuell zur Version An imprint of Pearson Education

CD in the box. Jan Rümenapf Matthias Zieger

APEX Office Print - Einfach Druck machen! Daniel Hochleitner Freelance APEX Developer, FOEX GmbH

TFS 2013 Upgrade. Thomas Trotzki - artiso AG

Neue Wege mit Contao 4

Continuous Delivery in der Praxis

Play with Ansible - Provisioning von Weblogic mit Ansible

Git-Grundlagen für Entwickler. Thomas Claudius

DBaaS mit APEX 5.1 Frontend und Oracle Multitenant Option. Hans Eichenberger, die Mobiliar Versicherungen und Vorsorge

ovirt Workshop René Koch, Senior Solution Architect bei LIS Linuxland GmbH Linuxwochen Wien /43

AGILE APPLICATION LIFECYCLE MANAGEMENT IM ATLASSIAN ECOSYSTEM

Tutorium SS17 EINFÜHRUNG + BREAKOUT

Pre-tested commit 2.0 mit Gerrit und Jenkins

Cloud Control und die Datenbank

Testen und Docker. Beispiele aus der Praxis. Dehla Sokenou

2 Einführung in das Konfigurationsmanagement 11

Agile Apex - Life Cycle Management. Life Cycle Management für Apex Applikationen im agilen Projektumfeld


Container als Immutable Infrastructure. John M. Hutchison

Container-Orchestrierung in der Cloud für Profis

Qualität im Web Frontend

Mitmachen bei Git(Hub)-Projekten!

Forms 12c, Reports und WebLogic in Docker betreiben

Dockerbank Container-basiertes Deployment von biomedizinischen IT-Lösungen

Handbuch. TC3 Remote Manager. TwinCAT 3. Version: Datum:

Make-loses Java für mehr Produktivität: Das z 2 -Environment. Henning Blohm

APEX DESKTOP APPS. Interaktion mit dem Client System

JOHANNES SEITZ Continuous Integration Extreme!

Maven 2 Softwareprojekte mit Kultur

Gerrit und Jenkins ein Traumpaar für Pre-Tested Commit

Software Engineering

Versionsverwaltung für r Visual Studio.NET mit Subversion

Die Integration von Requirements Management, Software Configuration Management und Change Management mit der MKS Integrity Suite 2006

Neues von Grid Control. Ralf Durben Oracle Deutschland B.V. & Co. KG Business Unit Datenbank DBTec

Praktikum Ingenieurinformatik (PI)

Docker. Grundlagen Workshop Trier Tech Talk Conference, Nico Maas

Ausrollen von Multi-Tier-Applikationen mit Docker

Qualitätssicherung für mobile Anwendungen Fallstudien für GUI-Testautomatisierung. Alexandra Schladebeck

Java aktuell. Die Reise nach Jakarta. ijug Verbund Tipps von Experten. Im Interview. Praktische Erfahrungen.

DevOps. Alexander Pacnik, Head of DevOps Engineering

Einführung in Docker. Tobias Zeimetz

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

Continuous Delivery in der Realität eines Großunternehmens

OpenShift auf AWS. Ein Erfahrungsbericht. DB Systel GmbH Holger Koch I.LVD

Konfiguration von WNA in Oracle Access Manager 11g

Java und mehr. Java aktuell. ijug Verbund Coding Continuous Delivery. Besser Programmieren. Aus der Praxis.

Transkript:

Continuous Integration mit GitLab CI Christine Koppelt Philipp Haußleiter GUUG-Frühjahrsfachgespräch 1. März 2018

Continuous Integration (CI)

Continuous Integration (CI) Sourcecode Source Repository Deploybare Bauen Testen Paketieren Anwendung Entwicklungsteam Feedback CI Server Server mit Anwendung

Softwareentwicklung heute Systeme die aus mehreren eigenständigen Anwendungen bestehen Technologiemix Umfangreiche Testsuiten Testinfrastruktur Umfangreiche Toolchains für Build Dockerbasierte Deployments A/B Testing

Infrastruktur DO Entkopplung Infra-Team und Entwicklung Entwickler konfigurieren CI Jobs und Staging Umgebung selbständig Kapselung der Buildumgebung DON T Modifikation der Konfiguration des CI Servers für einzelne Projekte Adminrechte für Entwickler Langwierige Abstimmungen zwischen Infra-Team und Entwicklung

Self Service

GitLab

GitLab Gestartet als Web-Basierter Git Repository Manager Mittlerweile: Umfangreiche Softwareentwicklungssuite Issue Tracker integriert CI Server integriert Bauen von Merge Requests und Branches integriert Anlegen von Jobs über eine deklarative Konfiguration mittels Yaml Builds innerhalb Docker => Sinnvolle Konventionen, modularer Ansatz Open Source, kommerzielle und Cloud Versionen

Komponenten

High Level View

https://gitlab.com/gitlab-org/gitlab-ce/blob/ master/doc/development/architecture.md

Access Processes Data Gitaly (Repo / RPC) Monitoring/Logs CI/CD Prometheus (Metrics) Gitlab Runner (Docker) Gitlab-monitor Gitlab Runner (Shell) Node-exporter Sidekiq (Jobs) Postgres-exporter Gitlab-shell Unicorn (Rails) Redis (Jobs) Nginx Gitlab-workhorse (reverse proxy) Postgres (App Data) Redis-exporter Mattermost (Chat) Registry (Docker) Logrotate (Logs)

Setup

Setup Optionen Deployment auf Bare Metal Deployment innerhalb von Kubernetes/Openshift per Helm Chart (current) Cloud Native GitLab Chart (WIP) Konfiguration per Omnibus und gitlab.rb File.

Omnibus Easily create full-stack installers for your project across a variety of platforms. Setup von Gitlab (LDAP/AD/oAuth/Backup/S3 Storage) Infrastruktur (Postgres, Redis, Nginx, ) Kommunikation (Mattermost/Slack/Mail) Weiteren Services (Docker Registry, Mattermost, ) Konfiguration externer Services (z.b. JIRA/Redmine) => sinnvolle Defaults. Überschreiben, wenn notwendig https://github.com/chef/omnibus

Installation per Omnibus (Bare Metal) Gitlab Konfiguration Spezifische Konfiguration Repo hinzufügen Gitlab installieren Mail, LDAP, Settings gitlab.rb anpassen Reconfigure Services Konfiguration Konfiguration Test Service Konfiguration RPM, APT, Nginx, Mattermost, Prometheus, Gitlab restart

Update per Omnibus (Bare Metal) Gitlab Postgres Mattermost, Package update yum update Update laden Ggf. aktualisierte Konfiguration Backup erstellen DB-Snapshot Docker Registry Build Artifacts Pages Reconfigure Services Konfiguration Konfiguration Test Gitlab restart

Installation per (Helm) Spezifische Konfiguration Repo hinzufügen gitlab.rb anpassen Gitlab installieren Kubernetes Deployment Service Pods Gitlab Pods start start Gitlab upgrade helm install --namespace <NAMESPACE> --name gitlab -f <CONFIG_VALUES_FILE> gitlab/gitlab helm repo add gitlab https://charts.gitlab.io helm init helm upgrade --namespace <NAMESPACE> -f <CONFIG_VALUES_FILE> <RELEASE-NAME> gitlab/gitlab

Deployment Kubernetes Kubernetes Docker Docker Gitlab Web Redis Postgres Web User Repo Docker Gitlab Shell Repository User Gitlab-CI Runner Runner Runner Runner Instances Runner Instances Instances Instances

Beispiel

CI Pipeline Sourcecode auschecken Kompilieren Testen Paketieren Deployen int_test1 Job build_jar build_docker_image deploy_staging int_test2 Stage build test package deploy

Demo

Bau eines Java Projektes stages: - build build_jar: stage: build image: maven:3-jdk-8 script: - mvn install artifacts: paths: - target/*.jar build test package deploy

Services einbinden am Beispiel PostgreSQL... variables: POSTGRES_DB: enco POSTGRES_USER: postgres POSTGRES_PASSWORD: postgres int_test1: stage: test image: maven:3-jdk-8 services: - postgres:9.6 script: - mvn install -P integration-test1 artifacts: paths: - target/reports/* build test package deploy

Docker Image bauen & pushen stages: - build - test - package... build test build_docker_image: stage: package image: docker:latest services: - docker:dind script: - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY - docker build -t $CI_REGISTRY_IMAGE:latest. - docker push $CI_REGISTRY_IMAGE:latest package deploy

Branch-Spezifische Jobs stages: - build - test - package... build test build_docker_image: stage: package image: docker:latest services: - docker:dind script: - docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY - docker build -t $CI_REGISTRY_IMAGE:latest. - docker push $CI_REGISTRY_IMAGE:latest only: - master package deploy

Deployment bei AWS Beanstalk deploy_staging:... script: - aws elasticbeanstalk create-application-version \ --application-name "$EB_APP_NAME" \ --version-label "$CI_COMMIT_SHA" \ --description "$CI_COMMIT_SHA" \ --source-bundle S3Bucket="$S3_BUCKET", \ S3Key="$CI_COMMIT_SHA.zip" - aws elasticbeanstalk update-environment \ --application-name "$EB_APP_NAME" \ --environment-name $EB_ENVIRONMENT \ --version-label "$CI_COMMIT_SHA" environment: name: staging url: $DEPLOYMENT_URL build test package deploy

Fragen?

Vielen Dank! christine.koppelt@innoq.com philipp.haussleiter@innoq.com

Bildquellen https://unsplash.com/photos/6gmysegmpmw https://unsplash.com/photos/c53hva-blyq https://unsplash.com/photos/7ehhidt3wyc https://unsplash.com/photos/gq8v_6n3fno https://www.pexels.com/photo/shallow-focus-photography-of-black-microph one-164960/

Extra

Komponenten Entwicklung Feature Branch Issue Tracker Ticket erstellen Feature Automatisches Bauen von Branches Git Repository Entwickeln Einchecken Merge schließt Ticket automatisch Automatisches Prüfen & Bauen von Merge Requests Build prüfen Wiki Merge Request erstellen Review & Merge Static Page Hosting Ticket schließen Boards

Komponenten CI Zeitgesteuertes Starten von Builds Artifakt Archivierung Buildumgebung als Docker Image Testabdeckung Docker Registry Sourcecode auschecken Kompilieren Bauen von Branches & Merge Requests Testen Metriken Erfassen Services & Infrastruktur als Docker Container einbinden Reports & Doku generieren Paketieren Docker-in-Docker Unterstützung

Komponenten Deployment Prometheus Integration Manuelle Freigabe Abnahme Übertragen & Installieren Kubernetes Integration Metriken erfassen