I denne leksjonen fokuserer vi på arbeidsflyt. Nærmere bestemt bruker vi de nyttige GitHub-servicekrokene til å automatisk oppdatere et prosjekt på vår personlige server når vi presser oppdateringer til en GitHub repo.
Vi trenger absolutt en slags prosjekt å leke med, ikke sant? La oss gjøre det akkurat nå. Ved hjelp av hvilket verktøy du helst foretrekker (jeg vil anbefale Structurer), opprett en ny katalog, kalt awesomeProject
, og legg til en index.html
fil. Du er velkommen til å fylle dette med noe gibberish markup for tiden.
Med vår testkatalog på plass, la oss lage vår første Git-forpliktelse.
Hvis du ikke er kjent med Git, anbefaler jeg at du først vurderer "Easy Version Control with Git."
Åpne kommandolinjen:
CD-sti / til / awesomeProject git init git add. git commit -m 'Først begå'
De som er kjent med Git, burde føle seg hjemme. Vi lager en Git repo, legger til alle filene i oppsamlingsområdet, og oppretter deretter vår første forpliktelse.
Det neste trinnet er å laste opp prosjektet vårt til GitHub. På den måten kan vi enkelt ringe en git pull
å laste ned dette prosjektet fra hvilken som helst datamaskin / server vi ønsker.
Igjen, hvis du ikke er kjent med GitHub, og ennå ikke har opprettet en konto, les Terminal, Git og GitHub for resten av oss.
Begynn med å opprette et nytt Git-depot.
Deretter må du fylle ut noen detaljer om prosjektet ditt. Det er enkelt:
Og til slutt, siden vi allerede jobber med et eksisterende Git repo, trenger vi bare å kjøre:
git remote add opprinnelse [email protected]: Din-Brukernavn / awesomeProject.git git push -u opprinnelses master
Med det ute av veien, vår awesomeProject
er nå tilgjengelig på GitHub. Det var lett!
Nå trenger vi absolutt en slags live forhåndsvisning for vårt prosjekt, ideelt lagret på vår egen server. Men dette kan være en smerte noen ganger. Skyv oppdateringene dine til GitHub, logg inn på serveren din, overfør den oppdaterte katalogen manuelt, osv. Tildelt, dette tar bare et øyeblikk eller så, men når du gjør flere endringer gjennom hele dagen, kan dette raskt bli en byrde.
Men ett steg om gangen. Vi takler dette dilemmaet i trinn 4. For nå, la oss ganske enkelt trekke inn vår Git repo til vår server. For å gjøre det, må vi SSH i.
Avhengig av verten din, vil SSH-legitimasjonen din variere litt. Søk på Google etter "din vertsnavn SSH", og du vil sikkert finne de nødvendige instruksjonene. Når du er klar, la oss flytte sammen:
Vi bruker min personlige server som et eksempel:
ssh [email protected]
Og med de to linjene er vi inne!
Neste, vi cd
til overordnet katalog over hvor vi ønsker å lagre awesomeProject
. For meg vil dette være: cd-domener / demo.jeffrey-way.com / html /
. Selvfølgelig, endre dette i henhold til din egen katalogstruktur.
La oss klone GitHub repo nå.
git klone [email protected]: Ditt-Brukernavn / awesomeProject.git
Gi den kommandoen noen få sekunder, men før du vet det, er katalogen nå tilgjengelig på serveren din, og i mitt tilfelle kan du se på: http://demo.jeffrey-way.com/awesomeProject
.
Det inneboende problemet på dette punktet er at det ikke er noen spesifikk forbindelse mellom vår GitHub repo og katalogen som er lagret på vår server - i hvert fall ikke en automatisk tilkobling. Hvis vi for eksempel oppdaterer kildefilene våre på vår lokale maskin, og deretter trykker du endringene til GitHub:
git add index.html git commit -m 'Lagt til bilde av dansende kylling' git push origin master
Disse endringene vil sikkert ikke bli reflektert på vår server. Selvfølgelig vil de ikke! For å gjøre det må vi - igjen - SSH inn i serveren vår, cd
til awesomeProject
katalog, og utfør en annen git pull
å ta med de oppdaterte kildefilene.
Ville det ikke vært bra hvis hver gang vi presset oppdateringer til GitHub, ble de nye kildefilene automatisk oppdatert på vår live forhåndsvisningsserver?
Som det viser seg, kan vi gjøre dette ganske enkelt med GitHub service kroker.
Du kan få tilgang til denne siden ved å trykke på "Admin" -knappen fra din GitHub-repo, og deretter klikke på "Service Kroker". Alternativet "Send mottatt URL" vil instruere GitHub om å sende en POST-forespørsel til den angitte siden hver gang du trykker på GitHub repo. Dette er akkurat det vi trenger!
"Vi treffer disse nettadressene med POST-forespørsler når du trykker på oss, og sender informasjon om pushen."
For å gjøre dette arbeidet må vi opprette en ny fil som håndterer prosessen med å utføre git pull
. Legg til en ny fil, kalt github.php
(eller alt du ønsker - helst mer vag), og legg til:
Så nå tenker du: "Jeff er gått gal. Du kan ikke sette et Bash-skript i en PHP-streng." Vi vil? ja du kan, når du skjønner at de ikke er enkle anførselstegn ovenfor, er de back-ticks.
Når du pakker en sekvens i back-ticks, i PHP, blir den behandlet som et Bash-skript. Faktisk er det identisk med å bruke bash_exec-funksjonen.
Lagre den filen, og last den opp til
awesomeProject
katalog på serveren din. Når du er ferdig, kopierer du url til filen og limer den inn i tekstboksen "Send mottatt URL". I mitt tilfelle ville nettadressen værehttp://demo.jeffrey-way.com/awesomeProject/github.php
.Med dette på plass, hver gang du
trykk
til GitHub repo, vil filen bli kalt, ogawesomeProject
katalogen på serveren din vil automatisk oppdateres uten at du trenger å flytte en finger. Ganske greit, ay?
Du kan også nyte: