Come forzare la compilazione di pagine GitHub?


109

Ogni repository GitHub può avere ( o essere ) un sito Web GitHub Pages , che può essere creato con Jekyll. GitHub crea il sito ogni volta che invii un nuovo commit.
C'è un modo per forzare l'aggiornamento del sito Web di Github Pages senza spingere un nuovo commit?


Forse questo è in linea con la loro politica sulla cache? ( Stackoverflow.com/a/13106972/6309 )
VonC

2
In realtà, puoi contattare l'assistenza di GitHub per una conferma e pubblicare una risposta qui. Questo potrebbe aiutare gli altri.
VonC

1
Secondo la documentazione , le pagine GitHub hanno un limite di 10 build all'ora. Nella mia esperienza, se superi il limite, una nuova build non viene attivata, anche se sposti un nuovo commit.
Jakub Kukul

Risposte:


151

Dall'assistenza GitHub, 07/06/2014:

Al momento non è possibile attivare manualmente una ricostruzione, senza eseguire il push di un commit nel ramo appropriato.


Modificare:

Come ha sottolineato Andy nei commenti, puoi inviare un commit vuoto con il comando:

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

Modifica 2:

Grazie alle azioni di GitHub, è abbastanza facile attivare una pubblicazione giornaliera: https://stackoverflow.com/a/61706020/4548500 .


3
Se sei fortunato come me, controlla anche lo stato di Github perché potrebbero essere inattivi o avere problemi con i lavori in background / build.
f01

tl, drgit log
nilon

20

Se vuoi una rapida soluzione di script, eccola qui. Esegui le seguenti attività solo una volta ed esegui lo script ogni volta che desideri ricostruire la tua pagina GitHub.

1. Crea un token di accesso personale per la riga di comando:

  • Segui la guida ufficiale qui per creare un token di accesso personale. In pratica, devi loggarti nel tuo account GitHub e andare a: Settings > Developer settings > Personal access tokens > Generate new token.
  • Spunta l' repoambito.
  • Copia il token.

2. Crea il seguente script:

  • Crea un file chiamato RebuildPage.she aggiungi le righe:

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

    Qui,

    • Sostituisci yournamecon il tuo nome utente GitHub.
    • Sostituisci yourtokencon il tuo token di accesso personale copiato.
    • Sostituisci yourrepocon il nome del tuo repository.

3. Esegui lo script:

  • Se utilizzi Windows 10:

    • È necessario configurare il sottosistema Windows per Linux , se non è già stato fatto. Seguire questo per farlo.
    • Rimuovere la prima riga ( #!/bin/bash) dallo script e salvare lo script come RebuildPage.bat. (cioè, sostituire .shcon .batnel nome del file di script)
    • Alternativa al punto precedente: per ottenere la funzione di doppio clic per eseguire il .shfile:

      • Imposta bash.execome programma predefinito per i .shfile.
      • Apri regedit.exee modifica HKEY_CLASSES_ROOT\Applications\bash.exe\shell\open\command. Imposta il (Default)valore su:

        "C:\Windows\System32\bash.exe" -c " \"./$(grep -oE '[^\\]+$' <<< '%L')\";"
        
    • Ora fai doppio clic sullo script anche quando vuoi ricostruire la tua pagina GitHub. Fatto!

  • Se utilizzi Linux / Mac, l'esecuzione dello script equivale a eseguire altri script. Fatto!

Note aggiuntive per la soluzione:

Questa soluzione utilizza un'API di GitHub REST API v3. Ecco la documentazione ufficiale per l'API.


7

Ho avuto questo problema per un po 'e il passaggio a master branch non ha cambiato nulla myapp.github.io, per due motivi:

1 - Costruisci

Non importa quante volte ho provato a spingere il mio lavoro su master, la build non si avviava. Ho trovato una soluzione alternativa modificando il mio file nell'editor online di Github (apri il tuo index.html e modificalo sul sito Web di Github, quindi esegui il commit)

2 - Problemi di memorizzazione nella cache

Anche dopo una build di successo, vedrei ancora esattamente la stessa pagina myapp.github.ioe ricaricare con fatica Ctrl + Shift + Rnon lo risolverà. Invece, se utilizzi Chrome, ispeziona la tua pagina, vai nella Applicationscheda, seleziona "Cancella memoria" nel menu a sinistra e fai clic su "Cancella dati sito" nella parte inferiore del menu.


6

Ora che le azioni GitHub sono disponibili, è banale da fare:

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

Repo di esempio che esegue questa operazione: https://github.com/SUPERCILEX/personal-website/actions

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


5

Anche dopo aver inviato le modifiche al repository GitHub, non sono stato in grado di vedere le modifiche oggi. Quindi ho controllato le impostazioni del mio repository per ulteriori informazioni, lì ho potuto vedere, tutte queste volte la compilazione non funzionava e questo era il motivo per cui non ero in grado di vedere le modifiche.

enter image description here

Potresti anche visualizzare un messaggio del tipo "Problemi di creazione del sito: impossibile creare la pagina. Riprova più tardi".

Quindi stavo controllando i miei commit recenti e ho cercato di scoprire cosa causa questo problema. Alla fine sono riuscito a risolvere il problema.

enter image description here

C'era una virgola aggiuntiva nei tag (,) e questo ha causato questo problema .

enter image description here

Non riceverai messaggi di errore rilevanti se ci sono problemi nel tuo file .md. Ti consiglio di verificare lo stato della build e confrontare le modifiche se stai affrontando lo stesso problema.


4

Il commit vuoto non ha funzionato per me, ma in base alla risposta di @benett, ha funzionato per me:

Apri Postman, crea una nuova richiesta con questo URL: https://api.github.com/repos/[user_name”/[repo_name”/pages/builds (sostituisci con il tuo nome e repo) e seleziona il metodo POST.

Prima di eseguirlo, vai alla headersscheda e aggiungi una nuova chiave Acceptcon il valoreapplication/vnd.github.mister-fantastic-preview+json

Ora puoi eseguirlo e visitare di nuovo le tue pagine.


Questo non funziona per me, capisco { "message": "Not Found", "documentation_url": "https://developer.github.com/v3/repos/pages/#request-a-page-build" }. Forse perché il mio repo è privato?
Coburn


0

Soluzione alternativa

Potresti aver ricevuto un'e-mail da GitHub che ti informa che Jekyll non è riuscito a costruire il tuo sito quando lo hai inviato al tuo gh-pages. Se questo è il caso, puoi provare a forzare il push per attivare un'altra build.

Se usi una cartella dedicata per il sito web finale, diciamo una publiccartella, puoi provare a ricostruire la tua cartella e aggiungere la cartella alle modifiche confermate. Dopodiché, dovrai dividere quei file nel tuo gh-pagesramo e costringerli ad attivare un'altra build anche se i file non sono cambiati affatto. Il resto del codice qui sotto rimuove solo i commit perpublic cartella per comodità e lo rimuove dal filesystem locale.

Codice

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

Suggerimenti

Se sono presenti modifiche non autorizzate che non fanno parte del sito finale, puoi nasconderle con il seguente comando.

git stash

Quindi esegui il comando precedente per forzare manualmente la build di Jekyll e decomprimerlo.

git stash pop

Riferimenti

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.