The Perfect Workflow, met Git, GitHub en SSH

In deze les concentreren we ons op de workflow. Meer specifiek gebruiken we de behulpzame GitHub-servicehaken om een ​​project automatisch op onze persoonlijke server bij te werken wanneer we updates naar een GitHub-repo pushen.


Liever een video-zelfstudie?


Stap 1 - Maak een Git Repo

We hebben zeker een soort project nodig om mee te spelen, toch? Laten we dat nu doen. Gebruik altijd die tool die je wilt (ik zou Structurer aanbevelen), maak een nieuwe directory aan, genaamd awesomeProject, en voeg een toe index.html het dossier. Voel je vrij om dit te vullen met wat onzinnige markup voor het moment.

Met onze testdirectory op zijn plaats, laten we onze eerste Git commit maken.

Als je Git niet kent, raad ik je aan eerst "Easy Version Control with Git" door te nemen.

Open de opdrachtregel:

 cd path / to / awesomeProject git init git add. git commit -m 'Eerste commit'

Degenen die bekend zijn met Git, moeten zich meteen thuis voelen. We maken een Git-repo, voegen alle bestanden toe aan het verzamelgebied en maken vervolgens onze eerste commit.


Stap 2 - Uploaden naar GitHub

De volgende stap is om ons project te uploaden naar GitHub. Op die manier kunnen we gemakkelijk een git pull om dit project te downloaden vanaf elke gewenste computer / server.

Nogmaals, als u niet bekend bent met GitHub en nog geen account hebt aangemaakt, lees dan Terminal, Git en GitHub voor de rest van ons.

Begin met het maken van een nieuwe Git-repository.

Vervolgens moet u wat details over uw project invullen. Dat is simpel:

En tot slot, omdat we al werken met een bestaande Git repo, hoeven we alleen maar te draaien:

 git remote add origin [email protected]: Your-Username / awesomeProject.git git push -u origin master

Met dat uit de weg, onze awesomeProject is nu beschikbaar op GitHub. Dat was gemakkelijk!


Stap 3 - SSH

Nu hebben we zeker een live preview nodig voor ons project, idealiter opgeslagen op onze eigen server. Maar dit kan soms een pijn zijn. Duw uw updates naar GitHub, meld u aan bij uw server, breng handmatig de bijgewerkte directory over, enz. Toegegeven, dit duurt slechts een moment of zo, maar wanneer u meerdere wijzigingen door de dag heen maakt, kan dit snel een last worden.

Maar één stap tegelijk We zullen dit dilemma in stap 4 aanpakken. Laten we nu onze Git-repo gewoon naar onze server slepen. Om dit te doen, moeten we SSH invoeren.

Afhankelijk van uw host, zullen uw SSH-inloggegevens enigszins variëren. Zoek op Google naar "uw-hostnaam SSH," en u zult zeker de nodige instructies vinden. Als je klaar bent, gaan we verder:

We gebruiken mijn persoonlijke server als een voorbeeld:

 ssh [email protected] 

En met die twee lijnen zijn we in!

Vervolgens, wij CD naar de bovenliggende directory van waar we willen opslaan awesomeProject. Voor mij zal dit zijn: cd-domeinen / demo.jeffrey-way.com / html /. Wijzig dit natuurlijk op basis van uw eigen directorystructuur.

Git Clone

Laten we de GitHub-repo nu klonen.

 git clone [email protected]: Your-User-Name / awesomeProject.git

Geef die opdracht een paar seconden, maar voordat je het weet, is die map nu beschikbaar op je server en kon ik in mijn geval worden bekeken op: http://demo.jeffrey-way.com/awesomeProject.


Stap 4 - Een verbinding maken

Het inherente probleem op dit punt is dat er geen specifieke verbinding is tussen onze GitHub repo en de directory die op onze server is opgeslagen - althans geen geautomatiseerde verbinding. Als we bijvoorbeeld onze bronbestanden op onze lokale computer bijwerken en vervolgens de wijzigingen naar GitHub verplaatsen:

 git add index.html git commit -m 'Foto toegevoegd van dance chicken' git push origin master

Deze veranderingen zullen zeker niet worden weerspiegeld op onze server. Natuurlijk zullen ze dat niet! Om dit te doen, moeten we - nogmaals - SSH naar onze server, CD naar de awesomeProject map en voer een andere uit git pull om de bijgewerkte bronbestanden in te voeren.

Zou het niet geweldig zijn als, elke keer dat we updates naar GitHub pushten, die nieuwe bronbestanden automatisch werden bijgewerkt op onze live preview-server?

Het blijkt dat we dit vrij eenvoudig kunnen doen met GitHub-servicehaken.

U kunt deze pagina openen door vanuit uw GitHub-repo op de knop 'Beheerder' te klikken en vervolgens op 'Service Hooks' te klikken. De optie "Post-Receive URL" geeft GitHub de opdracht om elke keer dat je naar je GitHub-repo push een POST-verzoek naar de opgegeven pagina te sturen. Dit is precies wat we nodig hebben!

"We zullen deze URL's raken met POST-verzoeken wanneer u ons pusht en informatie doorgeeft over de push."

Om dit te laten werken, moeten we nog een bestand maken dat het proces van het uitvoeren van de git pull. Voeg een nieuw bestand toe, genaamd github.php (of wat je maar wilt - bij voorkeur vager) en voeg toe:

  

Dus nu denk je: "Jeff is gek geworden, je kunt een Bash-script niet in een PHP-string plaatsen." Goed? Ja, dat kan, als je je eenmaal realiseert dat dit geen enkele aanhalingstekens hierboven zijn, zijn ze back-ticks.

Wanneer u een reeks in back-ticks verpakt, wordt deze in PHP behandeld als een Bash-script. In feite is het identiek aan het gebruik van de bash_exec-functie.

Sla dat bestand op en upload het naar de awesomeProject map op uw server. Wanneer u klaar bent, kopieert u de URL naar dat bestand en plakt u dit in het tekstvak "Post-Receive URL". In mijn geval zou de URL zijn http://demo.jeffrey-way.com/awesomeProject/github.php.

Met dit op zijn plaats, elke keer dat jij Duwen naar uw GitHub repo, dat bestand wordt gebeld, en de awesomeProject map op uw server wordt automatisch bijgewerkt, zonder dat u een vinger hoeft te verplaatsen. Behoorlijk handig, ay?


You Also Might Enjoy:

  • Verkrijg de Hang of GitHub
  • Terminal, Git en GitHub voor de rest van ons
  • Eenvoudige versiecontrole met Git
  • Gaat goed met Git - eBook