Server - auto git pull - webhook

Crys

Lt. Commander
Registriert
Apr. 2009
Beiträge
1.634
Hallo miteinander,

Was ich möchte:
  • Jedes Mal, wenn eine Änderung an meinem Repo erfolgt, soll dieses automatisch heruntergeladen werden.

Wie mache ich das?
  • Aktuell manuell per git pull https://usr:pwd@url/usr/repo branch. Funktioniert, aber eben manuell.
  • Automatisch per Webhook? Nur ein Branch, eines Repos.
Ein Webhook-Server [1, 2] ist installiert, nur verstehe ich nicht, wie ich diesen ausführen soll.
Der Zugriff erfolgt nur per https (ssh Port ist blockiert).
Ich habe verschiedene Anleitungen bemüht [3], aber gefühlt wird immer sehr viel ausgeführt und bei mir wird nichts ge-pulled.
Die Abfrage, ob etwas commited wurde, erfolgt über die hooks.json!? Das pull über die shell.sh!?

JSON:
[
  {
    "id": "Crys-Webhook",
    "execute-command": "/home/me/bash/git-pull.sh",
    "command-working-directory": "/home/me/git/repo/",
  }
]
Bash:
#!/usr/bin/env sh

git pull https://usr:pwd@url/usr/repo mybranch
Der pull Befehl geht. Das Repo ist in /home/me/git/repo/.
Was passt hier nicht? Was fehlt?

Existiert eine einfachere Möglichkeit, da ja eh alle Daten auf einem Hardware-Server gespeichert sind?

Daten: Ubuntu 22, Gitea.

Vielen Dank!


[1] https://github.com/adnanh/webhook
[2]https://github.com/TheCatLady/docker-webhook
[3]https://by.arran.nz/posts/code/webhook-deploy/
 
Also mal für [1] https://github.com/adnanh/webhook

Wenn du das mit deiner “hooks.json” startest erzeugst du auf deinem Client einen Webserver der unter Port 9000 erreichbar ist.

Wenn du den Webservice nun mittels GET oder POST unter http://localhost:9000/hooks/Crys-Webhook aufrufst, sollte dein Script loslaufen. Das kannst du ja einfach mal auf deinem Client mittels Browser oder Curl Ausprobieren. Wenn das funktioniert, musst du Gitea nur noch sagen, dass nach einem Commit dein Webservice aufgerufen wird, hier an einem umfangreichen Beispiel erklärt: https://nixing.mx/posts/configure-gitea-webhooks.html.

Alternativ könntest du auch mal Jenkins oder Travis anschauen und direkt ein CI nutzen …
 
  • Gefällt mir
Reaktionen: Crys und madmax2010
blablub1212 schrieb:
Alternativ könntest du auch mal Jenkins oder Travis anschauen und direkt ein CI nutzen …
ci/cd tools mit gitea integration sind hier aufgelistet und oft auch gut dokumentiert.
empfehlung fuer jaypore.
 
  • Gefällt mir
Reaktionen: Crys
Wenn Du Linux nutzt, könntest Du es auch stündlich/täglich über Crontab machen.

Dann würdest Du auch nicht viel verpassen.
 
  • Gefällt mir
Reaktionen: Crys
Vielen Dank euch allen!

@blablub1212
Das ist es, es muss von Gitea getriggert werden! Funktioniert noch nicht, aber ich schaue mal ...

Mit Jenkins musste ich schon mal arbeiten, aber habe dies noch nie konfiguriert. Scheint mir erst mal aber zu groß, für den kleinen pull. Bisher habe ich nichts weiter vor.

@madmax2010
Hier? Wo? :D
Mit jaypore kann ich oder google nichts (vernünftiges) anfangen.

@IBISXI
Wegen so einer Antwort bin ich hier! Ernsthaft, dass ich darauf nicht selbst gekommen bin. Der pull braucht 0,105s Ausführungszeit, das kann auch alle per Minuten laufen. So einfach, aber doch erfüllt das alles!
 
  • Gefällt mir
Reaktionen: IBISXI
Zurück
Oben