Wie erzwinge ich das Erstellen von GitHub-Seiten?

108

Jedes GitHub-Repository kann eine GitHub Pages- Website haben ( oder sein ) , die mit Jekyll erstellt werden kann. GitHub erstellt die Site jedes Mal, wenn Sie ein neues Commit ausführen. Gibt es eine Möglichkeit, die Aktualisierung der Github Pages-Website zu erzwingen, ohne ein neues Commit zu erzwingen?

Pierre Prinetti
quelle
Vielleicht stimmt dies mit ihrer Cache-Richtlinie überein? ( stackoverflow.com/a/13106972/6309 )
VonC
2
Sie können sich an den GitHub-Support wenden, um eine Bestätigung zu erhalten, und hier eine Antwort posten. Das könnte anderen helfen.
VonC
1
Laut Dokumentation sind Github-Seiten auf 10 Builds pro Stunde begrenzt. Wenn Sie das Limit überschreiten, wird meiner Erfahrung nach kein neuer Build ausgelöst, selbst wenn Sie ein neues Commit drücken.
Jakub Kukul

Antworten:

150

Vom GitHub-Support, 07.06.2014:

Es ist derzeit nicht möglich, eine Neuerstellung manuell auszulösen, ohne ein Commit an den entsprechenden Zweig zu senden.


Bearbeiten:

Wie Andy in den Kommentaren betonte, können Sie mit dem Befehl ein leeres Commit drücken:

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

Bearbeiten 2:

Dank GitHub Actions ist es ziemlich einfach, eine tägliche Veröffentlichung auszulösen: https://stackoverflow.com/a/61706020/4548500 .

Pierre Prinetti
quelle
3
Wenn Sie Glück haben wie ich, überprüfen Sie auch den Github-Status, da diese möglicherweise nicht verfügbar sind oder Probleme mit Hintergrundjobs / Builds haben.
f01
tl, drgit log
nilon
20

Wenn Sie eine schnelle Skriptlösung wünschen, finden Sie diese hier. Führen Sie die folgenden Aufgaben nur einmal aus und führen Sie das Skript aus, wenn Sie Ihre GitHub-Seite neu erstellen möchten.

1. Erstellen Sie ein persönliches Zugriffstoken für die Befehlszeile:

  • Folgen Sie der offiziellen Hilfe hier , um ein persönliches Zugriffstoken zu erstellen. Grundsätzlich müssen Sie sich in Ihrem GitHub-Konto anmelden und gehen zu : Settings > Developer settings > Personal access tokens > Generate new token.
  • Kreuzen Sie den repoBereich an.
  • Kopieren Sie den Token.

2. Erstellen Sie das folgende Skript:

  • Erstellen Sie eine Datei mit dem Namen RebuildPage.shund fügen Sie die Zeilen hinzu:

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

    Hier,

    • Ersetzen Sie yournamedurch Ihren GitHub-Benutzernamen.
    • Ersetzen Sie yourtokendurch Ihr kopiertes persönliches Zugriffstoken.
    • Ersetzen Sie yourrepodurch Ihren Repository-Namen.

3. Führen Sie das Skript aus:

  • Wenn Sie Windows 10 verwenden:

    • Sie müssen Windows Subsystem für Linux einrichten , falls dies noch nicht geschehen ist. Folgen Sie dazu .
    • Entfernen Sie die erste Zeile ( #!/bin/bash) aus dem Skript und speichern Sie das Skript unter RebuildPage.bat. (dh ersetzt .shmit .batin der Skriptdatei Namen)
    • Alternative zum obigen Punkt: So erhalten Sie die Doppelklickfunktion zum Ausführen der .shDatei:

      • Legen Sie bash.exeals Standardprogramm für .shDateien.
      • Öffnen regedit.exeund bearbeiten HKEY_CLASSES_ROOT\Applications\bash.exe\shell\open\command. Stellen Sie den (Default)Wert auf:

        "C:\Windows\System32\bash.exe" -c " \"./$(grep -oE '[^\\]+$' <<< '%L')\";"
        
    • Doppelklicken Sie nun auf das Skript, wenn Sie Ihre GitHub-Seite neu erstellen möchten. Getan!

  • Wenn Sie Linux / Mac verwenden, entspricht das Ausführen des Skripts dem Ausführen anderer Skripts. Getan!

Zusätzliche Hinweise zur Lösung:

Diese Lösung verwendet eine API der GitHub REST API v3. Hier ist die offizielle Dokumentation für die API.

arnobpl
quelle
7

Ich hatte dieses Problem für eine Weile und das Drücken auf den Hauptzweig änderte myapp.github.ioaus zwei Gründen nichts :

1 - Bauen

Egal wie oft ich versuchte, meine Arbeit auf Master zu übertragen, der Build wurde nicht gestartet. Ich habe eine Problemumgehung gefunden, indem ich meine Datei im Github-Online-Editor geändert habe (öffne deine index.html und bearbeite sie auf der Github-Website, dann schreibe sie fest).

2 - Caching-Probleme

Selbst nach einem erfolgreichen Build würde ich immer noch genau dieselbe Seite sehen myapp.github.io, und ein hartes Nachladen mit Ctrl + Shift + Rwürde es nicht lösen. Wenn Sie Chrome verwenden, überprüfen Sie stattdessen Ihre Seite, gehen Sie zur ApplicationRegisterkarte, wählen Sie im linken Menü "Speicher löschen" und klicken Sie unten im Menü auf "Site-Daten löschen".

Pierre Olivier Tran
quelle
6

Nachdem GitHub-Aktionen verfügbar sind, ist dies trivial:

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

Beispiel für ein Repo, das dies tut: https://github.com/SUPERCILEX/personal-website/actions

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

SUPERCILEX
quelle
5

Selbst nachdem ich meine Änderungen in das GitHub-Repository übertragen hatte, konnte ich die Änderungen heute nicht sehen. Dann überprüfte ich meine Repository-Einstellungen auf weitere Informationen, dort konnte ich sehen, dass der Build all diese Male fehlschlug und das war der Grund, warum ich die Änderungen nicht sehen konnte.

Geben Sie hier die Bildbeschreibung ein

Möglicherweise wird auch die Meldung "Ihre Website hat Probleme beim Erstellen: Seite kann nicht erstellt werden. Bitte versuchen Sie es später erneut." Angezeigt.

Dann überprüfte ich meine letzten Commits und versuchte herauszufinden, was dieses Problem verursacht. Am Ende konnte ich das Problem beheben.

Geben Sie hier die Bildbeschreibung ein

Die Tags (,) enthielten ein zusätzliches Komma, das dieses Problem verursachte .

Geben Sie hier die Bildbeschreibung ein

Sie erhalten keine relevanten Fehlermeldungen, wenn in Ihrer MD-Datei Probleme auftreten. Ich empfehle Ihnen, den Build-Status zu überprüfen und die Änderungen zu vergleichen, wenn Sie auf dasselbe Problem stoßen.

Sibeesh Venu
quelle
4

Das leere Commit hat bei mir nicht funktioniert, aber basierend auf der Antwort von @benett hat dies bei mir funktioniert:

Öffnen Sie Postman, erstellen Sie eine neue Anfrage mit dieser URL: https://api.github.com/repos/[user_name‹/[repo_name‹/pages/builds (durch Ihren Namen und Ihr Repo ersetzen) und wählen Sie die POST-Methode.

Bevor Sie es ausführen, gehen Sie zur headersRegisterkarte und fügen Sie einen neuen Schlüssel Acceptmit dem Wert hinzuapplication/vnd.github.mister-fantastic-preview+json

Jetzt können Sie es ausführen und Ihre Seiten erneut besuchen.

antoni
quelle
Das funktioniert bei mir nicht { "message": "Not Found", "documentation_url": "https://developer.github.com/v3/repos/pages/#request-a-page-build" }. Vielleicht, weil mein Repo privat ist?
Coburn
0

Alternative Lösung

Möglicherweise haben Sie eine E-Mail von GitHub erhalten, in der Sie darüber informiert werden, dass es Jekyll nicht gelungen ist, Ihre Website zu erstellen, als Sie sie an Ihre Website gesendet haben gh-pages. In diesem Fall können Sie versuchen, Push zu erzwingen, um einen weiteren Build auszulösen.

Wenn Sie einen dedizierten Ordner für die endgültige Website verwenden, beispielsweise einen publicOrdner, können Sie versuchen, Ihren Ordner neu zu erstellen und den Ordner zu Ihren festgeschriebenen Änderungen hinzuzufügen. Danach müssen Sie diese Datei in Ihren gh-pagesZweig aufteilen und sie zwingen, einen weiteren Build auszulösen, auch wenn sich die Dateien überhaupt nicht geändert haben. Der Rest des folgenden Codes entfernt lediglich die Commits für den publicOrdner und entfernt ihn aus dem lokalen Dateisystem.

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

Tipps

Wenn nicht festgeschriebene Änderungen nicht Teil der endgültigen Site sind, können Sie sie mit dem folgenden Befehl speichern.

git stash

Führen Sie dann den obigen Befehl aus, um den Jekyll-Build manuell zu erzwingen und zu entstauen.

git stash pop

Verweise

Amin NAIRI
quelle