¿Cómo forzar la compilación de páginas de GitHub?


109

Cada repositorio de GitHub puede tener ( o ser ) un sitio web de páginas de GitHub , que se puede construir con Jekyll. GitHub crea el sitio cada vez que envías una nueva confirmación.
¿Hay alguna forma de forzar la actualización del sitio web de Github Pages sin presionar una nueva confirmación?


¿Quizás esto está en línea con su política de caché? ( stackoverflow.com/a/13106972/6309 )
VonC

2
En realidad, puede ponerse en contacto con el soporte de GitHub para obtener una confirmación y publicar una respuesta aquí. Eso podría ayudar a otros.
VonC

1
Según la documentación , las páginas de github tienen un límite de 10 compilaciones por hora. En mi experiencia, si superas el límite, no se activa una nueva compilación, incluso si presionas una nueva confirmación.
Jakub Kukul

Respuestas:


151

Desde el soporte de GitHub, 2014-06-07:

Actualmente, no es posible desencadenar manualmente una reconstrucción sin enviar una confirmación a la rama correspondiente.


Editar:

Como Andy señaló en los comentarios, puede enviar una confirmación vacía con el comando:

git commit -m 'rebuild pages' --allow-empty
git push origin <branch-name>

Edición 2:

Gracias a las acciones de GitHub, es bastante fácil activar una publicación diaria: https://stackoverflow.com/a/61706020/4548500 .


3
Si tiene suerte como yo, también verifique el estado de Github porque pueden estar inactivos o tener problemas con trabajos / compilaciones en segundo plano.
f01

tl, drgit log
nilon

20

Si desea una solución de secuencia de comandos rápida, aquí está. Simplemente realice las siguientes tareas solo una vez y ejecute el script siempre que desee reconstruir su página de GitHub.

1. Cree un token de acceso personal para la línea de comando:

  • Siga la ayuda oficial aquí para crear un token de acceso personal. Básicamente, usted tiene que entrar en su cuenta de GitHub y vaya a: Settings > Developer settings > Personal access tokens > Generate new token.
  • Marque el repoalcance.
  • Copia el token.

2. Cree el siguiente script:

  • Cree un archivo llamado RebuildPage.shy agregue las líneas:

    #!/bin/bash
    curl -u yourname:yourtoken -X POST https://api.github.com/repos/yourname/yourrepo/pages/builds
    

    Aquí,

    • Reemplácelo yournamecon su nombre de usuario de GitHub.
    • Reemplácelo yourtokencon su token de acceso personal copiado.
    • Reemplácelo yourrepocon el nombre de su repositorio.

3. Ejecute el script:

  • Si usa Windows 10:

    • Necesita configurar el Subsistema de Windows para Linux , si aún no lo ha hecho. Siga esto para hacerlo.
    • Elimine la primera línea ( #!/bin/bash) del script y guárdelo como RebuildPage.bat. (es decir, reemplace .shcon .baten el nombre del archivo de script)
    • Alternativa al punto anterior: Para obtener la función de doble clic para ejecutar el .sharchivo:

      • Establecer bash.execomo programa predeterminado para .sharchivos.
      • Abrir regedit.exey editar HKEY_CLASSES_ROOT\Applications\bash.exe\shell\open\command. Establezca el (Default)valor en:

        "C:\Windows\System32\bash.exe" -c " \"./$(grep -oE '[^\\]+$' <<< '%L')\";"
        
    • Ahora haz doble clic en el script cuando quieras reconstruir tu página de GitHub. ¡Hecho!

  • Si usa Linux / Mac, ejecutar el script es lo mismo que ejecutar otros scripts. ¡Hecho!

Notas adicionales para la solución:

Esta solución utiliza una API de GitHub REST API v3. Aquí está la documentación oficial de la API.


7

Tuve este problema por un tiempo, y presionar a la rama maestra no cambió nada myapp.github.io, por dos razones:

1 - Construir

No importa cuántas veces intenté impulsar mi trabajo en el maestro, la compilación no comenzaba. Encontré una solución modificando mi archivo en el editor en línea de Github (abra su index.html y edítelo en el sitio web de Github, luego confirme)

2 - Problemas de almacenamiento en caché

Incluso después de una compilación exitosa, seguiría viendo exactamente la misma página myapp.github.ioy una recarga dura Ctrl + Shift + Rno lo resolvería. En cambio, si usa Chrome, inspeccione su página, diríjase a la Applicationpestaña, seleccione "Borrar almacenamiento" en el menú de la izquierda y haga clic en "Borrar datos del sitio" en la parte inferior del menú.


6

Ahora que las acciones de GitHub están disponibles, es trivial hacer esto:

# File: .github/workflows/refresh.yml
name: Refresh

on:
  schedule:
    - cron:  '0 3 * * *' # Runs every day at 3am

jobs:
  refresh:
    runs-on: ubuntu-latest
    steps:
      - name: Trigger GitHub pages rebuild
        run: |
          curl --fail --request POST \
            --url https://api.github.com/repos/${{ github.repository }}/pages/builds \
            --header "Authorization: Bearer $USER_TOKEN"
        env:
          # You must create a personal token with repo access as GitHub does
          # not yet support server-to-server page builds.
          USER_TOKEN: ${{ secrets.USER_TOKEN }}

Repositorio de muestra que hace esto: https://github.com/SUPERCILEX/personal-website/actions

API de páginas: https://developer.github.com/v3/repos/pages/#request-a-page-build


5

Incluso después de enviar mis cambios al repositorio de GitHub, no pude ver los cambios hoy. Luego revisé la configuración de mi repositorio para obtener más información, allí pude ver, todas estas veces la compilación estaba fallando y esa fue la razón por la que no pude ver los cambios.

ingrese la descripción de la imagen aquí

También puede ver un mensaje como "Su sitio tiene problemas para crear: no se puede crear la página. Vuelva a intentarlo más tarde".

Luego revisé mis confirmaciones recientes e intenté averiguar qué causa este problema. Al final pude solucionar el problema.

ingrese la descripción de la imagen aquí

Había una coma adicional en las etiquetas (,) y eso causó este problema .

ingrese la descripción de la imagen aquí

No recibirá mensajes de error relevantes si hay algún problema en su archivo .md. Le recomiendo que verifique el estado de la compilación y compare los cambios si enfrenta el mismo problema.


4

La confirmación vacía no funcionó para mí, pero según la respuesta de @benett, esto funcionó para mí:

Abra Postman, cree una nueva solicitud con esta URL: https://api.github.com/repos/[user_name]/[repo_name]/pages/builds (reemplace con su nombre y repositorio), y seleccione el método POST.

Antes de ejecutarlo, vaya a la headerspestaña y agregue una nueva clave Acceptcon el valorapplication/vnd.github.mister-fantastic-preview+json

Ahora puede ejecutarlo y visitar sus páginas nuevamente.


Esto no funciona para mí, lo entiendo { "message": "Not Found", "documentation_url": "https://developer.github.com/v3/repos/pages/#request-a-page-build" }. ¿Quizás porque mi repositorio es privado?
Coburn


0

Solución alternativa

Es posible que haya recibido un correo electrónico de GitHub que le dice que Jekyll no logró construir su sitio cuando lo envió a su gh-pages. Si este es el caso, puede intentar forzar el empuje para activar otra compilación.

Si usa una carpeta dedicada para el sitio web final, digamos una publiccarpeta, puede intentar reconstruir su carpeta y agregar la carpeta a sus cambios confirmados. Después de eso, deberá dividir esos archivos en su gh-pagesrama y obligarlos a activar otra compilación incluso si los archivos no cambiaron en absoluto. El resto del código a continuación simplemente elimina las confirmaciones de la publiccarpeta por conveniencia y lo elimina del sistema de archivos local.

Código

git add public
git commit -am ":bug: triggering another jekyll build"
git push origin $(git subtree split --prefix public master):gh-pages --force
git reset HEAD~1
rm -rf public

Consejos

Si hay cambios no comprometidos que no forman parte del sitio final, puede guardarlos con el siguiente comando.

git stash

Luego, ejecute el comando anterior para forzar manualmente la compilación de Jekyll y deshacerse de ellos.

git stash pop

Referencias

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.