1. 2024-09-26
1.1. Bezeichnungen in git-Repositories

-
Bezeichnungen sollten immer im kebab-Casing erstellt werden:
-
Grund: beim erstellen von Docker-Images kann es zu Problemen kommen.
-
statt "FerienPass" → "ferien-pass"
-
1.2. Minimum Viable Product
-
Eine User Story muss so klein sein, dass man sie in einem Sprint erledigen kann
-
https://blog.crisp.se/2016/01/25/henrikkniberg/making-sense-of-mvp
-
Alle 2 Wochen wird ein neues MVP erstellt (Rapid Value Creation)

2. 2024-10-24

2.1. gh-actions - Ein erster Workflow
-
ist ein Mechanismus, mit dem shell-Befehle hinterlegt werden können, die anschließend ausgeführt werden.
-
https://docs.github.com/en/actions/writing-workflows/quickstart
-
Was ist yaml?
-
Vergleichbar mit JSON, nur andere Schreibweise
-
-
Erstellen eines gh-Verzeichnisses
mkdir -p .github/workflows
-
Erstellen einer Workflow Datei
github-actions-demo.yaml
name: GitHub Actions Demo run-name: ${{ github.actor }} is testing out GitHub Actions 🚀 on: [push] jobs: Explore-GitHub-Actions: runs-on: ubuntu-latest steps: - run: echo "🎉 The job was automatically triggered by a ${{ github.event_name }} event." - run: echo "🐧 This job is now running on a ${{ runner.os }} server hosted by GitHub!" - run: echo "🔎 The name of your branch is ${{ github.ref }} and your repository is ${{ github.repository }}." - name: Check out repository code uses: actions/checkout@v4 - run: echo "💡 The ${{ github.repository }} repository has been cloned to the runner." - run: echo "🖥️ The workflow is now ready to test your code on the runner." - name: List files in the repository run: | ls ${{ github.workspace }} - run: echo "🍏 This job's status is ${{ job.status }}."
-
Committen und pushen
2.2. Workflow zum kompilieren eines quarkus Projekts
-
löschen des bestehenden Workflow-Files oder deaktivieren mittels Anfügen der Endung
disabled
-
Erstellen eines workflow-Files
actions.yaml
name: GitHub Actions Demo run-name: ${{ github.actor }} is compiling a quarkus project 🚀 on: [push] jobs: Explore-GitHub-Actions: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: actions/setup-java@v4 (1) with: distribution: 'temurin' java-version: '21' cache: 'maven' (2) cache-dependency-path: 'ci-cd/pom.xml' # optional - name: Build with Maven working-directory: ci-cd run: mvn -B package --file pom.xml
1 | Es ist sinnvoll am gh-Marketplace eine action zu suchen. Hier bildet die java-setup-action die Grundlage. |
2 | Mit dieser Actions können die maven-dependencies zwischen den Läufen gecached werden. Im Fehlerfall wird der Cache gelöscht. |

5. 2025-02-27 Security
git clone git@github.com:caberger/keycloak.git cd compose docker compose up --build # Löschen der images und volumes docker image ls -q | xargs docker image rm docker volume ls -q | xargs docker volume rm
6. 2025-03-06 OIDC



-
Für die Umsetzung verwenden wir Keycloak
-
RBAC: Role Based Access Control
-
Wir verwenden hier den OIDC Standard
7. 2025-03-13
7.1. RBAC
-
Role Based Access Control
-
Die Zugriffsrechte auf eine APP (API) werden oft über die API selbst definiert, dh bestimmte Endpoints sind nur mit bestimmten Rollen zugänglich
-
Bei RBAC sind dazu Annotationen im Code notwendig.
-
Eine Alternative dazu sind sogenannte Policies (Politiken), die in Keycloak definiert werden.
-
Keycloak ist ein IAM ein Identity and Access Management System.
-
-
Was ist eine Rolle?
-
Eine Sammlung von Rechten (Permissions)
-
-
Wenn ein Recht für den Zugriff auf einen Endpoint nicht vorhanden ist, wird ein 403 Forbidden zurückgegeben.
-
Voraussetzung für die Überprüfung auf ein vorhandenes Recht ist, dass der Benutzer authentifiziert ist und ein gültiges Token besitzt.
-
Wer bin ich? (Authentifizierung)
-
Was darf ich? (Autorisierung) - welche Rechte habe ich?
-
-
Was ist eine Resource?
-
Ein REST-Endpoint, auf den zugegriffen werden kann.
-
-
Annotationen in Quarkus:
-
@PermitAll: Jeder darf auf den Endpoint zugreifen
-
-
application.properties
-
quarkus.oidc.auth-server-url damit wird die ausstellende Stelle des Tokens definiert
-
-
Für Web-Frontends
8. 2025-03-27
8.1. Keycloak bei Angular-Frontend
8.1.1. Richtige (lokale) Installation von Angular
-
Man möchte sich nicht darauf verlassen, was ein anderer auf der Maschine installiert hat.
-
Angular wird lokal installiert
npm init -y npm install @angular/cli
-
Die globale Installation verschmutzt den Pfad und legt ng in einer bestimmten Version in den globalen Path.
-
npx … Node Package Exceutor
npx ng new ng-demo
npm outdated find . -type f -print | wc -l
8.1.2. Exkurs: DI in Angular
-
Promise: Versprechen, dass nach Fertigstellung Daten "geliefert" werden.
-
const promise1 = new Promise((resolve, reject) => { //resolve("Success!"); reject(); }); promise1.then((value) => { console.log(value); // Expected output: "Success!" },() => {console.log('Das ist schief gegangen')} );
-
async-await
-
fetch-api
9. 2025-04-10
9.2. Einrichten eines nginx-Servers

apt-get update && apt-get dist-upgrade apt autoremove df -h docker container ls -a docker container prune docker image ls docker container prune docker image prune docker image ls -q | xargs docker image rm docker image ls docker volume ls docker volume prune docker volume prune -f docker volume prune -a docker volume ls docker builder prune -f docker network ls docker network rm leo-iot_default docker network rm leo-iot_quarkus systemctl status nginx apt install nginx systemctl enable nginx systemctl restart nginx netstat -ant apt install net-tools netstat -ant netstat -antp ifconfig cd /etc/nginx/conf.d/ cd .. ll cat nginx.conf cd sites-enabled/ cat default cd /var/www/html/ ll nano index.nginx-debian.html
10. 2025-04-24
10.1. Erstellen einer docker-compose.yaml für Quarkus-Backend
-
Der Code ist hier zu finden.
-
SubDir: labs/docker/vehicle/
-
-
Dockern einer postgres-db
In obigem Artikel sieht man schön, wie man mit healthcheck die Startreihenfolge der Container (Services) steuern kann. |