[GIT] Automatisch pullen naar de webserver

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • Elja
  • Registratie: September 2004
  • Laatst online: 07-05 17:29
Sinds kort ben ik GIT gaan gebruiken voor versiebeheer en zodat ik ook andere developers aan mijn project kan laten werken. Om de boel te stroomlijnen zou ik graag de laatste push naar Bitbucket ook automatische naar onze webserver pullen (naar de testserver).

Ik heb dit op zich al werkend, maar het werkt nu met een script op de Windows Server die om de 5 minuten een GIT pull uitvoert. Ik vind dat niet zo'n mooie oplossing. Liever zou ik de push naar Bitbucket gebruiken als aanleiding om een pull uit te voeren. Dan staat het script niet onnodig requests uit te voeren en hoef je als developer ook geen 5 minuten te wachten na een push.

Bij Bitbucket kan ik na een push automatische een webhook aanroepen. Dat zou in theorie kunnen werken, ware het niet dat IIS blijkbaar erg goed afgesloten is en ik het niet voor elkaar krijg om een PHP, Classic ASP of .NET pagina de GIT commando's uit te laten voeren.

Nu ben ik vast niet de enige die dit zo wil laten werken, dus wellicht zie ik een eenvoudigere oplossing over het hoofd.

Mijn project is gebouwd in Classic ASP, dus er hoeft niks gebuild te worden. Puur het overzetten van de gewijzigde bestanden is voldoende.

Heeft iemand een goede suggestie hoe ik dit aan de praat kan krijgen?
Wellicht is er een GIT client die via een webhook aan te roepen is, ofzo?

Elja

Photofacts; weblog over fotografie..

Beste antwoord (via Elja op 21-12-2023 23:49)


  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Bitbucket pipelines is het echte antwoord, kan je voor de zekerheid ook nog wat CI eerst doen.
Je zou ook een webhook in je app kunnen maken: Zodra endpoint /eljapush geraakt wordt, schedule de git pull en return 200 OK. ;)

Saai antwoord: Als met zo’n eenvoudige deploy je 5 minuten cron pull werkt.. KISS en je hebt het al..

{signature}

Alle reacties


Acties:
  • +3 Henk 'm!

  • JoostdeGraaf
  • Registratie: December 2006
  • Laatst online: 16:34
Een pipeline bouwen met bijvoorbeeld Jenkins. De webhook triggerd dan en build job in Jenkins.

Acties:
  • 0 Henk 'm!

  • erwn
  • Registratie: November 2020
  • Niet online
Wat doet je webserver? Dat is dus geen bouw- of teststraat?
JoostdeGraaf schreef op dinsdag 19 december 2023 @ 23:25:
Een pipeline bouwen met bijvoorbeeld Jenkins. De webhook triggerd dan en build job in Jenkins.
Iets als dit is hier namelijk op gericht. Jenkins kan ook zelf de benodigde webhooks inrichten.

Als workaround zou ik bijna geneigd zijn om in IIS via een webhook de laatste commit hash (of een timestamp) naar een bestand weg te schrijven en dan in je huidige script de vorige bekende waarde met dat bestand te vergelijken. Als die gewijzigd is, ga je verder met een pull etc. Kan de frequentie van je script alsnog omhoog.

Acties:
  • 0 Henk 'm!

  • Kettrick
  • Registratie: Augustus 2000
  • Laatst online: 15:52

Kettrick

Rantmeister!

Hiervoor kan je bitbucket pipelines gebruiken, heb je geen git hooks of externe tools voor nodig.

https://bitbucket.org/product/features/pipelines

Acties:
  • 0 Henk 'm!

  • Merethil
  • Registratie: December 2008
  • Laatst online: 12:33
Kettrick schreef op woensdag 20 december 2023 @ 06:47:
Hiervoor kan je bitbucket pipelines gebruiken, heb je geen git hooks of externe tools voor nodig.

https://bitbucket.org/product/features/pipelines
Dat kan inderdaad als je server ook daadwerkelijk veilig van buitenaf bereikbaar is voor het afleveren van de nieuwe code (ssh oid). Vanuit de post van OP lijkt dat niet zo te zijn waardoor er voor een pull gekozen wordt.

Acties:
  • Beste antwoord
  • +1 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Bitbucket pipelines is het echte antwoord, kan je voor de zekerheid ook nog wat CI eerst doen.
Je zou ook een webhook in je app kunnen maken: Zodra endpoint /eljapush geraakt wordt, schedule de git pull en return 200 OK. ;)

Saai antwoord: Als met zo’n eenvoudige deploy je 5 minuten cron pull werkt.. KISS en je hebt het al..

{signature}


Acties:
  • 0 Henk 'm!

  • Elja
  • Registratie: September 2004
  • Laatst online: 07-05 17:29
Voutloos schreef op woensdag 20 december 2023 @ 07:49:
Bitbucket pipelines is het echte antwoord, kan je voor de zekerheid ook nog wat CI eerst doen.
Je zou ook een webhook in je app kunnen maken: Zodra endpoint /eljapush geraakt wordt, schedule de git pull en return 200 OK. ;)

Saai antwoord: Als met zo’n eenvoudige deploy je 5 minuten cron pull werkt.. KISS en je hebt het al..
Bedankt voor alle reacties!

Ik heb zitten spelen met de pipelines van Bitbucket, maar daarbij zag ik alleen een FTP optie om de bestanden naar mijn server te krijgen. En die blijkt telkens de complete upload te doen, niet alleen de gewijzigde bestanden. Niet echt praktisch, want het was ook nog eens heel traag.

Jenkins heb ik op jullie advies nu ook bekeken. Ziet er goed uit, maar voelt voor nu wel als behoorlijke overkill voor wat ik nodig heb.

Ik geloof dat ik inderdaad maar terug ga vallen op de 5 minuten Windows Task die het goed doet. Ondanks mijn ergernis daarover. :)

Mocht iemand nog andere suggesties hebben, ik hoor het graag.

Elja

Photofacts; weblog over fotografie..


Acties:
  • +1 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Voutloos schreef op woensdag 20 december 2023 @ 07:49:
Saai antwoord: Als met zo’n eenvoudige deploy je 5 minuten cron pull werkt.. KISS en je hebt het al..
Lijkt mij ook veruit de simpelste manier. Gewoon pushen naar je main branch als t naar je server moet en binnen max 5 minuten draait het.

Acties:
  • 0 Henk 'm!

  • Piemol
  • Registratie: Januari 2006
  • Laatst online: 11:37
Je kunt ook vaker dan elke 5 minuten doen: https://superuser.com/que...run-once-every-10-seconds
Beste is dan wel dat je een soort van .lock file maakt als check op een nog draaiend script/pull en evt. controleert op hashes.
ik heb ook ergens gelezen dat als je handmatig de waarde
code:
1
5 minutes
aanpast naar
code:
1
1 minutes
het niet meer draait na een restart van de server, dus als je die route gebruikt, test dat even.
Pagina: 1