¿Puedo alojar mi sitio web a través de gitlab como puede hacerlo con las páginas de github?

20

Me encantaría usar git para alojar mi sitio web, y me encantaría una plataforma en la que pueda iniciar sesión en línea para acompañarlo (algo así como Github). Pensarías en cuyo caso, que las páginas de Github serían la ruta perfecta para mí, aunque no quiero usar las páginas de Github. Me gustaría alojar todo esto en mis propios servidores como lo hace con Github Enterprise (pero de forma gratuita).

Encontré Gitlab y me preguntaba si de todos modos puedo usar Gitlab como las páginas de Github. ¿Es posible?

Ben Watkins
fuente
Por gitlab-like te refieres a la rebaja de GitLab y la capacidad de actualizar el sitio web simplemente presionando a un repositorio de git?
phoops
Me refiero a que mi sitio web se actualice automáticamente cuando hago un cambio en un repositorio de gitlab, así que sí.
Ben Watkins,
1
GitHub Pages solo usa Jekyll . Así que instale eso + un servidor web que sirve páginas estáticas, y tal vez agregue algunos ganchos git para implementaciones automatizadas de contenido enviado, y básicamente ya está listo.
Ajedi32
Hola @ Ajedi32, el problema con este enfoque es que para cada nuevo proyecto tienes el repositorio git y la configuración del servidor web. Con las páginas de GitHub es solo otra rama que empujas.
fiorix
@fiorix Sí, si quieres automatizar las cosas hasta ese punto, probablemente necesites una solución algo más compleja. Sin embargo, aún es factible, solo necesita conectarse al sistema de creación de proyectos GitLab de alguna manera (aunque no sé exactamente cómo, creo que la forma más sencilla probablemente implicaría mirar el sistema de archivos, o tal vez algunas llamadas a la API de GitLab).
Ajedi32

Respuestas:

5

No estoy realmente seguro de lo que estás preguntando. Dices que quieres alojar en tu propio servidor, pero tu pregunta dice que quieres alojar como páginas de gitlab que no es tu propio servidor.

En cualquier caso, tal vez esto ayude

Esto es lo que hago

en la PC local

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

Ahora tengo un repositorio local. Cópialo al servidor

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

Ahora lo tengo en el servidor remoto.

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

Ahora hay una rama maestra y otra en vivo en el sitio web. Hago esto desde AFAICT, no puedes pasar a la rama actual. Así que ahora tenemos una rama "en vivo" que es actual en el control remoto y una rama "maestra" que no es

Finalmente agregue un control remoto a mi repositorio local

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

Ahora, cada vez que quiero actualizar el sitio web, verifico cosas en mi rama maestra local y luego ejecuto este script

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

El git pushempuja mis cambios a la rama no actual en el servidor web. Los sshregistros de continuación en el servidor web y el avance rápido de los cambios en el "maestro" a la rama actual. En este caso la rama "en vivo".

--ff-only dice que falle si hay cambios en el servidor.

Si hay cambios en el servidor, puedo colocarlos en mi maestro local con

git pull web live

Sobre más cosas. Antes de hacer nada de esto, configuro las claves SSH en el servidor remoto para no tener que escribir ninguna contraseña

Esto no tiene absolutamente ninguna conexión con github o gitlab. También podría impulsar mis cambios allí, pero no están conectados.

gman
fuente
2

Con un poco de búsqueda de varias preguntas en Google, encontré una manera. Puede que no sea la mejor manera y que sea demasiado complicado, pero debería funcionar y eso es lo principal. Sin embargo, si conoce una mejor manera o puede encontrar una, ¡hágamelo saber!

Descubrí que puede implementar su código en sus servidores a través de ganchos Git. Todo lo que necesita hacer es SSH en su servidor, crear un repositorio git y luego configurar un enlace para que envíe las confirmaciones a este repositorio. Esto le permitirá enviar sus confirmaciones a sus servidores, pero no tiene nada que ver con gitlab en este momento.

El siguiente paso es agregar la url de inserción para gitlab al mismo control remoto. De esta manera, presionará tanto a gitlab como al sitio en sí cada vez. Como resultado, tanto el repositorio de gitlab como el sitio real estarán sincronizados. Aunque esto es un truco y definitivamente no es eficiente.

Encontré cómo implementar su código en sus servidores a través de git en esta publicación de blog: http://sebduggan.com/blog/deploy-your-website-changes-using-git/

Descubrí que puede agregar dos urls push a sus controles remotos en git desde esta pregunta en stackoverflow: /programming/14290113/git-pushing-code-to-two-remotes

Como dije, si puedes encontrar una mejor manera, házmelo saber. Esto funcionará, pero significa tener dos versiones del mismo código. Por supuesto, esto es muy desordenado y es un gran desperdicio del almacenamiento de su servidor.

Ben Watkins
fuente
1

Actualmente, lo mejor que puede hacer es hacer que GitLab CI empuje a un servidor estático como Amazon S3.

Si puede implementar con Git, la siguiente pregunta (sin resolver) es específica sobre cómo hacerlo con gitlab: /programming/14288288/gitlab-repository-mirroring

Hay una solicitud específica para eso en el rastreador de características: http://feedback.gitlab.com/forums/176466-general/suggestions/5599145-preview-render-static-html-pages-pushed-to-repos

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