## Kollaborative Anwendungsentwicklung mit GitLab --- ![In case of fire](https://hikaruzone.files.wordpress.com/2015/10/in-case-of-fire-1-git-commit-2-git-push-3-leave-building2.png?w=800&h=559) --- ## Agenda - Einführung in das Konzept von Git[Lab|Hub] - GitLab in der Produktion digitaler Artefakte - GitLab im Projektmanagement --- ## Das "Git" in GitLab - Verteiltes Versionskontrollsystem [Git](https://git-scm.com/) - 2005 von [Linus Torvalds](https://de.wikipedia.org/wiki/Linus_Torvalds) entwickelt - Hauptzweck: "Tracking" textbasierter Dateien - Git lernen: [Try Git!](https://try.github.io/) --- ## GitHub - "Umschlagplatz" für Code, Texte und Daten - Code: https://github.com/collections/open-source-organizations - Daten: https://github.com/collections/open-data - Science: https://github.com/showcases/science - Texte: https://bundestag.github.io/gesetze/ --- ## GitLab - Verteilte Versionskontrolle von [GitLab Inc.](https://about.gitlab.com/about/) zum [Selberhosten](https://about.gitlab.com/installation/) - ermöglicht Workflow von der Idee zum fertigen Produkt --- ## Produktion --- ## GitLab als universelles CMS * Wir verstehen GitLab als **universelles Backend** zur Entwicklung und Organisation von digitalen Inhalten. * Die Arbeit mit GitLab führt daher zum Erwerb von **Kompetenzen mit großer Reichweite** in Entwicklung, Forschung, Lehre und Verwaltung. --- ## GitLab - Projekte - Benutzer_innen - Gruppen --- ## Registrieren und Anmelden - Account anlegen: https://gitlab.com/users/sign_up - Empfehlung: Sprache der Oberfläche *nicht* umstellen, da viele Dokumentationen auf englisch --- ## Profil und Einstellungen - **Profile:** Avatar, Bio und verbundene Accounts - **Account:** Änderung des Benutzernamens - **Emails:** Zusätzliche Emails - **Notifications:** Einstellen der Dichte von Meldungen - **Preferences:** Aussehen der Oberfläche --- ## Projekt anlegen - individuelle Projekte aus dem professionellen Kontext (Daten, Code, Text) - **Achtung!** *Visibility Level* entscheidet über Sichtbarkeit nach außen --- ## Projekteinstellungen ### General - **Permissions:** *Welche* Bereiche des Projekts werden genutzt? *Wer* darf die Bereiche nutzen? - **Advanced:** umbenennen, übertragen, löschen ---- ### Members - Hinzufügen von Beitragenden *Settings - Members - Invite Members/Groups:* eintragen und ... - Zuweisung von Rollen --- ## Exkurs: [Markdown](https://de.wikipedia.org/wiki/Markdown) https://dillinger.io/ - einfache Auszeichnungssprache für Texte - kann mit HTML und LaTeX angereichert werden - weit verbreitet im Netz - kann mit [Pandoc](http://pandoc.org/) in zahlreiche Zielformate gewandelt werden --- ## Weiter: Arbeiten im Projekt - Hinzufügen einer README.md - Beschreibung des Projekts - Beispiele guter READMEs in namhaften Projekten bei GitHub --- ## Projektmanagement --- ## Gruppen - Mit Gruppen in GitLab können Teams gebildet werden - Gruppen können Untergruppen (*subgroups*) haben - Projekte können in/für Gruppen angelegt werden --- ## Erste Schritte Projektmanagement - Projektdefinition - Projektplanung - Strukturierung des Projekts - Sammlung und Darstellung von Aufgaben/Arbeitspaketen - Aufgabenverteilung --- ## Das Wiki - Jedes Projekt hat ein **Wiki** - Inhalte im Wiki werden mit [Markdown](https://de.wikipedia.org/wiki/Markdown) notiert - Das Wiki ist ebenfalls ein Git-Repository und bietet alle Vorteile der dezentralen Bearbeitung - Wikis eignen sich sehr gut zur - Informationssammlung - Projektdokumentation - Hacks zur (fast) finalen Dokumentenerstellung --- ## Issues - Festhalten von Arbeitsaufträgen, User Storys, Fehlerberichten, Kundenwünschen etc. - Diskussion über die Details - Entsprechend der Idee von *User Storys* können mit Checkboxen *Tasks* definiert werden. Diese beschreiben die konkreten Aufgaben, die zum Einlösen der Story erledigt werden müssen. --- ## Label - Label sind frei definierbare "Etiketten" für Issues und ermöglichen übergreifende Ordnungskonzepte - Aus Labeln können Listen im Board erstellt werden --- ## Das Board - Jedes Projekt hat ein Board - sinnvolle Strukturierung von Issues z.B. gemäß einer Projektmanagementmethode (Kanban, Scrum o.ä.) --- ## Zuweisung von Issues - Issues können entsprechend der Aushandlung zwischen den Beitragenden zugewiesen werden - Issues können an einen *Milestone* oder eine individuelle Deadline gebunden werden - Issues können gelabelt werden --- ## Branches - Branches sind eigenständige Entwicklungslinien - Ergebnisse aus Branches können in andere Branches **gemergt** werden - Es ist sinnvoll, **Branches aus Issues** zu erstellen - Branches sollten nach dem Mergen gelöscht werden --- ## Branches **Branches kosten nichts und können nach Herzenslust jederzeit auch zum Experimentieren und Spielen erstellt werden** --- ## Merge Requests - **Merge Requests (MR)** sind zu verstehen als *Antrag auf Übernahme von Beiträge aus einem Quellbranch in einen Zielbranch* - MRs können 1. innerhalb eines Projekts von einem Branch zu einem anderen gestellt werden. 1. von einem geforkten Projekt (Kopie) auf das Quellprojekt (Original) gestellt werden. --- ## Merge Requests - MRs haben großes Potential für die Qualitätskontrolle durch die Entwicklergemeinschaft --- ## Merge - **mergen** bezeichnet den Vorgang, einen *Commit* mit einem anderen zu verschmelzen --- ## Forks Als **Fork** wird die Kopie eines Repositorys bezeichnet. --- ## Review Apps GitLab bietet die Möglichkeit, auf Basis von Branches so genannten **Review Apps** zu generieren. Hierbei kommen Virtualisierungstechniken wie [Docker](https://de.wikipedia.org/wiki/Docker_(Software)) zum Einsatz. **Review Apps** sind (vollständige) Anwendungen/Artefakte auf Basis von Branches. Sie dienen dazu, dem Kunden bzw. dem Team eine Vorschau auf die Implementierung einer Funktion oder Anforderung zu geben. --- ## GitKraken - [grafischer Client](https://www.gitkraken.com/) zur lokalen Verwaltung von Dateien - Anbindung an entfernte Git-Dienste wie GitHub, GitLab, Bitbucket u.a. --- ## Grundbegriffe | | | |---------------|------------------------------------------| | Projekt | Organisationsheinheit | | Repository | Ort für Dateien | | Issue | Thema | | Commit | Speicherung | | Branch | Paralleler Entwicklungszweig | | Merge Request | Antrag auf Zusammenführung von Beiträgen | | Merge | Zusammenführung | --- ## Nutzungsbedingungen <a rel="license" href="http://creativecommons.org/licenses/by/4.0/"><img alt="Creative Commons Lizenzvertrag" style="border-width:0" src="https://i.creativecommons.org/l/by/4.0/88x31.png" /></a><br />Diese Präsentation von Axel Dürkop (ITBH an der TUHH) ist lizenziert unter einer <a rel="license" href="https://creativecommons.org/licenses/by/4.0/deed.de">Creative Commons Namensnennung 4.0 International Lizenz</a>. Nutzen Sie diese Präsentation gern im Rahmen der genannten Lizenz, um auch anderen die Vorzüge von GitLab näher zu bringen.
{"title":"Einführung in GitLab","slideOptions":{"center":true,"progress":true,"slideNumber":true,"transition":"fade"}}
    313 views