Kann ich meine Website über gitlab hosten, wie Sie es mit github-Seiten können?

20

Ich würde gerne Git als Host für meine Website verwenden und würde eine Plattform lieben, auf der ich mich online einloggen kann, um mitzumachen (so etwas wie Github). Sie würden in diesem Fall denken, dass Github-Seiten die perfekte Route für mich sind, obwohl ich Github-Seiten nicht verwenden möchte. Ich möchte das alles auf meinen eigenen Servern hosten, wie Sie es bei Github Enterprise tun (aber kostenlos).

Ich habe Gitlab gefunden und mich gefragt, ob ich Gitlab-ähnliche Github-Seiten verwenden kann. Ist es möglich?

Ben Watkins
quelle
Mit gitlab-like meinen Sie den Abschlag von GitLab und die Fähigkeit, eine Website zu aktualisieren, indem Sie einfach auf ein Git-Repo klicken?
Phoops
Ich meine, meine Website wird automatisch aktualisiert, wenn ich eine Änderung in einem Gitlab-Repo vornehme, also ja.
Ben Watkins
1
GitHub Pages verwendet nur Jekyll . Installieren Sie also einen Webserver, der statische Seiten bereitstellt, und geben Sie möglicherweise ein paar Git-Hooks für die automatisierte Bereitstellung von Push-Inhalten ein.
Ajedi32,
Hey @ Ajedi32, das Problem bei diesem Ansatz ist, dass Sie für jedes neue Projekt das Git-Repo und das Webserver-Setup haben. Mit GitHub-Seiten ist es nur ein weiterer Zweig, den Sie drücken.
Fiorix
@fiorix Ja, wenn du die Dinge so automatisieren willst, brauchst du wahrscheinlich eine etwas komplexere Lösung. Trotzdem ist es möglich, dass Sie sich nur irgendwie in das GitLab-Projekterstellungssystem einbinden müssen (obwohl ich nicht weiß, wie genau, meine Vermutung ist wahrscheinlich die einfachste Möglichkeit, das Dateisystem zu überwachen, oder vielleicht einige Aufrufe der GitLab-API).
Ajedi32

Antworten:

5

Ich bin mir nicht sicher, was Sie fragen. Sie sagen, dass Sie auf Ihrem eigenen Server hosten möchten, aber Ihre Frage besagt, dass Sie wie Gitlab-Seiten hosten möchten, die nicht Ihr eigener Server sind.

In jedem Fall hilft das vielleicht

Das ist was ich mache

auf lokalem PC

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

Ich habe jetzt ein Repo vor Ort. Kopieren Sie es auf den Server

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

Jetzt habe ich es auf dem Remote-Server.

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

Jetzt gibt es auf der Website sowohl einen Master- als auch einen Live-Zweig. Ich mache das seit AFAICT. Du kannst nicht in den aktuellen Zweig pushen. Jetzt haben wir also einen "Live" -Zweig, der auf der Fernbedienung aktuell ist, und einen "Master" -Zweig, der es nicht ist

Schließlich füge eine Fernbedienung zu meinem lokalen Repo hinzu

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

Jetzt checke ich jedes Mal, wenn ich die Website aktualisieren möchte, Material in meine lokale Hauptniederlassung ein und führe dieses Skript aus

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

Das git pushpusht meine Änderungen in den nicht aktuellen Zweig auf dem Webserver. Der sshmeldet sich dann beim Webserver an und leitet die Änderungen in "master" schnell an den aktuellen Zweig weiter. In diesem Fall der Zweig "live".

--ff-only sagt zu scheitern, wenn sich Änderungen auf dem Server befinden.

Wenn es Änderungen auf dem Server gibt, kann ich sie mit in meinen lokalen Master ziehen

git pull web live

Auf mehr Sache. Bevor ich dies tue, richte ich SSH-Schlüssel auf dem Remote-Server ein, damit ich keine Passwörter eingeben muss

Dies hat absolut keine Verbindung zu Github oder Gitlab. Ich könnte meine Änderungen auch dort vornehmen, aber sie sind nicht miteinander verbunden.

gman
quelle
2

Mit ein wenig Suche nach verschiedenen Fragen bei Google habe ich einen Weg gefunden. Es ist vielleicht nicht der beste Weg und es ist vielleicht zu kompliziert, aber es sollte funktionieren und das ist die Hauptsache. Wenn Sie einen besseren Weg kennen oder einen finden können, lassen Sie es mich bitte wissen!

Ich habe festgestellt, dass Sie Ihren Code über Git-Hooks auf Ihren Servern bereitstellen können. Alles, was Sie tun müssen, ist SSH auf Ihrem Server, erstellen Sie ein Git-Repo und richten Sie dann einen Hook ein, damit Sie Commits an dieses Repo senden können. Auf diese Weise können Sie Ihre Commits auf Ihre Server übertragen, haben jedoch an dieser Stelle nichts mit gitlab zu tun.

Der nächste Schritt ist das Hinzufügen der Push-URL für Gitlab zur selben Fernbedienung. Auf diese Weise werden Sie jedes Mal sowohl zu gitlab als auch zur Site selbst weitergeleitet. Infolgedessen werden sowohl das Gitlab-Repo als auch die eigentliche Site synchronisiert. Obwohl dies ein Hack ist und definitiv nicht effizient ist.

In diesem Blog-Beitrag habe ich herausgefunden, wie Sie Ihren Code per Git auf Ihren Servern bereitstellen können: http://sebduggan.com/blog/deploy-your-website-changes-using-git/

Ich habe festgestellt, dass Sie aus dieser Frage zu stackoverflow zwei Push-URLs zu Ihren Remotes in git hinzufügen können: /programming/14290113/git-pushing-code-to-two-remotes

Wie gesagt, wenn Sie einen besseren Weg finden, lassen Sie es mich bitte wissen. Dies wird funktionieren, aber es bedeutet, dass zwei Versionen desselben Codes vorhanden sind. Dies ist natürlich sehr chaotisch und eine große Verschwendung des Speichers Ihres Servers.

Ben Watkins
quelle