I den här lektionen kommer vi att fokusera på arbetsflödet. Mer specifikt använder vi de hjälpsamma GitHub-servicekroken för att automatiskt uppdatera ett projekt på vår personliga server när vi trycker uppdateringar till en GitHub repo.
Vi behöver verkligen ett slags projekt att leka med, eller hur? Låt oss göra det just nu. Använda vilket verktyg du helst föredrar (jag rekommenderar Structurer), skapa en ny katalog, kallad awesomeProject
, och lägg till en index.html
fil. Känn fria att fylla detta med en viss gibberish markup för tillfället.
Med vår testkatalog på plats, låt oss skapa vår första Git-commit.
Om du inte är bekant med Git rekommenderar jag starkt att du först granskar "Easy Version Control with Git."
Öppna kommandoraden:
cd-sökväg / till / awesomeProject git init git add. git commit -m "Första commit"
De som känner till Git borde känna sig riktigt hemma. Vi skapar en Git-repo, lägger till alla filer i spelningsområdet och skapar sedan vår första commit.
Nästa steg är att ladda upp vårt projekt till GitHub. På det sättet kan vi enkelt ringa en git pull
att ladda ner det här projektet från vilken dator / server som helst vi önskar.
Återigen, om du inte är bekant med GitHub, och ännu inte har skapat ett konto, läs Terminal, Git och GitHub för resten av oss.
Börja med att skapa ett nytt Git-arkiv.
Därefter måste du fylla i några detaljer om ditt projekt. Det är enkelt:
Och slutligen, eftersom vi redan arbetar med en befintlig Git repo, behöver vi bara springa:
git remote add ursprung [email protected]: Din-Användarnamn / awesomeProject.git git push -u ursprungsmästare
Med det ur vägen, vår awesomeProject
är nu tillgänglig på GitHub. Det var enkelt!
Nu behöver vi verkligen ett slags live förhandsgranskning för vårt projekt, idealiskt lagrat på vår egen server. Men det kan vara en smärta ibland. Tryck på dina uppdateringar till GitHub, logga in på din server, överföra den uppdaterade katalogen, etc. Överfört, det här tar bara ett ögonblick eller så, men när du gör flera ändringar genom hela dagen kan det snabbt bli en börda.
Men ett steg åt gången. Vi tar itu med detta dilemma i steg 4. För nu, låt oss helt enkelt dra in vår Git repo till vår server. För att göra det måste vi SSH in.
Beroende på din värd kommer dina SSH-uppgifter att variera något. Sök Google för "ditt värdnamn SSH", och du hittar säkert de nödvändiga instruktionerna. När du är redo, låt oss gå vidare:
Vi använder min personliga server som ett exempel:
ssh [email protected]
Och med de två linjerna är vi inne!
Nästa, vi CD
till moderkatalogen där vi vill lagra awesomeProject
. För mig är det här: cd domäner / demo.jeffrey-way.com / html /
. Naturligtvis, ändra detta enligt din egen katalogstruktur.
Låt oss klona GitHub repo nu.
git klon [email protected]: Ditt användarnamn / awesomeProject.git
Ge det här kommandot några sekunder, men innan du vet det, är den katalogen nu tillgänglig på din server och kan i mitt fall ses på: http://demo.jeffrey-way.com/awesomeProject
.
Det inneboende problemet vid denna punkt är att det inte finns någon specifik koppling mellan vår GitHub repo och katalogen som lagras på vår server - åtminstone inte en automatisk anslutning. Om vi till exempel uppdaterar våra källfiler på vår lokala dator, och sedan trycker du på ändringarna till GitHub:
git lägg till index.html git commit -m 'Tillagt foto av dans kyckling' git push origin master
Dessa ändringar kommer säkert inte att återspeglas på vår server. Självklart kommer de inte! För att göra det måste vi - återigen - SSH till vår server, CD
till awesomeProject
katalog och utföra en annan git pull
att ta med de uppdaterade källfilerna.
Skulle det inte vara bra om vi varje gång vi skjuter upp uppdateringar till GitHub uppdaterades de nya källfilerna automatiskt på vår live preview server?
Som det visar sig kan vi göra det ganska enkelt med GitHub servicehakar.
Du kan komma åt den här sidan genom att trycka på "Admin" -knappen från din GitHub repo och sedan klicka på "Service Hooks". Alternativet "Post-Receive URL" instruerar GitHub att skicka en POST-förfrågan till den angivna sidan varje gång du trycker på ditt GitHub-repo. Det är precis vad vi behöver!
"Vi slår dessa URL-adresser med POST-förfrågningar när du trycker på oss och skickar information om pushen."
För att göra detta arbete måste vi skapa en ny fil som hanterar processen att utföra git pull
. Lägg till en ny fil, kallad github.php
(eller vad du vill - helst mer vagt) och lägg till:
Så nu tänker du: "Jeff har varit galen. Du kan inte lägga ett Bash-skript i en PHP-sträng." Väl? ja du kan, när du inser att de inte är enkla citat ovan, är de back-ticks.
När du sätter ihop en sekvens i back-ticks, i PHP, kommer den att behandlas som ett Bash-skript. Det är faktiskt identiskt med att använda bash_exec-funktionen.
Spara den filen och ladda upp den till
awesomeProject
katalog på din server. När du är klar kopierar du url till den filen och klistrar in den i textrutan "Skicka mottagningsadress". I mitt fall skulle url varahttp://demo.jeffrey-way.com/awesomeProject/github.php
.Med detta på plats, varje gång du
tryck
till din GitHub repo, kommer den filen att ringas, ochawesomeProject
katalogen på din server kommer automatiskt att uppdateras, utan att du behöver flytta ett finger. Ganska smutsigt, ay?
Du kan också njuta av: