Comment forcer la construction de pages GitHub?

109

Chaque référentiel GitHub peut avoir ( ou être ) un site Web GitHub Pages , qui peut être créé avec Jekyll. GitHub construit le site chaque fois que vous envoyez un nouveau commit.
Existe-t-il un moyen de forcer l'actualisation du site Web Github Pages sans pousser un nouveau commit?

Pierre Prinetti
la source
Peut-être que cela est conforme à leur politique de cache? ( stackoverflow.com/a/13106972/6309 )
VonC
2
En fait, vous pouvez contacter le support GitHub pour une confirmation et publier une réponse ici. Cela pourrait aider les autres.
VonC
1
Selon la documentation , les pages github ont une limite de 10 builds par heure. D'après mon expérience, si vous dépassez la limite, une nouvelle construction n'est pas déclenchée, même si vous appuyez sur un nouveau commit.
Jakub Kukul

Réponses:

151

Depuis le support GitHub, 07/06/2014:

Il n'est actuellement pas possible de déclencher manuellement une reconstruction, sans pousser un commit vers la branche appropriée.


Éditer:

Comme Andy l'a souligné dans les commentaires, vous pouvez pousser un commit vide avec la commande:

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

Modifier 2:

Grâce aux actions GitHub, il est assez facile de déclencher une publication quotidienne: https://stackoverflow.com/a/61706020/4548500 .

Pierre Prinetti
la source
3
Si vous avez de la chance comme moi, vérifiez également le statut de Github car ils peuvent être en panne ou avoir des problèmes avec les tâches / builds en arrière-plan.
f01
tl, drgit log
nilon
20

Si vous voulez une solution de script rapide, la voici. Effectuez les tâches suivantes une seule fois et exécutez le script chaque fois que vous souhaitez reconstruire votre page GitHub.

1. Créez un jeton d'accès personnel pour la ligne de commande:

  • Suivez l'aide officielle ici pour créer un jeton d'accès personnel. En gros, vous devez vous connecter à votre compte GitHub et allez à: Settings > Developer settings > Personal access tokens > Generate new token.
  • Cochez la repoportée.
  • Copiez le jeton.

2. Créez le script suivant:

  • Créez un fichier appelé RebuildPage.shet ajoutez les lignes:

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

    Ici,

    • Remplacez-le yournamepar votre nom d'utilisateur GitHub.
    • Remplacez-le yourtokenpar votre jeton d'accès personnel copié.
    • Remplacez yourrepopar le nom de votre référentiel.

3. Exécutez le script:

  • Si vous utilisez Windows 10:

    • Vous devez configurer sous-système Windows pour Linux , si ce n'est déjà fait. Suivez ceci pour le faire.
    • Supprimez la première ligne ( #!/bin/bash) du script et enregistrez le script sous RebuildPage.bat. (c.-à-d. remplacer.sh par .batdans le nom du fichier de script)
    • Alternative au point ci-dessus: pour obtenir la fonction de double-clic pour exécuter le .sh fichier:

      • Ensemble bash.exe comme programme par défaut pour les .shfichiers.
      • Ouvrez regedit.exeet modifiez HKEY_CLASSES_ROOT\Applications\bash.exe\shell\open\command. Définissez la (Default)valeur sur:

        "C:\Windows\System32\bash.exe" -c " \"./$(grep -oE '[^\\]+$' <<< '%L')\";"
        
    • Maintenant, double-cliquez sur le script lorsque vous souhaitez reconstruire votre page GitHub. Terminé!

  • Si vous utilisez Linux / Mac, l'exécution du script est identique à l'exécution d'autres scripts. Terminé!

Notes supplémentaires pour la solution:

Cette solution utilise une API de GitHub REST API v3. Voici la documentation officielle de l'API.

Arnobpl
la source
7

J'ai eu ce problème pendant un moment, et pousser vers la branche principale n'a rien changé sur myapp.github.io , pour deux raisons:

1 - Construire

Peu importe combien de fois j'ai essayé de pousser mon travail sur master, la construction ne démarrait pas. J'ai trouvé une solution de contournement en modifiant mon fichier dans l'éditeur en ligne de Github (ouvrez votre index.html et modifiez-le sur le site Web de Github, puis validez)

2 - Problèmes de mise en cache

Même après une construction réussie, je verrais toujours exactement la même page myapp.github.io, et un rechargement dur avec Ctrl + Shift + Rne résoudrait pas le problème. Au lieu de cela, si vous utilisez Chrome, inspectez votre page, allez dans l' Applicationonglet, sélectionnez "Effacer le stockage" dans le menu de gauche, puis cliquez sur "Effacer les données du site" en bas du menu.

Pierre Olivier Tran
la source
6

Maintenant que les actions GitHub sont disponibles, c'est facile à faire:

# 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 }}

Exemple de dépôt qui fait cela: https://github.com/SUPERCILEX/personal-website/actions

API Pages: https://developer.github.com/v3/repos/pages/#request-a-page-build

SUPERCILEX
la source
5

Même après avoir poussé mes modifications dans le référentiel GitHub, je n'ai pas pu voir les modifications aujourd'hui. Ensuite, j'ai vérifié les paramètres de mon référentiel pour plus d'informations, là je pouvais voir, toutes ces fois la construction échouait et c'était la raison pour laquelle je ne pouvais pas voir les changements.

entrez la description de l'image ici

Le message suivant peut également s'afficher: "Votre site rencontre des problèmes de création: impossible de créer la page. Veuillez réessayer plus tard."

Ensuite, j'ai vérifié mes récents commits et j'ai essayé de trouver la cause de ce problème. À la fin, j'ai pu résoudre le problème.

entrez la description de l'image ici

Il y avait une virgule supplémentaire dans les balises (,) et cela a causé ce problème .

entrez la description de l'image ici

Vous n'obtiendrez pas de messages d'erreur pertinents s'il y a des problèmes dans votre fichier .md. Je vous recommande de vérifier l'état de la construction et de comparer les modifications si vous rencontrez le même problème.

Sibeesh Venu
la source
4

Le commit vide n'a pas fonctionné pour moi, mais basé sur la réponse @benett, cela a fonctionné pour moi:

Ouvrez Postman, créez une nouvelle requête avec cette URL: https://api.github.com/repos/[user_name </font>/ [ repo_name </font>/ pages / builds (remplacez par votre nom et votre dépôt), et sélectionnez la méthode POST.

Avant de l'exécuter, accédez à l' headersonglet et ajoutez une nouvelle clé Acceptavec la valeurapplication/vnd.github.mister-fantastic-preview+json

Vous pouvez maintenant l'exécuter et visiter à nouveau vos pages.

Antoni
la source
Cela ne fonctionne pas pour moi, je comprends { "message": "Not Found", "documentation_url": "https://developer.github.com/v3/repos/pages/#request-a-page-build" }. Peut-être parce que mon repo est privé?
Coburn
0

Solution alternative

Vous avez peut-être reçu un e-mail de GitHub vous informant que Jekyll n'a pas réussi à créer votre site lorsque vous l'avez poussé vers votre gh-pages. Si tel est le cas, vous pouvez essayer de forcer le push pour déclencher une autre compilation.

Si vous utilisez un dossier dédié pour le site Web final, disons un publicdossier, vous pouvez essayer de reconstruire votre dossier et d'ajouter le dossier à vos modifications validées. Après cela, vous devrez diviser ces fichiers dans votre gh-pagesbranche et les forcer à déclencher une autre compilation même si les fichiers n'ont pas du tout changé. Le reste du code ci-dessous supprime simplement les validations du publicdossier pour plus de commodité et les supprime du système de fichiers local.

Code

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

Conseils

S'il y a des modifications non validées qui ne font pas partie du site final, vous pouvez les cacher avec la commande suivante.

git stash

Ensuite, exécutez la commande ci-dessus pour forcer manuellement la construction de Jekyll et les désinstaller.

git stash pop

Références

Amin NAIRI
la source