Deploy med Git

, , ,

Ett smart sätt att rulla ut kod till exempelvis en staging-server är att använda Git för detta. Så här gör du.

På servern

I följande exempel utgår jag ifrån att Document Root på staging-servern är

/var/www/stage.minsajt.se/htdocs

Skapa ett bare repository på staging-servern, förslagsvis i /var/www/stage.minsajt.se men det går bra att ha den på annan plats.

server$ mkdir stage.minsajt.se && cd /var/www/stage.minsajt.se/git-repo.git
server$ git init --bare
Initialized empty Git repository in /var/www/stage.minsajt.se/git-repo.git

 

I repositoryt finns en katalog som heter hooks, och i denna katalog skapar du (eller editerar om den redan finns) en fil med namn post-receive, den här filen kommer att exekveras varje gång en push är utförd.

Skriv in följande

#!/bin/sh
git --work-tree=/var/www/stage.minsajt.se/htdocs --git-dir=/var/www/stage.minsajt.se/git-repo.git checkout -f

 

På klienten

På din egen dator lägger du till stage-servern som en remote:

dev$ git remote add stage ssh://user@minserver.se/var/www/stage.minsajt.se/git-repo.git

 

Nu kan du genom att exekvera git push stage master föra över din nya kod till stage-servern.

dev$git push stage master
Counting objects: 7, done.Delta compression using up to 4 threads.Compressing objects: 100% (7/7), done.Writing objects: 100% (7/7), 10.56 KiB, done.Total 7 (delta 0), reused 0 (delta 0)To ssh://user@mydomain.com/var/repo/site.git* [new branch] master -> master

Du kan så klart lägga till flera remotes, om du till exempel vill rulla ut kod direkt till din produktions-server.

 
[fbcomments]