GitHub 页面

默认情况下,GitHub Pages 使用 Jekyll(一种基于 ruby​​ 的静态站点生成器),但您也可以发布任何生成的文件,前提是您index.html在分支的根目录中有一个名为 gh-pages,mainmaster. 此外,您可以从docs存储库中的目录发布。该分支名称也可以在存储库的设置中手动更改。<username>.github.io要在或 上提供站点<organization>.github.io,您必须将存储库命名为<username>.github.ioor <organization>.github.io(否则 GitHub 会将存储库名称附加到 URL,例如: <username>.github.io/<repositoryname>.

我们可以使用任何持续集成 (CI) 服务器来构建和部署我们的站点。例如:

git submodule在任何一种情况下,如果您使用包含您的主题,它似乎效果最好,例如:

git submodule add https://github.com/getzola/after-dark.git themes/after-dark

🔗 Github 操作

使用Github Actions在 Github-Pages 上部署 Zola-Page 非常简单。你基本上需要三样东西:

  1. 个人访问令牌,仅当您从另一个仓库发布时,才允许Github 操作推送到您的仓库
  2. 创建Github 操作
  3. 检查存储库设置中的Github Pages部分。

让我们从令牌开始。请记住,如果您在同一存储库上发布站点,则无需执行该步骤。但是您仍然需要按此处GITHUB_TOKEN所述自动传递

要创建令牌,请单击此处或转到设置 > 开发人员设置 > 个人访问令牌。在Select Scopes部分下,为其授予public_repo权限并单击Generate token然后复制令牌,导航到您的存储库并在“设置”选项卡中添加“秘密” TOKEN并将您的令牌粘贴到其中。

接下来我们需要创建Github Action在这里我们可以使用zola-deploy-action转到存储库的“操作”选项卡,单击自己设置工作流程以获取空白工作流程文件。将以下脚本复制到其中,然后提交;请注意,您可能需要将github.ref分支从更改mainmaster或类似,因为该操作只会针对您选择的分支运行。

# On every push this script is executed
on: push
name: Build and deploy GH Pages
jobs:
  build:
    runs-on: ubuntu-latest
    if: github.ref == 'refs/heads/main'
    steps:
      - name: checkout
        uses: actions/checkout@v3.0.0
      - name: build_and_deploy
        uses: shalzz/zola-deploy-action@v0.16.1-1
        env:
          # Target branch
          PAGES_BRANCH: gh-pages
          # Provide personal access token
          TOKEN: ${{ secrets.TOKEN }}
          # Or if publishing to the same repo, use the automatic token
          #TOKEN: ${{ secrets.GITHUB_TOKEN }}

这个脚本非常简单,因为zola-deploy-action会为您做所有事情。您只需要提供一些详细信息。有关更多配置选项,请查看自述文件

通过提交操作,您的第一个构建被触发。等待它完成,然后您应该在您的存储库中看到一个新的分支gh-pages ,其中包含已编译的Zola页面。

最后,我们需要检查存储库设置的Github Pages部分。单击“设置”选项卡并向下滚动到“Github 页面”部分。检查源是否设置为gh-pages分支,目录是否为/ (root)您还应该看到您的Github 页面链接。

您还可以在那里配置自定义域强制 HTTPS模式。在配置自定义域之前,请检查一下

如果您想将站点的源代码保存在私有存储库中(例如,包括草稿帖子),请调整以下内容.github/workflows/main.yml(确保根据需要更新分支):

on: push
jobs:
  build:
    runs-on: ubuntu-latest
    if: github.ref != 'refs/heads/main'
    steps:
      - name: 'checkout'
        uses: actions/checkout@v3.0.0
      - name: 'build'
        uses: shalzz/zola-deploy-action@v0.16.1
        env:
          PAGES_BRANCH: gh-pages
          BUILD_DIR: .
          TOKEN: ${{ secrets.TOKEN }}
          # BUILD_ONLY: true
  build_and_deploy:
    runs-on: ubuntu-latest
    if: github.ref == 'refs/heads/main'
    steps:
      - name: 'checkout'
        uses: actions/checkout@v3.0.0
      - name: 'build and deploy'
        uses: shalzz/zola-deploy-action@v0.16.1
        env:
          PAGES_BRANCH: master
          BUILD_DIR: .
          TOKEN: ${{ secrets.PUBLIC_TOKEN }}
          REPOSITORY: username/username.github.io

通过替换您的用户名或组织。

🔗特拉维斯CI

或者,您可以使用Travis CI自动发布站点。如果您尚未使用 Travis,则需要使用 GitHub OAuth 登录并为存储库激活 Travis。不要忘记检查您的存储库是否允许在其设置中使用 GitHub Pages。

🔗确保 Travis 可以访问您的主题

根据您添加主题的方式,Travis 可能不知道如何访问它。确保它可以完全访问主题的最佳方法是使用 git 子模块。执行此操作时,请确保您使用的是httpsURL 的版本。

$ git submodule add {THEME_URL} themes/{THEME_NAME}

🔗允许 Travis 推送到 GitHub

在推送任何内容之前,Travis 需要一个 Github 私有访问密钥来对您的存储库进行更改。如果您已经登录到您的帐户,只需单击此处转到您的代币页面。否则,导航至Settings > Developer Settings > Personal Access Tokens生成一个新令牌并为其提供您想要的任何描述。在“选择范围”部分下,为其授予回购权限。单击“生成令牌”以完成。

您的令牌现在将可见。将其复制到剪贴板,然后返回 Travis。进入 Travis 后,单击您的项目,然后导航至“设置”。向下滚动到“环境变量”并输入GH_TOKEN带有访问令牌值的名称。确保“在生成日志中显示值”已关闭,然后单击添加。现在 Travis 可以访问您的存储库。

🔗设置 Travis

我们快完成了。我们只需要 .travis.yml 文件中的一些脚本来告诉 Travis 要做什么。

注意:下面的脚本假定我们从分支中获取代码,并将生成要在同一存储库的分支code中发布的 HTML 。master您可以为 Markdown 文件自由使用任何其他分支,但如果您想使用<username>.github.ioor <org>.github.io,目标分支必须master.

language: minimal

before_script:
  # Download and unzip the zola executable
  # Replace the version numbers in the URL by the version you want to use
  - curl -s -L https://github.com/getzola/zola/releases/download/v0.13.0/zola-v0.13.0-x86_64-unknown-linux-gnu.tar.gz | sudo tar xvzf - -C /usr/local/bin

script:
  - zola build

# If you are using a different folder than `public` for the output directory, you will
# need to change the `zola` command and the `ghp-import` path
after_success: |
  [ $TRAVIS_BRANCH = code ] &&
  [ $TRAVIS_PULL_REQUEST = false ] &&
  zola build &&
  sudo pip install ghp-import &&
  ghp-import -n public -b master &&
  git push -fq https://${GH_TOKEN}@github.com/${TRAVIS_REPO_SLUG}.git master

如果您的站点使用自定义域,则需要在ghp-import命令中提及它: ghp-import -c vaporsoft.net -n public例如。

致谢:此页面的 Travis-CI 部分基于文章 https://vaporsoft.net/publishing-gutenberg-to-github/