swisstopo / swissgeol-viewer-app

swissgeol.ch gives you insight in geoscientific data - above and below the surface
BSD 3-Clause "New" or "Revised" License
33 stars 11 forks source link

Prüfung bestehende Shell-Skripte #1355

Closed nOester closed 6 days ago

nOester commented 1 month ago

Beschreibung Der bestehende Deploy-Prozess basiert auf sh-Skripten. Es soll geprüft werden, wie diese sh-Skripte in das CI/CD-Gesamtkonzept passen. Das zukünftige CI/CD soll auf github-Actions basieren, so wie es auch bei den Applikationen assets und boreholes umgesetzt wurde. Ziel ist es möglichst bald einen Deploy durchführen zu können, um bestehende Bugs zu beheben.

ToDos

Acceptance Criteria

vej-ananas commented 3 weeks ago

Blockiert bis Meeting mit Cloud Team

daniel-va commented 1 week ago

@nOester Folgende Shell-Skripte sind noch nicht mit GitHub Actions ersetzt worden.

scripts/deploy-to-env.sh

Ändert die aktive Version der API in einer bestimmten Umgebung (d.h. dev, int oder prod). Dafür wird ein Commit in das ArgoCD GitLab Repository gepushed.

Empfehlung Ersetzen mit GitHub Action, die die Helm Skripte innerhalb des Viewer-Repositories in GitHub verwaltet.

scripts/deploy-viewer.sh

Ändert die aktive Version der API und UI auf einer bestimmten Umgebung, unter anderem mithilfe von scripts/deploy-to-env.sh

Empfehlung

  1. Ersetzen mit GitHub Action, die die Helm Skripte innerhalb des Viewer-Repositories in GitHub verwaltet.
  2. UI in Kubernetes-Deployment verschieben und analog zu API verwalten.

scripts/fetch_earthquakes.sh

Lädt eine Liste von kürzlichen Erdbeben von http://arclink.ethz.ch/ und lädt diese in den ngmpub-download-bgdi-ch S3 Bucket. Das Skript wird planmässig jeden Tag um 10:00 über eine GitHub Action ausgelöst, diese ist aber momentan deaktiviert.

Empfehlung Mir ist derzeit noch unklar, wo die Erbebeben-Daten eingesetzt werden. Im momentanen Zustand würde ich das Skript so belassen, und die GitHub Action wieder aktivieren. Falls die Daten in der Produktion zum Einsatz kommen, sollten wir uns Gedanken machen, ob wir das Skript nicht lieber über einen Kubernetes Job ausführen möchten.

scripts/get_api_logs.sh

Liest die API-Logs einer bestimmten Umgebung mithilfe von AWS CloudWatch und schreibt sie aus.

Empfehlung Dies scheint mir ein pures Monitoring Tool zu sein, und kann gelöscht werden. Wir haben direkten Zugriff auf den K8s Cluster, und können die Logs darüber auslesen. Es müsste noch abgeklärt werden, ob für die Übertragung des API Logs zu CloudWatch noch zusätzliche Ressourcen aufgebaut wurden.

scripts/get_github_name.sh

Einfaches Helfer-Skript das den eindeutigen Namen der lokalen Git Reference innerhalb einer GitHub Action ausgibt.

Empfehlung Das Skript wurde wahrscheinlich in einer alten GitHub Action verwendet. Stand heute scheint es nirgendwo in Verwendung zu sein, und kann entfernt werden.

scripts/github_add_link_for_reviews.sh

Skript, dass GitHub Pull Requests mit einem Link auf das Review Deployment des Viewers ergänzt.

Empfehlung Dieses Skript wurde in einer alten GitHub Action eingesetzt, um Pull Requests mit einem Link auf den Review Viewer zu ergänzen. Diese Funktion haben wir vorerst deaktiviert, da uns die Funktionsweise, sowie der Speicherort des Review Viewers noch nicht klar ist. Für den moment würde ich das Skript belassen, wir müssen die Thematik des Review Viewers aber mal im Team behandeln und entscheiden, wie wir dazu stehen.

scripts/release_api.sh

Baut eine neue, lokale Version des API Docker Images und veröffentlicht diese.

Empfehlung Dieses Skript wurde bereits durch eine GitHub Action abgelöst und kann entfernt werden.

scripts/release_api.sh

Baut eine neue, lokale Version des API Docker Images und veröffentlicht diese.

Empfehlung Dieses Skript wurde bereits durch eine GitHub Action abgelöst und kann entfernt werden.

scripts/release_ui.sh

Kompiliert die UI und lädt diese auf den S3-Bucket einer bestimmten Umgebung.

Empfehlung UI in Kubernetes-Deployment verschieben und analog zu API verwalten.

daniel-va commented 1 week ago

Meine Empfehlung allgemein:

nOester commented 1 week ago

@daniel-va

Meine Empfehlung allgemein:

  • UI in ein Kubernetes Deployment umwandeln --> ok
  • Helm Charts der API aus GitLab in das Viewer Repo übernehmen + mit Assets abgleichen --> ok
  • Kubernetes Deployment der Helm Charts mithilfe von GitHub Actions verwalten --> Ich (@nOester ) werde mit dem Cloud-Team eine Termin in der kommenden Woche (ab 25.11.) verabreden.