Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Übernahme sprint -> main #51

Merged
merged 10 commits into from
May 7, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 44 additions & 0 deletions .github/workflows/build-integration.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
name: Integration compliance check and build test

on:
push:
branches-ignore:
- 'sprint'
- 'main'
paths:
- 'mobidam-sst-management-integration/**'
- '.github/workflows/**'
pull_request:
types: [ opened, reopened ]

jobs:
compliance:
runs-on: ubuntu-latest

steps:
- name: Checkout code
uses: actions/checkout@v3

- name: Advance Security Policy as Code
uses: advanced-security/policy-as-code@v2.4.1
with:
policy: it-at-m/policy-as-code
policy-path: default.yaml
token: ${{ secrets.GITHUB_TOKEN }}
argvs: "--disable-dependabot --disable-secret-scanning --disable-code-scanning --display"

build-maven:
needs: compliance
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- name: Set up JDK 17
uses: actions/setup-java@v3
with:
java-version: "17"
distribution: "temurin"
cache: "maven"

- name: Build with Maven
run: mvn --update-snapshots -f mobidam-sst-management-integration/pom.xml verify
64 changes: 64 additions & 0 deletions .github/workflows/release-build-integration.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
name: Build integration release

on:
workflow_dispatch:
inputs:
branch:
description: "Branch to release from ?"
required: true
default: "main"
release-version:
description: "Release version ?"
required: true
release-tag:
description: "Release tag ?"
required: true
development-version:
description: "Next Development version ?"
required: true

jobs:
release:
name: Create release
runs-on: ubuntu-latest
steps:
- name: Git checkout to main branch # Releases are published on main branch
uses: actions/checkout@v4
with:
ref: ${{ github.event.inputs.branch }}

- name: Setup git user
uses: fregante/setup-git-user@v2

- name: Set up JDK and OSSRH auth / GPG signing
uses: actions/setup-java@v3
with:
java-version: "17"
distribution: "temurin"
cache: "maven"
server-id: "central"
server-username: CENTRAL_USERNAME
server-password: CENTRAL_PASSWORD
gpg-private-key: ${{ secrets.gpg_private_key }}
gpg-passphrase: SIGN_KEY_PASS

- name: Perform maven release
run: >
mvn --batch-mode --no-transfer-progress -f mobidam-sst-management-integration/pom.xml release:prepare release:perform
-DreleaseVersion=${{ github.event.inputs.release-version }}
-DdevelopmentVersion=${{ github.event.inputs.development-version }}
-Dtag=${{ github.event.inputs.release-tag }}
-Darguments="-DskipTests"
env:
SIGN_KEY_PASS: ${{ secrets.gpg_passphrase }}
CENTRAL_USERNAME: ${{ secrets.sonatype_username }}
CENTRAL_PASSWORD: ${{ secrets.sonatype_password }}

- name: Create GitHub Release
id: create_release
uses: softprops/action-gh-release@v1
with:
tag_name: ${{ github.event.inputs.release-tag }}
draft: false
prerelease: false
generate_release_notes: false
37 changes: 37 additions & 0 deletions .github/workflows/release-docs.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
name: Release docs

on:
push:
branches:
- 'release-docs-autom'
paths:
- 'docs/**'
- '.github/workflows/**'

jobs:
build-and-deploy:
runs-on: ubuntu-latest
defaults:
run:
working-directory: ./docs
steps:
- name: Change to sprint branch
uses: actions/checkout@v4
with: { ref: sprint }

- uses: actions/setup-node@v3
with:
node-version: '16'
cache: 'npm'
registry-url: 'https://registry.npmjs.org'
cache-dependency-path: "./docs/package-lock.json"

- run: npm install

- run: npm run build

- name: Deploy
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./docs/src/.vuepress/dist
2 changes: 1 addition & 1 deletion .github/workflows/require-checklist.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ on:
jobs:
checklist-check:
runs-on: ubuntu-latest
if: ${{ github.actor != 'dependabot[bot]' }}
if: ${{ github.actor != 'renovate[bot]' }}
steps:
- uses: mheap/require-checklist-action@v2
with:
Expand Down
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1 +1,3 @@
/.idea/

**/node_modules
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ TBD: _how can i start and fly this project_

<!--*what insights do you have to tell*-->

Die Dokumentation befindet sich unter <a href="https://github.com/it-at-m/mobidam-sst-management/tree/sprint/docs">docs</a>
Die Dokumentation befindet sich unter <a href="https://github.com/it-at-m/mobidam-sst-management/tree/sprint/docs">docs</a> oder https://it-at-m.github.io/mobidam-sst-management/

<p align="right">(<a href="#top">nach oben</a>)</p>

Expand Down
35 changes: 10 additions & 25 deletions docs/src/.vuepress/config.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
const { description } = require('../../package')

module.exports = {
base: '/mobidam-sst-management/',
/**
* Ref:https://v1.vuepress.vuejs.org/config/#title
*/
Expand Down Expand Up @@ -34,33 +35,17 @@ module.exports = {
lastUpdated: false,
nav: [
{
text: 'Dokumentation',
link: '/dokumentation/',
},
{
text: 'Konfiguration',
link: '/konfiguration/'
text: 'Munich Open Source',
link: 'https://opensource.muenchen.de/',
}
],
sidebar: {
'/dokumentation/': [
{
title: 'Dokumentation',
collapsable: false,
children: [
'',
'using-vue',
]
}
],
"/configuration/": [
{
title: "Umgebung",
collapsable: false,
children: ["env/"],
}
]
}
sidebar: [
'/dokumentation/',
"/releasenotes/",
"/api/",
"/konfiguration/",
"/technisches-setup/"
]
},

/**
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
9 changes: 9 additions & 0 deletions docs/src/api/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
# API

## Statisch

![API](~@source/images/API.png)

## Api-Docs

[api-docs.json](https://github.com/it-at-m/mobidam-sst-management/blob/sprint/mobidam-sst-management-integration/mobidam-sst-management-integration-lib/src/main/resources/api-docs.json)
1 change: 1 addition & 0 deletions docs/src/api/api-docs.json
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
{"openapi":"3.0.1","info":{"title":"OpenAPI definition","version":"v0"},"servers":[{"url":"http://localhost:39146","description":"Generated server url"}],"paths":{"/api/schnittstelle/update":{"put":{"tags":["schnittstelle-controller"],"summary":"Updates the schnittstelle","operationId":"update","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SchnittstelleDTO"}}},"required":true},"responses":{"400":{"description":"Bad Request","content":{"application/hal+json":{"schema":{"type":"string"}}}},"200":{"description":"OK","content":{"application/hal+json":{"schema":{"type":"object"}}}}}}},"/api/zuordnung":{"post":{"tags":["zuordnung-controller"],"summary":"Generates a zuordnung","operationId":"create","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZuordnungCreateDTO"}}},"required":true},"responses":{"400":{"description":"Bad Request","content":{"application/hal+json":{"schema":{"type":"string"}}}},"200":{"description":"OK","content":{"application/hal+json":{"schema":{"type":"object"}}}}}}},"/api/schnittstelle":{"get":{"tags":["schnittstelle-controller"],"summary":"Get all schnittstelle","operationId":"getAll","responses":{"400":{"description":"Bad Request","content":{"application/hal+json":{"schema":{"type":"string"}}}},"200":{"description":"OK","content":{"application/hal+json":{"schema":{"type":"object"}}}}}},"post":{"tags":["schnittstelle-controller"],"summary":"Creates schnittstelle","operationId":"create_1","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SchnittstelleCreateDTO"}}},"required":true},"responses":{"400":{"description":"Bad Request","content":{"application/hal+json":{"schema":{"type":"string"}}}},"200":{"description":"OK","content":{"application/hal+json":{"schema":{"$ref":"#/components/schemas/SchnittstelleDTO"}}}}}}},"/api/datentransfer":{"post":{"tags":["datentransfer-controller"],"summary":"Creating a Datentransfer for an existing Schnittstelle","operationId":"createDatentransfer","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DatentransferCreateDTO"}}},"required":true},"responses":{"400":{"description":"Bad Request","content":{"application/hal+json":{"schema":{"type":"string"}}}},"200":{"description":"OK","content":{"application/hal+json":{"schema":{"type":"object"}}}}}}},"/api/zuordnung/bySchnittstelle/{id}":{"get":{"tags":["zuordnung-controller"],"summary":"Returns the list of all zuordnungen of a schnittstelle","operationId":"getAllById","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"400":{"description":"Bad Request","content":{"application/hal+json":{"schema":{"type":"string"}}}},"200":{"description":"OK","content":{"application/hal+json":{"schema":{"type":"object"}}}}}}},"/api/schnittstelle/{id}/status":{"get":{"tags":["schnittstelle-controller"],"summary":"Get status of schnittstelle","operationId":"getStatus","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"400":{"description":"Bad Request","content":{"application/hal+json":{"schema":{"type":"string"}}}},"200":{"description":"OK","content":{"application/hal+json":{"schema":{"type":"object"}}}}}}},"/api/datentransfer/{schnittstelleId}/{page}":{"get":{"tags":["datentransfer-controller"],"summary":"Get all Datentransfers for Schnittstelle","operationId":"getBySchnittstelle","parameters":[{"name":"schnittstelleId","in":"path","required":true,"schema":{"type":"string"}},{"name":"page","in":"path","required":true,"schema":{"type":"integer","format":"int32"}}],"responses":{"400":{"description":"Bad Request","content":{"application/hal+json":{"schema":{"type":"string"}}}},"200":{"description":"OK","content":{"application/hal+json":{"schema":{"type":"object"}}}}}}},"/api/datentransfer/latestResultState/{schnittstelleId}":{"get":{"tags":["datentransfer-controller"],"summary":"Get first Datentransfer result state for Schnittstelle","operationId":"getLatestResultStateBySchnittstelle","parameters":[{"name":"schnittstelleId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"400":{"description":"Bad Request","content":{"application/hal+json":{"schema":{"type":"string"}}}},"200":{"description":"OK","content":{"application/hal+json":{"schema":{"type":"object"}}}}}}},"/api/zuordnung/{id}":{"delete":{"tags":["zuordnung-controller"],"summary":"Deletes the zuordnung with the given ID","operationId":"deleteById","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"400":{"description":"Bad Request","content":{"application/hal+json":{"schema":{"type":"string"}}}},"200":{"description":"OK"}}}},"/api/schnittstelle/{id}":{"delete":{"tags":["schnittstelle-controller"],"summary":"Deletes the schnittstelle with the given ID","operationId":"deleteById_1","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"400":{"description":"Bad Request","content":{"application/hal+json":{"schema":{"type":"string"}}}},"200":{"description":"OK"}}}}},"components":{"schemas":{"SchnittstelleDTO":{"required":["anlagedatum","id","name"],"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"anlagedatum":{"type":"string","format":"date"},"aenderungsdatum":{"type":"string","format":"date"},"status":{"type":"string"},"begruendung":{"type":"string"}}},"ZuordnungCreateDTO":{"required":["benutzerkennung","fachbereich","funktionsadresse","gueltigAb","gueltigBis","schnittstelle"],"type":"object","properties":{"schnittstelle":{"type":"string","format":"uuid"},"benutzerkennung":{"type":"string"},"fachbereich":{"type":"string"},"funktionsadresse":{"type":"string"},"gueltigAb":{"type":"string","format":"date"},"gueltigBis":{"type":"string","format":"date"}}},"SchnittstelleCreateDTO":{"required":["name"],"type":"object","properties":{"name":{"type":"string"},"status":{"type":"string"},"begruendung":{"type":"string"}}},"DatentransferCreateDTO":{"required":["ereignis","prozessId","schnittstelle","zeitstempel"],"type":"object","properties":{"prozessId":{"type":"string"},"zeitstempel":{"type":"string","format":"date-time"},"ereignis":{"type":"string"},"info":{"type":"string"},"schnittstelle":{"type":"string","format":"uuid"}}}}}}
104 changes: 96 additions & 8 deletions docs/src/dokumentation/README.md
Original file line number Diff line number Diff line change
@@ -1,23 +1,111 @@
# Einführung
# Dokumentation

Die MobidaM SST-Management-Anwendung wird in der Microservice Architektur umgesetzt und in Github als Multi-Repos verwaltet.
## Einführung

Für die Administration und Überwachung der Vielzahl von Schnittstellen in der MobidaM-Plattform wird eine Weboberfläche bereitgestellt,
in welcher diese Tätigkeiten durchgeführt werden.

Primär wird über diese Komponente das Aktivieren und Deaktivieren einzelner Schnittstellen ermöglicht.
Dies kann nötig sein, wenn ein Datenlieferant eine längere Wartung der Schnittstelle durchführt und diese nicht verfügbar ist
oder die bereitgestellten Daten fehlerhaft sind und nicht verarbeitet werden können.
Um in solchen Fällen die Anzahl der Fehlermeldungen zu minimieren, können die betroffenen Schnittstellen deaktiviert und die Deaktivierung protokolliert werden.
Zudem ist eine einfache Auswertung der Logdateien möglich.

An der Webanwendung kann sich eine berechtigte Person anmelden und sieht dann in der Oberfläche die Schnittstellen samt ihrem aktuellen Status.

![Screenshot Übersicht Schnittstellen](~@source/images/MobidaM_SST-Management-Komponente_Screenshot1.png)
*Screenshot Übersicht Schnittstellen*

---

![Screenshot Ansicht Schnittstelle](~@source/images/MobidaM_SST-Management-Komponente_Screenshot2.png)
*Screenshot Ansicht Schnittstelle*

---

## Datenmodell

![Datenmodell](~@source/images/Datenmodell.drawio.png)

## Fachliche Beschreibung

### Anlegen von Schnittstellen

![Screenshot Anlegen Schnittstellen](~@source/images/MobidaM_SST-Management-Komponente_Screenshot3.png)

---

![Screenshot Anlegen Schnittstellen](~@source/images/MobidaM_SST-Management-Komponente_Screenshot4.png)

### Speichern der Log-Informationen

Sobald von einen Datengeber Daten abgerufen werden, werden in der Management-Komponente folgende Informationen zum Abruf gespeichert:

Welche Schnittstelle (z. B. S05.1)
Datum, Beginn und Ende Uhrzeit
Status
Anzahl der Datensätze
Fehlermeldung im Fehlerfall

### Auswerten der Loginformationen

Innerhalb der Steuerungsoberfläche gibt es die Möglichkeit, die Logeinträge einzusehen.

## Komponenten
Die MobidaM SST-Management-Komponente wird in der Microservice Architektur umgesetzt und in Github als Multi-Repo verwaltet.

![Komponenten](~@source/images/Komponenten.png)

Derzeit werden die folgenden Services in Github unter der MIT Lizenz Open Source zur Verfügung gestellt:

## Frontend
### Frontend

Das [Frontend](https://github.com/it-at-m/mobidam-sst-management/mobidam-sst-management-frontend) liefert die Weboberfläche der Anwendung incl. Authentifizierung aus.

## Backend
### Backend

Das [Backend](https://github.com/it-at-m/mobidam-sst-management/mobidam-sst-management-backend) ist der zentrale Microservice zur Verarbeitung der Daten
der Anwendung.

### Integration

Mit dem mobidam-sst-management-integration-starter wird eine allgemeine Komponente zu bereitgestellt, die in die Schnittstellen eingebaut werden kann,
sodass hier ein Großteil an Entwicklungsarbeit gespart werden kann.


## Stack

Die Anwendung stellt den kompletten erforderlichen [Infrastruktur-Stack](https://github.com/it-at-m/mobidam-sst-management/stack) incl. IDP und Datenbank als Container zur Verfügung.
Als Infrastruktur wird eine Postgresql-Datenbank sowie als Identity Provider Keycloak eingesetzt.


## Build & Deployment

### Github-Actions

| Auslöser | Action | Build |
|---------------------------------------------------|-------------------------|----------------------------------------------------|
| on push (Feature-Branch)<br>on PR (sprint-Branch) | **build-*app*** | Backend / Frontend compliance check and build test |
| manuell | **publish-feature** | Build and release to dev |
| on push (sprint-Branch) | **publish-test** | Build and release to test |
| manuell<br>scheduled (jede Woche) | **publish-demo** | Build and release to demo |
| manuell | **release-build-*app*** | Build backend/frontend release |
| manuell (Input: release-version) | **publish-prod-*app*** | Build and release to prod |
| manuell | **release-docs** | Release docs |


## Reguläre Builds

+ **Backend / Frontend compliance check and build test**: Nach jedem Push auf einen Feature-Branch bzw. bei jedem Öffnen oder Wiedereröffnen von Pull Requests auf sprint / main wird ein Maven Build des entsprechenden Moduls inklusive der Unit-Tests und Code-Checks und ein Compliance-Check ausgeführt.

## Image Builds

Bei jedem der folgenden Szenarien werden immer die gleichen Schritte jeweils für Frontend und Backend ausgeführt: ein Maven Build inkl. Unit-Tests und Code-Check, Image Build und Image Push auf Dockerhub.

+ **Build and release to dev**: Dieser Workflow kann manuell auf beliebigen GitHub Branches ausgeführt werden. Nach einem regulären Maven Build wird das Image erstellt und auf Dockerhub gepusht unter den Tags mobidam:mobidam-sst-management-*frontend/backend*-dev.
+ **Build and release to test**: Dieser Workflow wird nur automatisch nach einem Push auf den sprint GitHub Branch ausgeführt. Die erstellten Tags lauten mobidam:mobidam-sst-management-*frontend/backend*-test
+ **Build and release to demo**: Dieser Workflow wird wöchentlich am Samstag um 13:00 Uhr ausgelöst, wird aber nur jede 3. Woche ausgeführt. Zusätzlich dazu kann er auch manuell gestartet werden. In diesem Workflow wird der Stand des main GitHub Branches gebaut und gepusht mit den Tags mobidam:mobidam-sst-management-*frontend/backend*-demo.
+ **Release docs**: Dieser Workflow kann manuell gestartet werden. Er führt ein Build und Release des /docs Ordners aus auf dem sprint Branch. Die dort umgesetzte Vuepress-Seite wird gebaut und die gebauten HTML-Dateien werden auf den gh-pages Branch gepusht, um dann automatisch auf die für GitHub-Pages angegebene URL deployed zu werden.

## Snapshots und Releases

<!--
[Kontaktieren Sie uns einfach per E-Mail](/contact).
-->
+ **Build backend/frontend release**: Diese Workflows betrachten primär den Codestand des main GitHub Branch und können manuell gestartet werden. Innerhalb der Workflows erfolgt ein Maven Build inkl. Unit-Tests und Code-Check, Image Build und Image Push auf Dockerhub. Zusätzlich wird die vorhandene Snapshot-Version zu einer Nicht-Snapshot-Version (Release) geändert. Zudem werden ein GitHub Release (Release Backend/Frontend *Version*) und ein Git Tag (backend/frontend-*version*) für den Release erstellt. Als nächstes werden Images mit den Tags mobidam:mobidam-sst-management-*frontend/backend*-*version* und mobidam:mobidam-sst-management-*frontend/backend*-demo erstellt und gepusht. Ein GitHub-Bot veröffentlicht die pom.xml mit der neuen, hochgezählten Snapshot-Version auf dem Default-Branch. Es wird grundsätzl. immer nur die Patch-Version automatisiert hochgezählt. Ist eine Major/Minor-Erhöhung nötig, wird dies im Feature-Branch gemacht.
Loading
Loading