how - Desplegando Jekyll a Github Pages
setup github pages (5)
He construido un sitio localmente con Jekyll, y lo he llevado a un nuevo repositorio principal (username.github.com) y el sitio funciona muy bien. Mi pregunta es, ¿cómo muevo solo la parte desplegable, el _ directorio del sitio , a una rama de gh-pages? O, mejor dicho, ¿el contenido de ese directorio si esa es la mejor manera de implementar?
Planeo usar un dominio personalizado. Mi flujo de trabajo será trabajar en la rama maestra, tal vez algunas ramas de características, y luego empujar (combinar) el resultado compilado en la rama de gh-pages. ¿Eso suena correcto?
Estoy teniendo dificultades para entenderlo a través de la documentación, agradecería cualquier ayuda, ¡gracias!
Lo que deseas hacer es muy similar a cómo funciona Octopress . Déjame explicarte cómo puedes hacer algo como esto.
Desea implementar los datos que están presentes en _site
en las gh-pages
la sucursal. Por lo tanto, su primer paso será hacer que la rama predeterminada para su repositorio username.github.com
sea gh-pages y no master
o source
(básicamente lo que quiera que sea). Lo que debe hacer ahora es escribir tareas en su Rakefile
que copien el contenido de _site
para ramificar gh-pages
. Una vez hecho esto, puede automatizar el procedimiento de push
o hacerlo manualmente. De esa manera, GitHub no construirá su sitio web cuando push
su rama predeterminada, en lugar de eso solo servirá las páginas estáticas que están presentes en _site
.
Si desea comprender cómo funcionan los scripts, debería echar un vistazo al Rakefile
presente en Octopress. Tiene estas dos tareas llamadas como generate
y deploy
. Cuando ejecute rake generate
jekyll --no-auto
ejecutará jekyll --no-auto
con parámetros para colocar el código en un directorio llamado _deploy
y cuando ejecute rake deploy
, copiará el contenido de _deploy
a gh-pages
sucursal y lo confirmará. Personalmente, me gusta mucho este procedimiento, pero no lo he implementado en mi sitio Jekyll como tal.
No desea realizar ningún cambio en los archivos de la carpeta _site
. _site
es donde Jekyll guarda las páginas html estáticas que genera. Se sobrescribirán automáticamente la próxima vez que el servidor Jekyll regenere el sitio. Por ejemplo, si crea una nueva publicación de blog, el servidor ve el nuevo archivo (o archivo actualizado) y, a continuación, el servidor regenera las páginas estáticas con el nuevo contenido. Así es como tu nueva publicación de blog está en la parte superior de la página.
Se considera una práctica recomendada agregar _site
a su archivo .gitignore
. No es necesario insertar ese directorio en tu repositorio, ya que se sobrescribirá tan pronto como lleguen a los servidores de github.
Creo que lo que quieres hacer es checkout
una nueva rama, hacer cambios y luego fusionarla en la rama de gh-pages
.
Prueba mi gema jgd . Todo lo que necesitas hacer es instalarlo y ejecutar:
gem install jgd
jgd
¡Hecho! Su sitio está construido y desplegado en gh-pages
. Además, jgd
se integra perfectamente con travis-ci o con cualquier otro servidor de CI.
Esta publicación explica el mecanismo en detalles: http://www.yegor256.com/2014/06/24/jekyll-github-deploy.html
Su flujo de trabajo debe ser trabajar en una rama de desarrollo o característica, luego empujar SOLAMENTE los archivos construidos a su rama maestra para que sean servidos por Github Pages.
Para hacer esto:
- Comience en su rama de
development
con todos sus cambios listos para construirse y hacerlos funcionar. - Ejecute en su rama de desarrollo:
rm -rf _site
(esto eliminará los archivos antiguos construidos en la carpeta _site) - Ejecute
git clone -b master ''git config remote.origin.url'' _site
(esto creará una rama maestra para sus archivos construidos) - Ejecutar
jekyll build
(construye tu sitio) -
cd _site
- Si tiene un dominio personalizado, haga 7-8, de lo contrario salte al paso 9
-
touch CNAME
- Agrega tu dominio personalizado a ese archivo CNAME
- git añadir. (debería estar en la rama master / _site ahora)
- git commit
- git push
Ahora, solo los archivos construidos deben estar en master
, los archivos de trabajo estarán en su development
o en la rama de características.
Luché con esto por un tiempo, así que construí un script si desea usarlo: https://github.com/andimiya/deploy-jekyll-gh-pages
Su flujo de trabajo no suena correcto según los detalles de su pregunta.
Si ha transferido su sitio basado en Jekyll a un repositorio username.github.io
, entonces no necesita una rama de gh-pages
. Solo se requiere una rama de gh-pages
para los repositorios donde desea tener un código y un sitio web en el mismo repositorio. GitHub Pages se encargará de ejecutar Jekyll para usted y de servir el sitio compilado en ambos casos.
GitHub Pages ejecuta Jekyll de una manera muy específica para mantenerlo seguro. Si está utilizando complementos personalizados con su sitio Jekyll, entonces deberá almacenar su sitio compilado (el directorio _site
que mencionó) en la rama maestra, y la fuente en una rama diferente.
Para resumir, su flujo de trabajo debe funcionar en su repositorio local, ya sea en la rama master
o en las ramas de características (combinando las ramas de características en su rama master
local según sea necesario) y, cuando esté listo para publicar, empuje su repositorio local a la rama master
en GitHub.