Gitlab

Einblicke in Gitlab CE

Gitlab Version 11.0
Marcel Thole

Agenda

  • Was ist Gitlab?
  • Wie bekomme ich Gitlab?
  • Funktionen
  • Gitlab im Vergleich
  • Live-Demo

Was ist Gitlab?

  • Repository Manager
  • Projektverwaltung
  • Continous Integration & Continous Deployment
  • Versionen
    • Kostenlose Community Edition
    • Kostenpflichtige Enterprise Edition (Starter, Premium, Ultimate)

Wie bekomme ich Gitlab?

  • Als SaaS beziehen
    • Kostenloser Account auf Gitlab.com
    • 4$, 19$ und 99$ Accounts pro Monat
    • Daten liegen auf AWS, Digital Ocean und Azure
  • Selber hosten
    • Installation über Linux Paketmanager
    • Installation über Docker
    • Manuelle Installation mit Omnibus Paket

Funktionen

Merge Request (Pull-Request)

  • Kommentare & Diskussionen
  • Diskussionen für Bilder
  • Aus Kommentaren Tickets erstellen
  • WIP Status
  • Merge-Konflikt via GUI/WebIDE lösen

Issues

  • Kanban Board
  • Meilensteine
  • Time-Tracking

Slash Commands / Quick Actions

  • Fix #20 in commit Messages
  • /spend 1h 15m - Zeit buchen
  • /assign user1 - Ticket zuweisen

Todos / Aufgaben

  • Anhand von @user Kommentaren
  • Merge-Requests

Wiki & Code Snippets

  • Markdown Wiki
  • Code-Highlight
  • Repo unter project.wiki.git

Berechtigungen & Sicherheit

  • Geschützte Branches und Tags
  • Merge-Requests nur bei gelösten Kommentaren erlauben
  • SSH-Key Bitsize Mindestlänge definierbar
  • PGP Keys um Git-Commits zu signieren
  • Two-Factor Authentication (Google Authenticator, FreeOTP)

Arbeitsablaufsanalysen

  • Analyse über Status der Tickets und Deployments

Templates

  • Projektbezogene Templates für
    • Merge-Requests
    • Issues
  • .md Dateien im .gitlab Verzeichnis

Continous Integration &
Continous Deployment

  • .gitlab-ci.yml
  • Gitlab Runner
    • Projektbezogen
    • Tag basiert
    • executor: shell, docker, ssh, kubernetes
  • Pipelines

Auto-DevOps

  • Integration mit Kubernetes
  • Autodeploy mit existierenden Templates
  • Standardprozesse laufen mit wenig Konfiguration
  • Pipeline Aufbau:
    • Build
    • Test (Qualität, Tests, SAST)
    • Review & Deploy
    • Perfomance Überwachung

Monitoring

  • Integration via Prometheus
  • Code-Coverage der Tests
  • Vergleich der Builds
  • Ansicht direkt im Merge-Request

API & Drittanwendungen

  • Web-Hooks
  • REST-API v4 & GraphQL in Planung
  • Liste an Drittanwendungen
    • Issue Tracker: Bugzilla, Redmine, Jira
    • CI: Bamboo, Jetbrains Teamcity
    • Monitoring: Prometheus
    • Chats: Hipchat, Slack, IRC, Campfire

Funktionen durch Config-Anpassungen

Gitlab Pages

  • Deploy von statischen Seiten für Projekte, Gruppen und Benutzer
  • .gitlab-ci.yml Eintrag notwendig
  • pages:
      script:
      - mkdir .public
      - cp -r * .public
      - mv .public public
      artifacts:
        paths:
        - public
      only:
      - master
                        

Chat via Mattermost

  • Komplett integriertes Chat-Programm
  • Slash-Commands und Notifications
  • Automatisches anlegen von Gruppen

Docker Container Registry

  • Docker Registry direkt in Gitlab
  • Buildprozess um Images aktuell zu halten

Enterprise Funktionen

Preise

Starter (Bronze) Edition: $39 (~30 €) pro User pro Jahr
Premium (Silber) Edition: $199 (~160 €) pro User pro Jahr
Ultimate (Gold) Edition: $999 (~815 €) pro User pro Jahr

Starter

  • Anzahl an Reviewer pro MR
  • Support

Premium

  • Konfiguration der Kanban-Boards
  • Sprint Burndown Chart
  • CI für Code-Qualität & Browser-Perfomance
  • Rollout auf 10%, 25%, 50%, 100% der Pods

Ultimate

  • Gast-Accounts zählen nicht zur Lizenz
  • Lizenz Überwachung der Libraries
  • Static Application Security Testing
  • Dynamic Application Security Testing

Gitlab im Vergleich zu ...

... Versionsverwaltungssystemen

Gitlab Github
Private Repos Kostenlos Kostenpflichtig
Tickets und Wiki Vorhanden Vorhanden
Statische Seiten Vorhanden Vorhanden
Berechtigungen Projekt, Wiki, Issues Projekt
Code-Owners Noch nicht vorhanden (EE #1012) Vorhanden

... CI/CD Tools

Gitlab Jenkins
API Vorhanden Vorhanden
Jobs Shedules von Jobs Vorhanden
Reports Vorhanden Vorhanden
Integration Vollständig Über Plugins

Live-Demo

Download (.zip)
gitlab.demo / Mattermost / Demo Projekt

Ende

Fragen?