如何强制GitHub Pages构建?


109

每个GitHub存储库都可以拥有或可以是)可以用Jekyll构建的GitHub Pages网站。每次您推送新提交时,GitHub都会构建该站点。
有没有办法在不推动新提交的情况下强制刷新Github Pages网站?


也许这符合他们的缓存策略?(stackoverflow.com/a/13106972/6309
VonC

2
实际上,您可以联系GitHub支持进行确认,然后在此处发布答案。那可以帮助其他人。
VonC 2014年

1
根据文档,github页面每小时的构建数量限制为10个。以我的经验,即使超过限制,即使您推送新的提交,也不会触发新的构建。
雅各布·库库

Answers:


151

来自GitHub支持,2014年6月7日:

当前无法在不将提交推送到适当分支的情况下手动触发重建。


编辑:

正如Andy在注释中指出的那样,您可以使用以下命令来推送空提交:

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 19'Jul

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:

    • 您需要为Linux设置Windows子系统(如果尚未完成)。按照操作。
    • #!/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,则运行脚本与运行其他脚本相同。做完了!

解决方案的其他说明:

该解决方案利用了GitHub REST API v3的API。是API的官方文档。


7

我有一段时间了这个问题,并且推送到master分支上并没有改变任何东西myapp.github.io,有两个原因:

1-建立

无论我尝试将其工作推向master多少次,构建都不会启动。我通过在Github在线编辑器中修改文件找到了一种解决方法(打开index.html并在Github网站上进行编辑,然后提交)

2-缓存问题

即使构建成功后,我仍然会在上看到完全相同的页面myapp.github.io,并且用硬重新加载Ctrl + Shift + R也无法解决它。相反,如果使用的是Chrome,请检查您的页面,进入Application标签,在左侧菜单中选择“清除存储空间”,然后单击菜单底部的“清除站点数据”。


6

现在可以使用GitHub Actions,这很简单:

# 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


5

即使在将更改推送到GitHub存储库后,今天仍然看不到更改。然后,我检查了存储库设置以获取更多信息,在那里,所有这些时间我都可以看到构建失败,这就是我无法看到更改的原因。

在此处输入图片说明

您可能还会看到一条消息“您的站点在构建时出现问题:无法构建页面。请稍后重试。”

然后,我检查了我最近的提交,并试图找出导致此问题的原因。最后,我能够解决此问题。

在此处输入图片说明

标签(,)中还有一个逗号,引起了这个问题

在此处输入图片说明

如果您的.md文件中有任何问题,您将不会收到相关的错误消息。如果您遇到相同的问题,建议您检查构建状态并比较更改。


4

空提交对我不起作用,但是基于@benett答案,这对我有用:

打开邮递员,使用以下URL创建一个新请求:https ://api.github.com/repos/ [user_name] / [repo_name] / pages / builds (用您的名称和repo替换),然后选择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" }。也许因为我的回购是私人的?
科本


0

替代解决方案

您可能已经收到来自GitHub的电子邮件,通知您,当您将Jekyll推送到自己的网站时,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

参考资料

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.