Як змусити створювати сторінки GitHub?


109

Кожен сховище GitHub може мати ( або бути ) веб-сайт GitHub Pages , який можна створити за допомогою Jekyll. GitHub створює сайт щоразу, коли ви натискаєте нову команду.
Чи є спосіб змусити оновити веб-сайт Github Pages, не натискаючи на новий комітет?


Можливо, це відповідає їх політиці кешування? ( Stackoverflow.com/a/13106972/6309 )
VonC

2
Насправді ви можете звернутися до служби підтримки GitHub для підтвердження та опублікувати відповідь тут. Це може допомогти іншим.
VonC

1
Згідно з документацією , сторінки github мають обмеження до 10 складання на годину. На мій досвід, якщо ви перейдете ліміт, нове складання не спрацьовує, навіть якщо ви натиснете нову команду.
Якуб Кукул

Відповіді:


151

З підтримки GitHub, 2014-06-07:

Наразі неможливо вручну запустити перебудову, не підштовхуючи комісію до відповідної гілки.


Редагувати:

Як Енді зазначив у коментарях, ви можете натиснути порожню команду командою:

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

Редагувати 2:

Завдяки GitHub Actions досить просто запустити щоденну публікацію: https://stackoverflow.com/a/61706020/4548500 .


3
Якщо вам пощастило, як я, також перевірте стан Github, оскільки вони можуть бути вичерпані або мати проблеми з фоновими завданнями / збірками.
f01

tl, drgit log
nilon

20

Якщо ви хочете швидке рішення сценарію, ось воно. Виконайте такі завдання лише один раз і запускайте сценарій, коли ви хочете відновити сторінку GitHub.

1. Створіть персональний маркер доступу для командного рядка:

  • Дотримуйтесь офіційної допомоги тут, щоб створити особистий маркер доступу. По суті, ви повинні увійти у свій обліковий запис GitHub і перейти до:Settings > Developer settings > Personal access tokens > Generate new token .
  • Поставте галочку repo галочку.
  • Скопіюйте маркер.

2. Створіть такий сценарій:

  • Створіть файл під назвою RebuildPage.shта додайте рядки:

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

    Ось

    • Замініть yourname своє ім’я користувача GitHub.
    • Замініть yourtoken скопійований особистий маркер доступу.
    • Замініть yourrepoназви вашого сховища.

3. Запустіть сценарій:

  • Якщо ви використовуєте Windows 10:

    • Потрібно налаштувати підсистему Windows для Linux , якщо це ще не зроблено. Дотримуйтесь цього щоб зробити.
    • Видаліть перший #!/bin/bashсценарій ( ) зі сценарію та збережіть його як RebuildPage.bat. (тобто замінити .shна.bat ім'ям файлу сценарію)
    • Альтернатива вищевказаному: Щоб отримати функцію подвійного клацання для запуску .shфайлу:

      • Встановіть bash.exeпрограму за замовчуванням для.sh файлів.
      • Відкрийте regedit.exeта відредагуйте HKEY_CLASSES_ROOT\Applications\bash.exe\shell\open\command. Встановіть (Default)значення:

        "C:\Windows\System32\bash.exe" -c " \"./$(grep -oE '[^\\]+$' <<< '%L')\";"
        
    • Тепер двічі клацніть сценарій, якщо ви хочете відновити сторінку GitHub. Готово!

  • Якщо ви використовуєте Linux / Mac, запуск сценарію такий же, як і інші сценарії. Готово!

Додаткові примітки до рішення:

Це рішення використовує API GitHub REST API v3. Ось офіційна документація для API.


7

У мене ця проблема була деякий час, і натискання на майстер відділення нічого не змінило з myapp.github.ioдвох причин:

1 - Побудувати

Скільки б разів я не намагався підштовхнути свою роботу до майстра, будівництво не розпочнеться. Я знайшов вирішення, змінивши мій файл в інтернет-редакторі Github (відкрийте свій index.html і відредагуйте його на веб-сайті Github, а потім виконайте введення)

2 - Питання кешування

Навіть після успішної збірки я все одно побачив би таку саму сторінку myapp.github.io, і важке перезавантаження з цим Ctrl + Shift + Rне вирішило б. Натомість, якщо ви користуєтеся Chrome, перегляньте свою сторінку, Applicationперейдіть на вкладку, виберіть "Очистити сховище" у лівому меню та натисніть "Очистити дані про сайт" у нижній частині меню.


6

Тепер, коли доступні дії GitHub, це потрібно:

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

Зразок репо, який робить це: https://github.com/SUPERCILEX/personal-website/action

API сторінок: https://developer.github.com/v3/repos/pages/#request-a-page-build


5

Навіть після того, як я змінив свої зміни до сховища GitHub, я сьогодні не зміг побачити зміни. Потім я перевірив параметри мого сховища для отримання додаткової інформації, там я міг бачити, що всі ці часи збірка виходила з ладу, і це було причиною того, що я не зміг побачити зміни.

введіть тут опис зображення

Можливо, ви побачите повідомлення, що "На вашому веб-сайті виникають проблеми зі створенням. Неможливо створити сторінку. Повторіть спробу пізніше".

Тоді я перевіряв свої останні зобов’язання і намагався з’ясувати, що викликає це питання. Наприкінці мені вдалося виправити проблему.

введіть тут опис зображення

У тегах (,) була додаткова кома, яка спричинила цю проблему .

введіть тут опис зображення

Ви не отримаєте відповідних повідомлень про помилки, якщо у вашому .md-файлі є якісь проблеми. Рекомендую перевірити стан збірки та порівняти зміни, якщо ви стикаєтесь з тією ж проблемою.


4

Порожня комісія не працювала для мене, але на основі @benett відповіді це працювало для мене:

Відкрийте листоношу, створіть новий запит за цією URL-адресою: https://api.github.com/repos/ evidenceuser_nameSense/ evidencerepo_nameSense/pages/builds (замініть своє ім’я та репо) та виберіть метод POST.

Перш ніж запустити його, перейдіть на headersвкладку та додайте новий ключ Acceptзі значеннямapplication/vnd.github.mister-fantastic-preview+json

Тепер ви можете запустити його та знову відвідати свої сторінки.


Це не працює для мене, я розумію { "message": "Not Found", "documentation_url": "https://developer.github.com/v3/repos/pages/#request-a-page-build" }. Може, тому, що моє репо є приватним?
Coburn


0

Альтернативне рішення

Можливо, ви отримали електронний лист від GitHub, який повідомляє вам, що Джекіллу не вдалося створити ваш сайт, коли ви пересунули його на свій gh-pages . Якщо це так, ви можете спробувати натиснути, щоб викликати іншу збірку.

Якщо ви використовуєте виділену папку для остаточного веб-сайту, скажімо, publicпапку, ви можете спробувати відновити свою папку та додати папку до внесених змін. Після цього вам потрібно буде розділити ці файли на вашу gh-pagesгілку і змусити їх запустити іншу збірку, навіть якщо файли взагалі не змінилися. Інша частина наведеного нижче коду просто видаляє коміти дляpublic папки для зручності та видаляє її з локальної файлової системи.

Код

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

Поради

Якщо є незмінні зміни, які не є частиною остаточного сайту, ви можете їх сховати за допомогою наступної команди.

git stash

Потім виконайте вищевказану команду, щоб вручну змусити побудувати Jekyll і видалити їх.

git stash pop

Список літератури

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.