setup pages page how docs deploy blog github jekyll github-pages

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:

  1. Comience en su rama de development con todos sus cambios listos para construirse y hacerlos funcionar.
  2. Ejecute en su rama de desarrollo: rm -rf _site (esto eliminará los archivos antiguos construidos en la carpeta _site)
  3. Ejecute git clone -b master ''git config remote.origin.url'' _site (esto creará una rama maestra para sus archivos construidos)
  4. Ejecutar jekyll build (construye tu sitio)
  5. cd _site
  6. Si tiene un dominio personalizado, haga 7-8, de lo contrario salte al paso 9
  7. touch CNAME
  8. Agrega tu dominio personalizado a ese archivo CNAME
  9. git añadir. (debería estar en la rama master / _site ahora)
  10. git commit
  11. 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.