Ich nehme derzeit an einer Akademie zum Java Fullstack Software Engineer teil. In den kommenden Wochen möchte ich hier meine Mitschrift, so gut es geht, aufzeichnen und mitteilen. Hier ist das, was ich vom zehnten Tag in Block 11+12 (wir springen etwas hin und her) gelernt und behalten habe:
Git Workflow Zusammenfassung
Wenn ich ein Projekt in Gitlab oder Github erstellen möchte, bietet es sich an, dies wie folgt zu machen:
Ich erstelle ein lokales Projekt in einer Bash oder in IntelliJ. Dort kann auch schon der erste Inhalt erfolgen. Zusätzlich erstelle ich ein leeres Repository in Github.
Die folgenden lokalen Befehle beschreiben wie beide Projekte miteinander verknüpft werden:


Und hier in Text-Form:
git initgit config --global user.name "Hans-Joachim Blanke"
git config --global user.email "joachim@gitlab.i4p.loc"
Browser: http://gitlab.i4p.loc/joachim
Create new empty project: ueb-geometie-git-workflow
git remote rename origin old-origin //optional
git remote add origin http://dev.i4p.loc/joachim/ueb-geometie-git-workflow.git
git push -u origin --all
git push -u origin --tags
git push --set-upstream origin main
- Branches
Ueb-Branches (Geometrie)
Branch-Kommandos:
git branch // Zeige alle Branches an
git branch [branch_name] // Lege neuen Branch an
git checkout [branch_name] // Wechsel Working-Directory
git merge [from name] // Merge Branch
git branch -d [name] // Delete Branch
Pipelines / CICD
Links:
- https://docs.gitlab.com/ee/ci/quick_start/
- https://docs.gitlab.com/ee/ci/examples/
- https://gitlab.com/gitlab-org/gitlab/-/tree/master/lib/gitlab/ci/templates
- https://testdriven.io/blog/gitlab-ci-docker/
- https://docs.gitlab.com/ee/ci/examples
- https://gitlab.com/gitlab-examples/spring-gitlab-cf-deploy-demo/-/blob/master/.gitlab-ci.yml
- https://torlenor.org/linux/k8s/devops/2020/12/23/deployment_on_k8s_from_gitlab_cicd.html
- https://docs.gitlab.com/ee/ci/docker/using_docker_images.html
- https://about.gitlab.com/blog/2018/02/05/test-all-the-things-gitlab-ci-docker-examples/
- https://gableroux.com/posts/2018-01-16-test-all-the-things-in-gitlab-ci-with-docker-by-example/
Struktur eines Gitlab-Servers und ein Gitlab-Runners:

Im Gitlab Runner laufen verschiedene Shell-Scripte.
Die Gitlab-Runner registrieren sich an Gitlab-Token.
Der jeweilige Runner wird nach der Registrierung den jeweiligen Projekten zur Verfügung gestellt.
Hier ein Auszug aus einer .gitlab-ci.yml:

Die Pipeline durchläuft mehrere Stages und damit mehrere Jobs. Diese Jobs laufen meistens in eigenen Docker-Containern:

Die Gitruner sorgen dafür, dass die einzelnen Jobs durchgeführt werden:


Praxis-Tipp: Der Gitlab-Runner-User hat ein paar Dateien, die manchmal zu merkwürdigen Fehlermeldungen führen. Die sollten wir rausschmeißen:

Installation vom Gitlab-Runner:


Runner erstellen für ein Projekt:


Im Hintergrund sieht der Registrierungsprozess wie folgt aus (die "Zu Fuß-Methode"):

Dadurch wird ein neuer Runner ("mylocrunner") erstellt und im Gitlab angezeigt. Dort muss er noch aktiviert werden:

Disclaimer
Alles was ich mitschrieb und verstanden habe ist ohne Gewähr. Die Bilder stammen teilweise aus dem Internet und wir haben keine Urheberansprüche darauf.
Besten Dank an unseren sehr empfehlenswerten
Trainer: Hans-Joachim Blanke blanke@4point.de

In den nächsten Tagen geht es weiter, so: stay tuned!
Achim Mertens