web-dev-qa-db-fra.com

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

J'adorerais utiliser git pour héberger mon site web, et j'aimerais une plateforme sur laquelle je peux me connecter en ligne pour l'accompagner (quelque chose comme Github). On pourrait penser que, dans ce cas, les pages Github seraient le chemin parfait pour moi, bien que je ne veuille pas utiliser les pages Github. Je souhaite héberger tout cela sur mes propres serveurs, comme vous le faites avec l'entreprise Github (mais gratuitement).

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

20
Ben Watkins

Bonnes nouvelles!

Depuis le 8.3 (déc 2015), GitLab propose des "pages GitLab". https://about.gitlab.com/2015/12/22/gitlab-8-3-released/

Cette fonctionnalité est disponible sur GitLab.com (qui exécute EE) où vous pouvez disposer de référentiels gratuits et illimités, publics/privés.

Voici la documentation de GitLab Pages, expliquant comment héberger gratuitement vos sites Web statiques sur GitLab. http://doc.gitlab.com/ee/pages/README.html

18
Heather

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

En tout cas peut-être que cela aidera

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 repo localement. 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 une branche principale et une branche active sur le site Web. Je fais cela depuis AFAICT vous ne pouvez pas pousser à 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, je vérifie les éléments 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 Push envoie mes modifications à la branche non courante du serveur Web. La ssh se connecte ensuite au serveur Web et transmet rapidement les modifications de "maître" à la branche actuelle. Dans ce cas, la branche "live".

--ff-only dit à é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 commencer, j’ai configuré les clés SSH sur le serveur distant pour ne pas avoir à saisir de mot de passe.

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

5
gman

Il existe un projet nodejs qui implémente ceci: https://github.com/Glavin001/GitLab-Pages

4
Simon Hürlimann

Après quelques recherches sur Google, j'ai trouvé un moyen. Ce n'est peut-être pas la meilleure solution 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 constaté que vous pouvez déployer votre code sur vos serveurs via des hooks Git. Tout ce que vous avez à faire est de faire SSH sur votre serveur, de créer un référentiel git, puis de configurer un point d’accès permettant à Push de s’engager dans ce référentiel. Cela vous permettra de pousser vos commits sur vos serveurs, mais cela n’a rien à voir avec gitlab pour le moment.

L'étape suivante consiste à ajouter l'URL Push de gitlab à la même télécommande. De cette façon, vous pousserez à la fois vers gitlab et le site lui-même. En conséquence, le repo gitlab et le site actuel seront synchronisés. Bien que ce soit un bidouillage et 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 pouvez ajouter deux urls Push à vos télécommandes dans git à partir de cette question sur stackoverflow: https://stackoverflow.com/questions/14290113/git-pushing-code-to-two-remotes

Comme je l'ai dit, si vous pouvez trouver un meilleur moyen, s'il vous plaît faites le moi savoir. Cela fonctionnera, mais cela signifie avoir deux versions du même code. Bien sûr, cela est très désordonné et représente une grosse perte de la mémoire de votre serveur.

2
Ben Watkins

Actuellement, le mieux que vous puissiez faire est d'utiliser GitLab CI pour effectuer le transfert vers un serveur statique tel qu'Amazon S3.

Si vous pouvez déployer avec Git, la question suivante (non résolue) concerne spécifiquement la procédure à suivre avec gitlab: https://stackoverflow.com/questions/14288288/gitlab-repository-mirroring

Il existe une demande spécifique à cet égard dans le suivi des fonctionnalités: http://feedback.gitlab.com/forums/176466-general/suggestions/5599145-preview-render-static-html-pages-pushed-to-) repos