Czy mogę hostować moją witrynę za pomocą gitlab, tak jak Ty ze stronami github?

20

Chciałbym używać git do hostowania mojej witryny i chciałbym platformy, na którą mogę zalogować się online, aby z nią współpracować (coś takiego jak Github). Można by pomyśleć, w którym przypadku strony Github byłyby dla mnie idealną drogą, chociaż nie chcę używać stron Github. Chciałbym to wszystko hostować na moich własnych serwerach, tak jak w przypadku Github Enterprise (ale za darmo).

Znalazłem Gitlab i zastanawiałem się, czy mogę użyć Gitlab jak stron Github. Czy to możliwe?

Ben Watkins
źródło
Mówiąc podobnie do gitlab, masz na myśli przecenę GitLab i możliwość aktualizacji strony internetowej, po prostu naciskając repozytorium git?
phoops
Mam na myśli automatyczne aktualizowanie mojej witryny po wprowadzeniu zmiany w repozytorium gitlab, więc tak.
Ben Watkins
1
Strony GitHub po prostu używają Jekyll . Zainstaluj więc + serwer WWW, który obsługuje statyczne strony, i może wrzuć kilka haczyków do git dla automatycznych wdrożeń wypychanych treści, i gotowe.
Ajedi32
Hej @ Ajedi32 problem z tym podejściem polega na tym, że dla każdego nowego projektu masz repozytorium git i konfigurację serwera WWW. W przypadku stron GitHub jest to tylko kolejna gałąź, którą naciskasz.
fiorix
@fiorix Tak, jeśli chcesz zautomatyzować rzeczy do tego stopnia, prawdopodobnie potrzebujesz nieco bardziej złożonego rozwiązania. Nadal jednak wykonalne, wystarczy jakoś podłączyć się do systemu tworzenia projektu GitLab (choć nie wiem jak dokładnie, domyślam się, że najprostszym sposobem byłoby prawdopodobnie obejrzenie systemu plików, a może niektórych wywołań interfejsu API GitLab).
Ajedi32,

Odpowiedzi:

5

Nie jestem do końca pewien, o co pytasz. Mówisz, że chcesz hostować na własnym serwerze, ale twoje pytanie mówi, że chcesz hostować jak strony gitlab, które nie są twoim własnym serwerem.

W każdym razie może to pomoże

Tym się właśnie zajmuję

na lokalnym komputerze

mkdir folderforwebsite
cd folderforwebsite
git init
echo "hello world" > index.html
git add index.html
git commit -m "initial commit"

Teraz mam lokalnie repo. Skopiuj go na serwer

scp -r ../folderforwebsite [email protected]:/path/from/root/to/webfolder

Teraz mam go na zdalnym serwerze.

ssh [email protected] 'cd path/to/webfolder; git checkout -b live`

Teraz na stronie jest zarówno oddział główny, jak i oddział na żywo. Robię to, ponieważ AFAICT nie możesz wypychać do bieżącego oddziału. Mamy teraz gałąź „na żywo”, która jest obecna na pilocie, i gałąź „master”, która nie jest

Na koniec dodaj pilot do mojego lokalnego repozytorium

git remote add web ssh://[email protected]/path/from/root/to/webfolder

Teraz za każdym razem, gdy chcę zaktualizować witrynę, sprawdzam rzeczy w lokalnym oddziale głównym, a następnie uruchamiam ten skrypt

#!/bin/sh
set -e
set -v
git push web master
ssh [email protected] git merge --ff-only master

git pushPcha moje zmiany w długoterminowych oddziału na serwerze internetowym. Te sshnastępnie loguje się do serwera WWW i fast-forward zmian „master” do obecnego oddziału. W tym przypadku oddział „na żywo”.

--ff-only mówi o niepowodzeniu, jeśli na serwerze pojawią się zmiany.

Jeśli są zmiany na serwerze, mogę je przeciągnąć do mojego lokalnego wzorca

git pull web live

Na więcej rzeczy. Zanim to zrobię, konfiguruję klucze SSH na zdalnym serwerze, więc nie muszę wpisywać żadnych haseł

Nie ma to absolutnie żadnego związku z githubem lub gitlabem. Mogę też wprowadzić tam moje zmiany, ale nie są one powiązane.

gman
źródło
2

Po krótkim przeszukaniu różnych pytań w Google znalazłem sposób. Może nie jest to najlepszy sposób i może być zbyt skomplikowany, ale powinien działać i to jest najważniejsze. Jeśli jednak znasz lepszy sposób lub możesz go znaleźć, daj mi znać!

Odkryłem, że możesz wdrożyć swój kod na serwerach za pomocą haków Git. Wszystko, co musisz zrobić, to SSH na serwerze, utworzyć repozytorium git, a następnie ustawić hak, aby wypychać zatwierdzenia do tego repozytorium. Pozwoli ci to na przesłanie swoich zatwierdzeń na twoje serwery, ale w tym momencie nie ma to nic wspólnego z gitlab.

Następnym krokiem jest dodanie adresu push dla gitlab do tego samego pilota. W ten sposób będziesz za każdym razem naciskać zarówno na gitlab, jak i samą stronę. W rezultacie zarówno repozytorium gitlab, jak i rzeczywista witryna będą zsynchronizowane. Chociaż jest to hack i zdecydowanie nie jest skuteczny.

Z tego posta na blogu dowiedziałem się, jak wdrożyć kod na serwerach za pomocą git: http://sebduggan.com/blog/deploy-your-website-changes-using-git/

Odkryłem, że możesz dodać dwa adresy URL push do swoich pilotów w git z tego pytania na stackoverflow: /programming/14290113/git-pushing-code-to-two-remotes

Jak powiedziałem, jeśli możesz znaleźć lepszy sposób, daj mi znać. To zadziała, ale oznacza posiadanie dwóch wersji tego samego kodu. Oczywiście jest to bardzo nieuporządkowane i powoduje duże marnowanie pamięci serwera.

Ben Watkins
źródło