Files

6.3 KiB
Raw Permalink Blame History

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 muss pip install ueber den Mirror schaffen. Falls 403/404: PIP_INDEX_URL (Repo-Name) in .gitlab-ci.yml anpassen.

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 Scope write_repository
  • (optional) GITLAB_TOKEN = Read-Token, falls gitlab_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 MoFr 817 Uhr), Target Branch main. Der knowledge-etl-Job laeuft nur bei schedule/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.yml anpassen) 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 ] main schuetzen: „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 CODEOWNERS die Platzhalter durch echte GitLab-Gruppen/Handles ersetzen (@einfachbahn-lab/wissensdatenbank-maintainer -> reale Gruppe).

    das auch

  • Hinweis: Der automatische Bot-Push auf main braucht dann eine Ausnahme (Token-User als „Allowed to push" zulassen) ODER der Bot pusht auf einen Branch knowledge-data (in .gitlab-ci.yml TARGET_BRANCH umstellen) + Auto-MR. -> braucht es das dann noch? ANTWORT: Ja. Da main „push = niemand" ist, wuerde der automatische ETL-Push scheitern. Einfachste Loesung: den GIT_PUSH_TOKEN-User unter „Allowed to push" fuer main zulassen. (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 auf main; 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:
  1. Person legt ein Issue mit der Vorlage an (Tool, Link(s), Scope, Ansprechpartner) und Label neues-wissen.
  2. 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.
  3. 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 (braucht glab eingeloggt + 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-wissen anlegen (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 ] pending freigeben: URL oder hash:<content_hash> in config/approvals.yaml unter approved: eintragen.

ETL-Bot - was genau noch zu tun ist

Der knowledge-etl-Job laeuft per Schedule (stuendlich MoFr 817 Uhr), baut das Wissen und pusht das Ergebnis zurueck. Dafuer:

  1. GIT_PUSH_TOKEN anlegen: Settings → Access Tokens → Project Access Token, Rolle Maintainer, Scope write_repository. Wert als CI/CD-Variable GIT_PUSH_TOKEN (Masked & Protected) speichern.
  2. Push auf main erlauben (weil main „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.yml TARGET_BRANCH: knowledge-data setzen; der Bot pusht dann auf einen Datenbranch (kein Push auf main noetig).
  3. Schedule angelegt (CI/CD → Schedules, Cron 0 8-17 * * 1-5, Target main). ✔

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 brauchen GITLAB_TOKEN.
  • Datei im Repo (file): Handbuch/Doku einfach nach files/<tool>/ pushen und per strategy: file einbinden (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): .