默认情况下,GitHub Pages 使用 Jekyll(一种基于 ruby 的静态站点生成器),但您也可以发布任何生成的文件,前提是您index.html
在分支的根目录中有一个名为
gh-pages
,main
或master
. 此外,您可以从docs
存储库中的目录发布。该分支名称也可以在存储库的设置中手动更改。<username>.github.io
要在或
上提供站点<organization>.github.io
,您必须将存储库命名为<username>.github.io
or
<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 Actions在 Github-Pages 上部署 Zola-Page 非常简单。你基本上需要三样东西:
让我们从令牌开始。请记住,如果您在同一存储库上发布站点,则无需执行该步骤。但是您仍然需要按此处GITHUB_TOKEN
所述自动传递。
要创建令牌,请单击此处或转到设置 > 开发人员设置 > 个人访问令牌。在Select Scopes部分下,为其授予public_repo权限并单击Generate token。然后复制令牌,导航到您的存储库并在“设置”选项卡中添加“秘密” TOKEN
并将您的令牌粘贴到其中。
接下来我们需要创建Github Action。在这里我们可以使用zola-deploy-action。转到存储库的“操作”选项卡,单击自己设置工作流程以获取空白工作流程文件。将以下脚本复制到其中,然后提交;请注意,您可能需要将github.ref
分支从更改main
为master
或类似,因为该操作只会针对您选择的分支运行。
# 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
通过替换您的用户名或组织。
或者,您可以使用Travis CI自动发布站点。如果您尚未使用 Travis,则需要使用 GitHub OAuth 登录并为存储库激活 Travis。不要忘记检查您的存储库是否允许在其设置中使用 GitHub Pages。
根据您添加主题的方式,Travis 可能不知道如何访问它。确保它可以完全访问主题的最佳方法是使用 git 子模块。执行此操作时,请确保您使用的是https
URL 的版本。
$ git submodule add {THEME_URL} themes/{THEME_NAME}
在推送任何内容之前,Travis 需要一个 Github 私有访问密钥来对您的存储库进行更改。如果您已经登录到您的帐户,只需单击此处转到您的代币页面。否则,导航至Settings > Developer Settings > Personal Access Tokens
。生成一个新令牌并为其提供您想要的任何描述。在“选择范围”部分下,为其授予回购权限。单击“生成令牌”以完成。
您的令牌现在将可见。将其复制到剪贴板,然后返回 Travis。进入 Travis 后,单击您的项目,然后导航至“设置”。向下滚动到“环境变量”并输入GH_TOKEN
带有访问令牌值的名称。确保“在生成日志中显示值”已关闭,然后单击添加。现在 Travis 可以访问您的存储库。
我们快完成了。我们只需要 .travis.yml 文件中的一些脚本来告诉 Travis 要做什么。
注意:下面的脚本假定我们从分支中获取代码,并将生成要在同一存储库的分支code
中发布的 HTML 。master
您可以为 Markdown 文件自由使用任何其他分支,但如果您想使用<username>.github.io
or <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/