Puis-je héberger mon site Web via gitlab comme vous le pouvez avec les pages github?

20

Je serais ravi d'utiliser git pour héberger mon site Web et j'aimerais une plate-forme à laquelle je peux me connecter en ligne pour l'accompagner (quelque chose comme Github). Vous penseriez dans ce cas, que les pages Github seraient le chemin parfait pour moi, bien que je ne veuille pas utiliser les pages Github. J'aimerais héberger tout cela sur mes propres serveurs comme vous le faites avec Github Enterprise (mais gratuitement).

J'ai trouvé Gitlab et je me demandais s'il était possible d'utiliser Gitlab comme des pages Github. C'est possible?

Ben Watkins
la source
Par gitlab-like, vous voulez dire le démarque de GitLab et la capacité de mettre à jour le site Web en poussant simplement vers un dépôt git?
phoops
Je veux dire que mon site Web est mis à jour automatiquement lorsque je modifie un dépôt gitlab, alors oui.
Ben Watkins
1
GitHub Pages utilise simplement Jekyll . Installez donc cela + un serveur Web qui sert des pages statiques, et jetez peut-être quelques hooks git pour les déploiements automatisés de contenu poussé, et vous avez essentiellement terminé.
Ajedi32
Hey @ Ajedi32, le problème avec cette approche est que pour chaque nouveau projet, vous avez le dépôt git et la configuration du serveur Web. Avec les pages GitHub, c'est juste une autre branche que vous poussez.
fiorix
@fiorix Oui, si vous voulez automatiser les choses à ce point, vous aurez probablement besoin d'une solution un peu plus complexe. Encore faisable cependant, il vous suffit de vous connecter au système de création de projet GitLab d'une manière ou d'une autre (bien que je ne sache pas exactement, je suppose que le moyen le plus simple impliquerait probablement de regarder le système de fichiers, ou peut-être quelques appels à l'API GitLab).
Ajedi32

Réponses:

5

Je ne sais pas vraiment ce que vous demandez. Vous dites que vous voulez héberger sur votre propre serveur mais votre question dit que vous voulez héberger comme des pages gitlab qui ne sont pas votre propre serveur.

Dans tous les cas, cela vous aidera peut-être

C'est ce que je fais

sur le PC local

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

J'ai maintenant un dépôt local. Copiez-le sur le serveur

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

Maintenant, je l'ai sur le serveur distant.

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

Maintenant, il y a à la fois une branche principale et une branche en direct sur le site Web. Je fais cela depuis AFAICT, vous ne pouvez pas pousser vers la branche actuelle. Nous avons donc maintenant une branche "live" qui est actuelle sur la télécommande et une branche "master" qui n'est pas

Enfin, ajoutez une télécommande à mon dépôt local

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

Maintenant, chaque fois que je veux mettre à jour le site Web, j'archive des trucs dans ma branche principale locale, puis exécute ce script

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

Le git pushpousse mes modifications à la branche non actuelle sur le serveur Web. Le sshse connecte ensuite au serveur Web et transfère rapidement les modifications de "master" à la branche actuelle. Dans ce cas, la branche "live".

--ff-only dit d'échouer s'il y a des changements sur le serveur.

S'il y a des changements sur le serveur, je peux les insérer dans mon maître local avec

git pull web live

Sur plus de chose. Avant de faire quoi que ce soit, je configure les clés SSH sur le serveur distant pour ne pas avoir à taper de mot de passe

Cela n'a absolument aucun lien avec github ou gitlab. Je pourrais aussi y pousser mes modifications, mais elles ne sont pas connectées.

gman
la source
2

Avec une petite recherche de diverses questions sur Google, j'ai trouvé un moyen. Ce n'est peut-être pas le meilleur moyen et c'est peut-être trop compliqué, mais cela devrait fonctionner et c'est l'essentiel. Cependant, si vous connaissez un meilleur moyen ou pouvez en trouver un, faites-le moi savoir!

J'ai trouvé que vous pouvez déployer votre code sur vos serveurs via des hooks Git. Tout ce que vous devez faire est SSH sur votre serveur, créez un dépôt git, puis configurez un hook pour que vous poussiez les validations vers ce dépôt. Cela vous permettra de pousser vos validations sur vos serveurs, mais n'a rien à voir avec gitlab à ce stade.

L'étape suivante consiste à ajouter l'url de push pour gitlab à la même télécommande. De cette façon, vous pousserez à la fois vers gitlab et le site lui-même. Par conséquent, le dépôt gitlab et le site réel seront tous deux synchronisés. Bien que ce soit un hack et qu'il n'est certainement pas efficace.

J'ai trouvé comment déployer votre code sur vos serveurs via git à partir de cet article de blog: http://sebduggan.com/blog/deploy-your-website-changes-using-git/

J'ai trouvé que vous pouviez ajouter deux URL de poussée à vos télécommandes dans git à partir de cette question sur stackoverflow: /programming/14290113/git-pushing-code-to-two-remotes

Comme je l'ai dit, si vous pouvez trouver un meilleur moyen, faites-le moi savoir. Cela fonctionnera, mais cela signifie avoir deux versions du même code. Bien sûr, c'est très compliqué et c'est un gros gaspillage de stockage de votre serveur.

Ben Watkins
la source
1

Actuellement, le mieux que vous puissiez faire est de GitLab CI pour pousser vers un serveur statique comme Amazon S3.

Si vous pouvez déployer avec Git, la question suivante (non résolue) est spécifique à la façon de le faire avec gitlab: /programming/14288288/gitlab-repository-mirroring

Il y a une demande spécifique pour cela au tracker de fonctionnalité: http://feedback.gitlab.com/forums/176466-general/suggestions/5599145-preview-render-static-html-pages-push-to-repos

Ciro Santilli 新疆 改造 中心 法轮功 六四 事件
la source