Tutorial Version Control, Build Automation

ASE WS 2022/23

Rückschau

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

(wir schauen mal gemeinsam Beispiele an)

(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)

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.

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:

Notwendige Vorkenntnisse: Git Basics

(Raphael demonstriert ein bisschen was zu GitLab und CI/CD)

Aufgabe:

  • 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)

Git ist inzwischen das meistverbreitete Werkzeug zur Versionskontrolle. Es gibt allerdings einige Alternativen, die eleganter, benutzerfreundlicher und/oder performanter sind.

Beispiele:

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.