Die Pipeline realisiere ich mit GitLab CI. Geht aber genauso gut mit GitHub Actions o.ä. Vom Prinzip her ist das eigentlich relativ simpel. Die CI fährt einen Docker Container hoch und checkt für dich den aktuellen Stand des gewünschten branches aus (in dem Fall dann vermutlich main). Danach übernimmst du quasi und kannst beliebige Befehle in dem Container abfeuern. Was genau du da machst hängt dann sehr von deinem Setup ab. Bei uns sieht das in etwa so aus:
composer install --no-dev
npm install
im sitepackage
npm build
im sitepackage
Der letzte Step ist am Ende auch nur eine Sammlung von Skripten die verschiedene Nodejs Programme auf der Kommandozeile aufrufen, um JS und CSS zu bundlen, ggf. Optimierungen drüber laufen lass (autoprefixer bspw.) und am Ende in eine einzige minifizierte Datei schreiben die dann im sitepackage eingebunden wird. Das Minifizieren von CSS mache ich dabei mit cssnano und JS mit esbuild.
Wenn das durch ist, wird der ganze Krempel gezipt und dann per scp auf den Zielserver geschoben, per Konsole Datenbank Migrationen angestoßen und anschließend ebenfalls über Konsole der Cache geleert. Ist jetzt natürlich sehr stark vereinfacht, aber das Prinzip ist immer gleich.
Die CI brauchst du dafür auch nicht zwingend, bei meinem alten Arbeitgeber haben wir das einfach in Shell-Skripten abgebildet. Lohnt sich aber definitiv sich damit mal zu beschäftigen. Insbesondere, weil man so eine schöne Historie über alle Deployments hat und auch nicht jeder den Prozess verstehen muss. Wenn man neu in das Projekt kommt, reicht erstmal zu wissen, dass push auf main bedeutet der Code geht anschließend direkt live.
Wenn du in Sachen Deployment bisher noch nichts automatisiert hast, würde ich empfehlen erstmal mit einem lokalen Skript anzufangen das die Minifizierung übernimmt und das Ergebnis im Zweifel händisch zu deployen.
Den ganzen CI Krempel für TYPO3 habe ich auch erst letzte Woche aufgesetzt, weil wir lange keine Projekte mit TYPO hatten. Habe schon überlegt, ob es sich lohnt den ganzen Prozess mal in Schrift- oder Videoform zu dokumentieren und zu veröffentlichen. Lasst mich gerne wissen, wenn das Content ist an dem Interesse besteht. Bin mit bei solchen Themen immer sehr unsicher, weil ich oft das Gefühl habe, dass da irgendwie jeder anders ran geht. Wenn ich Projekte von anderen Agenturen sehe, gibt es da entweder schon einen Prozess der extrem opinionated ist, oder einfach gar nichts :-D