GeezerVison is showing talks.marcelthole.de — Toolchains » Gitlab
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)
Frage: Wer benutzt schon Gitlab?
CI/CD : Tests, Reviews, Artefakte, staging deploy, subdomain Deploy, live-Deploy
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
Bezahlte Accounts haben auch teilweise Enterprise Features
Neu: Jetzt mit Backups ;)
Merge Request (Pull-Request)
Kommentare & Diskussionen
Diskussionen für Bilder
Aus Kommentaren Tickets erstellen
WIP Status
Merge-Konflikt via GUI/WebIDE lösen
Merge Konflikte können direkt in der GUI/WebIDE gemergt werden. (Merge, kein rebase)
Squaschen beim Mergen
Auto-Merge beim erfolgreichen CI
Issues
Kanban Board
Meilensteine
Time-Tracking
Kanban-Board Zuordnung über Labels
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
ToDos sieht man in seinem Dashboard und zeigt somit Aufgaben an.
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)
Nur user mit höheren Berechtigungen können gegen Master/staging pushen
Arbeitsablaufsanalysen
Analyse über Status der Tickets und Deployments
Templates
Projektbezogene Templates für
.md Dateien im .gitlab Verzeichnis
Liegen im Repo unter .gitlab
Continous Integration & Continous Deployment
.gitlab-ci.yml
Gitlab Runner
Projektbezogen
Tag basiert
executor: shell, docker, ssh, kubernetes
Pipelines
Pfad zur gitlab-ci.yml kann in den Einstellungen angepasst werden
Runner: Filter möglich für Tags, geschützte Branches, Projekte
Pipelines = gesamter Build Prozess
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
SAST = Static Application Security Testing
Prometheus wird z.B. direkt mitinstalliert
GKE: Google Kubernetes Engine
AWS: Kubernetes Cluster
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
REST-API: Im Review Build den MR mit Daten kommentieren.
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
Hinweis: Es muss aktuell unter public liegen
Gruppen und Benutzer müssen ein Projekt mit Ihrem Namen erstellen.
only: master -> Kann jeder Branch sein. Z.b. ein eigener Branch nur für Pages.
Mehrere Domains möglich
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
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 = Selber Hosten
Bronze = Gitlab.com Account
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
SAST und DAST: Check auf bekannte Sicherheitslücken<
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
Code-Owner: definieren welche user für welche Bereiche verantwortlich sind
... CI/CD Tools
Gitlab
Jenkins
API
Vorhanden
Vorhanden
Jobs
Shedules von Jobs
Vorhanden
Reports
Vorhanden
Vorhanden
Integration
Vollständig
Über Plugins
Shedules: Zeitplan um Jobs auszuführen in .gitlab-ci.yml
job:
only:
- schedules
Live-Demo
Download (.zip)
gitlab.demo /
Mattermost /
Demo Projekt
Tickets, Ticket-Template, Kanban Board (Labels), Shedules, Registry, Mattermost, Environments, Prometheus, Gitlab-Ci-Templates, SSH-Schlüssel/GPG-Key, Artefakte