Tutorial Version Control, Build Automation
ASE WS 2022/23
Rückschau
Cowsay-Aufgabe
Write the following Bash script:
say_count.sh which does the following:
- check whether the
cowsay
command is available on the system - if not, download the Debian package from the Debian unstable repo and install it
- download the command-line mystery (https://github.com/veltman/clmystery/archive/refs/heads/master.zip) and unpack it into a temporary directory
- find all files which contain the word “Duchess” and let the cow say how many lines each file has
- clean up, i.e. remove the downloaded files and uninstall
cowsay
Architektur-Diagramme
(wir schauen mal gemeinsam Beispiele an)
Exkurs ChatGPT
(Vorschau auf 'AI in SE')
Version Control
Was Du können bzw. verstanden haben solltest:
- Grundlagen Versionskontrolle mit Git auf der Kommandozeile (Repo einrichten oder klonen, Commits, Push/Pull)
Setup
Wir arbeiten wie beim letzten Mal als Nutzer root
auf einem 'disposable root server' via segfault.net.
ssh root@segfault.net # Password is 'segfault'
Achtung: Der Server ist nicht sicher - keine vertraulichen Infos/Passwörter dort eintippen
Erster Schritt auf dem Server: Informationen zu Netzwerk-Schnittstellen prophylaktisch in einen Text-Editor kopieren
Zweiter Schritt: tmate installieren und ausführen.
apt install tmate tmate
tmate
startet eine tmux
-Session und gibt Pfade/Befehle aus, mit denen man der Session remote beitreten kann. Diese Infos am Besten auch in einem Texteditor speichern und 'q' drücken.
Git-Basics
Finde heraus, was folgende Befehle machen:
- git init
- git clone
- git commit (–amend)
- git push / pull
- git reset (–hard)
- git checkout (-b)
- git tag
- git log
- git blame
- git bisect
- git cherry-pick
Bearbeitet zu zweit so viele Git Katas von https://github.com/eficode-academy/git-katas wie Ihr innerhalb von 15 Minuten schafft.
Aufgabe:
- Bearbeite die restlichen Git-Katas von https://github.com/eficode-academy/git-katas
- Bearbeite das Tutorial zu Git Branches: https://learngitbranching.js.org/
Git Workflows
Notwendige Vorkenntnisse: Git Basics
(Raphael demonstriert ein bisschen was zu GitLab und CI/CD)
Aufgabe:
- lies https://www.atlassian.com/continuous-delivery/continuous-integration und die Unter-Kapitel
- lies die GitLab-Dokumentation zu CI/CD
- Lege in der GitLab-Gruppe ASE22WS ein neues Projekt an
- Entwickle eine gut dokumentierte FizzBuzz-Anwendung in Python mit mehreren Commits. Erweitere sie auf beliebige Wörter und füge Logging oder ein anderes tolles Feature hinzu.
- Baue eine CI/CD-Pipeline, die automatisch die Dokumentation der Anwendung erzeugt und Tests laufen lässt. (Tipp: verwende das Python-Template von GitLab)
Alternative Versionskontrollsysteme
Git ist inzwischen das meistverbreitete Werkzeug zur Versionskontrolle. Es gibt allerdings einige Alternativen, die eleganter, benutzerfreundlicher und/oder performanter sind.
Beispiele:
- Fossil von den Entwicklern von sqlite
- Mercurial (siehe auch: Diskussion zu Facebook's Sapling)
- Perforce / Helix Core (kommerziell, gut für Binärdateien)
Aufgabe:
- Lies Hacker-News-Kommentare zu diesen Systemen und fasse die wichtigsten Aspekte in Stichpunkten zusammen
- Installiere Fossil und Mercurial, klone ein existierendes Repository und mache einen lokalen Commit in einer Datei. Vergleiche Laufzeit und Speicherbedarf informell.