【问题标题】:How to force GitHub Pages build?如何强制 GitHub Pages 构建?
【发布时间】:2014-07-28 17:24:07
【问题描述】:

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

【问题讨论】:

  • 也许这符合他们的缓存政策? (stackoverflow.com/a/13106972/6309)
  • 其实你可以联系 GitHub 支持进行确认,然后在这里发布答案。这可以帮助其他人。
  • 根据documentation,github 页面限制为每小时 10 次构建。根据我的经验,如果您超出限制,即使您推送新的提交,也不会触发新的构建。

标签: github-pages


【解决方案1】:

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

如果不将提交推送到适当的分支,目前无法手动触发重建。


编辑:

正如 Andy 在 cmets 中指出的,您可以使用以下命令推送一个空提交:

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

编辑 2:

感谢 GitHub Actions,触发每日发布相当容易:https://stackoverflow.com/a/61706020/4548500

【讨论】:

  • 如果你像我一样幸运,还请检查 Github 状态,因为它们可能已关闭或后台作业/构建有问题。
  • tl,dr git log
【解决方案2】:

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

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

  • 按照官方帮助here创建个人访问令牌。基本上,您必须登录您的 GitHub 帐户并访问:Settings &gt; Developer settings &gt; Personal access tokens &gt; 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 子系统(如果尚未完成)。关注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 的官方文档。

【讨论】:

  • 非常感谢! GH docs 不清楚页面需要哪些权限才能触发构建,因此您的回复很有帮助。干杯o/
【解决方案3】:

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

【讨论】:

  • USER_TOKEN 不是被添加到构建分支吗? ,它会在我使用 react 应用程序构建时自动删除,因为它在 gh-pages 分支中添加了静态卡盘 js
【解决方案4】:

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

1 - 构建

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

2 - 缓存问题

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

【讨论】:

    【解决方案5】:

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

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

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

    标签 (,) 中有一个额外的逗号,导致此问题

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

    【讨论】:

      【解决方案6】:

      空提交对我不起作用,但根据@benett 的回答,这对我有用:

      打开 Postman,使用以下 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" }。也许是因为我的仓库是私有的?
      • 我有同样的消息“未找到”问题,但我的仓库是公开的。
      【解决方案7】:

      这在 GitHub API 的 v3 中是可行的,尽管它目前处于预览阶段 https://developer.github.com/v3/repos/pages/#request-a-page-build

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

      【讨论】:

        【解决方案8】:

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

        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

        【讨论】:

          【解决方案9】:

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

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

          【讨论】:

            【解决方案10】:

            替代解决方案

            您可能收到了一封来自 GitHub 的电子邮件,告诉您当您将 Jekyll 推送到您的 gh-pages 时,Jekyll 未能成功构建您的网站。如果是这种情况,您可以尝试强制推送以触发另一个构建。

            如果您为最终网站使用专用文件夹,比如说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
            

            参考文献

            【讨论】:

              猜你喜欢
              • 2018-04-29
              • 2017-11-08
              • 2015-03-12
              • 1970-01-01
              • 2018-11-25
              • 2019-07-11
              • 1970-01-01
              • 1970-01-01
              • 2023-01-14
              相关资源
              最近更新 更多