Как принудительно создать страницы 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 довольно легко запустить ежедневную публикацию: 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/actions

API страниц: https://developer.github.com/v3/repos/pages/#request-a-page-build

SUPERCILEX
источник
5

Даже после того, как я отправил свои изменения в репозиторий GitHub, я не смог их увидеть сегодня. Затем я проверил настройки своего репозитория для получения дополнительной информации, там я мог видеть, все это время сборка давала сбой, и это было причиной, по которой я не мог увидеть изменения.

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

Вы также можете увидеть сообщение: «У вашего сайта проблемы с построением: невозможно создать страницу. Повторите попытку позже».

Затем я проверял свои последние коммиты и пытался выяснить, что вызывает эту проблему. В конце концов я смог исправить проблему.

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

В тегах (,) была дополнительная запятая, что вызывало эту проблему .

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

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

Сибиш Вену
источник
4

Пустая фиксация не сработала для меня, но на основе ответа @benett это сработало для меня:

Откройте Postman, создайте новый запрос с этим URL-адресом: https://api.github.com/repos/[user_namepting/[repo_name ]/ 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, в котором говорилось, что Jekyll не удалось создать ваш сайт, когда вы разместили его на своем 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

Ссылки

Амин НАИРИ
источник