git-subtree-dir: bahn/wissensdatenbank git-subtree-split: 07a8196e5f9e55d027f90485beb95f4006387669
6.3 KiB
SETUP – Was du (manuell) tun musst
Code/Config sind vorbereitet. Diese Schritte brauchen Zugaenge/Rechte, die nur du hast.
Warum kein Deps-Image? (PyPI ueber Artifactory-Mirror)
Die GitLab-Runner-Pods erreichen pypi.org nicht, aber den Artifactory-PyPI-Mirror
auf bahnhub. Deshalb setzt die CI PIP_INDEX_URL auf den Mirror – dann funktioniert
pip install direkt im Job, ohne eigenes Image:
PIP_INDEX_URL = https://bahnhub.tech.rz.db.de/artifactory/api/pypi/pypi-remote/simple
Ist bereits in .gitlab-ci.yml gesetzt. Falls der Repo-Name im Konzern abweicht,
dort anpassen (beim DXP-/pipeship-Team erfragen). lint/pages brauchen kein pip.
Checkliste
1. PyPI-Mirror pruefen
- Ersten Pipeline-Lauf ansehen:
test-Job musspip installueber den Mirror schaffen. Falls 403/404:PIP_INDEX_URL(Repo-Name) in.gitlab-ci.ymlanpassen.
2. CI/CD-Variablen anlegen (Settings → CI/CD → Variables, Masked & Protected)
- [ x]
CONFLUENCE_URL=https://arija-confluence.jaas.service.deutschebahn.com - [x ]
CONFLUENCE_TOKEN= dein Confluence-PAT (neuen erzeugen, alten rotieren!) - [x ]
GIT_PUSH_TOKEN= Project Access Token mit Scopewrite_repository - (optional)
GITLAB_TOKEN= Read-Token, fallsgitlab_md-Quellen aus PRIVATEN GitLab-Repos geladen werden (oeffentliche brauchen keinen Token) - (DEPS_IMAGE entfaellt – pip laeuft ueber PIP_INDEX_URL, siehe oben)
3. Schedule (CI/CD → Schedules)
- Schedule angelegt: Cron
0 8-17 * * 1-5(stuendlich Mo–Fr 8–17 Uhr), Target Branchmain. Derknowledge-etl-Job laeuft nur beischedule/web.
3b. Netzzugang des Runners (WICHTIG fuer den ETL-Lauf)
Der Runner muss die Quellen erreichen, sonst kommen 0 Dokumente (Timeouts):
- intern:
arija-confluence...deutschebahn.com(Confluence) - oeffentlich:
www.dbinfrago.com(Kundeninfos, INB, Regelwerk)
Der knowledge-etl-Job ist bereits auf den DB-Web-Proxy konfiguriert
(http://webproxy.comp.db.de:8080) mit NO_PROXY fuer interne Hosts
(.tech.rz.db.de, .deutschebahn.com).
- Pruefen, ob Proxy-Host/Port stimmen (ggf. in
.gitlab-ci.ymlanpassen) und ob der Proxy keine Authentifizierung verlangt. Beim naechsten Lauf im Log sehen: laufen Confluence + dbinfrago jetzt durch?
4. Protected Branch + Freigabe (Settings → Repository → Protected Branches)
- [x ]
mainschuetzen: „Allowed to push" = niemand (nur via MR); „Allowed to merge" = Maintainer. - Settings → Merge requests: „Require approval from Code Owners" aktivieren. das ignroerien wir erst mal
- In
CODEOWNERSdie Platzhalter durch echte GitLab-Gruppen/Handles ersetzen (@einfachbahn-lab/wissensdatenbank-maintainer-> reale Gruppe).das auch
- Hinweis: Der automatische Bot-Push auf
mainbraucht dann eine Ausnahme (Token-User als „Allowed to push" zulassen) ODER der Bot pusht auf einen Branchknowledge-data(in.gitlab-ci.ymlTARGET_BRANCHumstellen) + Auto-MR. -> braucht es das dann noch? ANTWORT: Ja. Damain„push = niemand" ist, wuerde der automatische ETL-Push scheitern. Einfachste Loesung: denGIT_PUSH_TOKEN-User unter „Allowed to push" fuermainzulassen. (CODEOWNERS-Approval ignorieren wir ja erst mal, also kein MR-Zwang.)
5. GitLab Pages aktivieren (Deploy → Pages)
- [ x] Nach erstem erfolgreichen
pages-Job ist die URL unter Deploy → Pages sichtbar. (Job laeuft aufmain; nutzt nur stdlib, kein Deps-Image noetig.)
das hier verstehe ich noch nicht:
6. Issue → MR Automatisierung (optional, fuer Self-Service)
Ziel: Ein Fachbereich meldet neues Wissen per GitLab-Issue (Vorlage „Neues Wissen"),
ohne yaml/Git zu koennen. Daraus wird automatisch ein Eintrag in config/tools.yaml
- ein Merge Request mit Vorschau. So laeuft es:
- Person legt ein Issue mit der Vorlage an (Tool, Link(s), Scope, Ansprechpartner)
und Label
neues-wissen. - Aus dem Issue wird ein tools.yaml-Eintrag erzeugt (
scripts/issue_to_source.py) und ein MR geoeffnet (scripts/issue_to_mr.sh <ISSUE_ID>), inkl. Markdown-Vorschau. - Reviewer schaut die Vorschau an und merged = Freigabe.
Du musst nur entscheiden, WIE Schritt 2 ausgeloest wird:
-
Manuell (einfachste Variante): Reviewer fuehrt
scripts/issue_to_mr.sh <ISSUE_ID>lokal aus (brauchtglabeingeloggt + aktive venv +CONFLUENCE_*). Fuer den Anfang reicht das. -
Automatisch (spaeter): GitLab-Webhook auf „Issues events" an einen kleinen Dienst, der das Skript ausfuehrt – ODER ein scheduled CI-Job, der offene
neues-wissen-Issues abarbeitet. -
Label
neues-wissenanlegen (fuer beide Varianten). -
Fuer den Start: Variante „manuell" nutzen. Automatik ist optional/spaeter.
8. Reviews
- [ passt erst mal] GitLab Pages (Uebersicht) pruefen.
- [passt erst mal ]
pendingfreigeben: URL oderhash:<content_hash>inconfig/approvals.yamlunterapproved:eintragen.
ETL-Bot - was genau noch zu tun ist
Der knowledge-etl-Job laeuft per Schedule (stuendlich Mo–Fr 8–17 Uhr), baut das Wissen und pusht das Ergebnis
zurueck. Dafuer:
GIT_PUSH_TOKENanlegen: Settings → Access Tokens → Project Access Token, RolleMaintainer, Scopewrite_repository. Wert als CI/CD-VariableGIT_PUSH_TOKEN(Masked & Protected) speichern.- Push auf
mainerlauben (weilmain„push = niemand" ist): Settings → Repository → Protected Branches →main→ unter „Allowed to push" den Token-User hinzufuegen (heisst typ.project_<id>_bot).- Alternative (main bleibt strikt): in
.gitlab-ci.ymlTARGET_BRANCH: knowledge-datasetzen; der Bot pusht dann auf einen Datenbranch (kein Push auf main noetig).
- Alternative (main bleibt strikt): in
- Schedule angelegt (CI/CD → Schedules, Cron
0 8-17 * * 1-5, Targetmain). ✔
Mehr ist fuer den Bot nicht noetig – pip laeuft ueber den PyPI-Mirror.
Quellen-Typen: GitLab / Datei im Repo / public
- GitLab (
gitlab_md): ✅ Markdown-Dateien aus einem Repo, mit Ordner (path) und Tiefe (max_depth). Privat-Repos brauchenGITLAB_TOKEN. - Datei im Repo (
file): ✅ Handbuch/Doku einfach nachfiles/<tool>/pushen und perstrategy: fileeinbinden (PDF wird zu Text, .md direkt). Alles versioniert. - PDF-Handbuecher via Link (
pdf): ✅ direkter PDF-Link oder Seite mit PDF-Links. - Public Links (
crawler/pdf/sitemap): ✅.