CI: Game-API per Bind-Mount deployen + Selbst-Neustart der API
Build & Deploy / deploy (push) Successful in 18s
Build & Deploy / deploy (push) Successful in 18s
- deploy.yml kopiert server.js auf den VPS; API beobachtet mtime und startet bei Aenderung selbst neu (Restart-Policy)
This commit is contained in:
@@ -31,6 +31,11 @@ jobs:
|
|||||||
rm -rf /deploy/web/dist/*
|
rm -rf /deploy/web/dist/*
|
||||||
cp -a app/dist/. /deploy/web/dist/
|
cp -a app/dist/. /deploy/web/dist/
|
||||||
|
|
||||||
|
# Game-API laeuft per Bind-Mount (compose: ./game/api/server.js:/app/server.js).
|
||||||
|
# Die API beobachtet ihre eigene Datei und startet sich bei Aenderung selbst neu.
|
||||||
|
- name: Game-API-Code auf den VPS kopieren
|
||||||
|
run: cp server/game/api/server.js /deploy/game/api/server.js
|
||||||
|
|
||||||
- name: Health-Check
|
- name: Health-Check
|
||||||
run: |
|
run: |
|
||||||
apk add --no-cache curl
|
apk add --no-cache curl
|
||||||
|
|||||||
@@ -398,4 +398,19 @@ setInterval(() => {
|
|||||||
speichern();
|
speichern();
|
||||||
}, 10 * 60 * 1000).unref();
|
}, 10 * 60 * 1000).unref();
|
||||||
|
|
||||||
|
/* Selbst-Deploy: Der CI-Job ersetzt server.js im Bind-Mount. Sobald sich die
|
||||||
|
* Datei aendert, beendet sich der Prozess sauber – die Restart-Policy des
|
||||||
|
* Containers (unless-stopped) startet ihn mit dem neuen Code neu. */
|
||||||
|
const eigeneMtime = fs.statSync(__filename).mtimeMs;
|
||||||
|
setInterval(() => {
|
||||||
|
try {
|
||||||
|
if (fs.statSync(__filename).mtimeMs !== eigeneMtime) {
|
||||||
|
console.log('server.js wurde aktualisiert – Neustart für neuen Code');
|
||||||
|
process.exit(0);
|
||||||
|
}
|
||||||
|
} catch {
|
||||||
|
/* Datei kurzzeitig nicht lesbar – beim naechsten Intervall pruefen */
|
||||||
|
}
|
||||||
|
}, 5000).unref();
|
||||||
|
|
||||||
server.listen(PORT, () => console.log(`1bis8-game-api lauscht auf :${PORT} (Räume: ${Object.keys(rooms).length})`));
|
server.listen(PORT, () => console.log(`1bis8-game-api lauscht auf :${PORT} (Räume: ${Object.keys(rooms).length})`));
|
||||||
|
|||||||
Reference in New Issue
Block a user