如何强制GitHub Pages构建?

时间:2014-06-07 15:35:18

标签: github-pages

每个GitHub存储库都可以haveor be)一个GitHub Pages网站,可以使用Jekyll构建。每次推送新提交时,GitHub都会构建网站 有没有办法在不推送新提交的情况下强制刷新Github Pages网站?

10 个答案:

答案 0 :(得分:126)

来自GitHub支持,2014-06-07:

  

目前无法手动触发重建,无需将提交推送到相应的分支。


编辑:

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

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

答案 1 :(得分:7)

现在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

答案 2 :(得分:6)

一段时间以来,我遇到了这个问题,由于两个原因,推送到master分支并没有改变myapp.github.io上的任何内容:

1-构建

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

2-缓存问题

即使在成功构建之后,我仍然会在myapp.github.io上看到完全相同的页面,并且用Ctrl + Shift + R进行重新加载并不能解决该问题。相反,如果使用Chrome浏览器,则检查您的页面,进入Application标签,在左侧菜单中选择“清除存储”,然后单击菜单底部的“清除站点数据”。

答案 3 :(得分:4)

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

打开邮递员,使用以下URL创建一个新请求:https://api.github.com/repos/[user_name]/[repo_name]/pages/builds(用您的姓名和仓库替换),然后选择POST方法。

在运行它之前,请转到headers标签,并添加一个值为Accept的新密钥application/vnd.github.mister-fantastic-preview+json

现在您可以运行它并再次访问您的页面。

答案 4 :(得分:3)

此功能自GitHub API v3起可行,尽管当前处于预览状态 https://developer.github.com/v3/repos/pages/#request-a-page-build

POST /repos/:owner/:repo/pages/builds

答案 5 :(得分:2)

如果您需要快速的脚本解决方案,请在这里。只需执行以下任务一次,然后在您想要重建GitHub页面时运行脚本。

1。为命令行创建个人访问令牌:

  • 按照官方帮助here创建个人访问令牌。基本上,您必须登录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 -H "Accept: application/vnd.github.mister-fantastic-preview+json"
    

    在这里

    • 用您的GitHub用户名替换yourname
    • 用复制的个人访问令牌替换yourtoken
    • 用您的存储库名称替换yourrepo

3。运行脚本:

  • 如果您使用Windows 10:

    • 您需要设置 Linux的Windows子系统(如果尚未完成)。按照this进行操作。
    • 从脚本中删除第一行(#!/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。 Here是API的官方文档。

答案 6 :(得分:1)

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

enter image description here

您可能还会看到一条消息,提示“您的网站无法构建:无法构建页面。请稍后重试。”

然后,我正在检查我最近的提交,并试图找出导致此问题的原因。最后,我得以解决该问题。

enter image description here

标记(,)中有一个逗号,引起了此问题

enter image description here

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

答案 7 :(得分:1)

我遇到了同样的问题,为了解决这个问题,我开发了一个与调度程序一起使用并支持同时更新多个 gh-pages 的 githu 操作。

https://github.com/marketplace/actions/jekyll-update-github-pages-without-new-commit,操作更新 gh-pages 而不生成新的提交。

name: Update all github pages

on:
  schedule:
    - cron: "30 0 * * *"

jobs:
  github-pages:
    runs-on: ubuntu-latest
    name: Update Github Pages Initiatives
    steps:
    - name: Jekyll update github pages without new commit
      uses: DP6/jekyll-update-pages-action@v1.0.1
      with:
        DEPLOY_TOKEN: ${{ secrets.GH_PAGES_DEPLOY_TOKEN }}
        USER: ${{ secrets.GH_PAGES_USER }}
        FILTER:  'is%3Apublic%20org%3Adp6'

Log action

答案 8 :(得分: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

参考

答案 9 :(得分:0)

即使我的Github Actions显示我的网站已经部署,我也无法刷新。

切换发布源对我有用。我将发布源从母版切换到内容,然后又切换回母版。您可以检查how to change the publishing source of the branch here