在 GitHub Actions 上自动部署 Jekyll

GitHub Pages 默认使用 Jekyll 构建站点时,为了提高安全性和简化设置,GitHub做了一些处理,标准流程受到了一些限制。如果想用 GitHub Pages 来托管你的 Jekyll 网站又需要更多的控制权,你可以使用 GitHub Actions。

使用 Actions 的优势

控制 gemset

工作流管理

Workspace 设置

首先需要一个托管在 GitHub 上的 Jekyll 项目。

选择一个现有的 Jekyll 项目,或者按照快速入门指南创建一个新的项目,并将其推送到 GitHub。

接下来,我们将使用一个简单的 Jekyll 站点,该站点最初只包含一个 _config.yml 文件、一个 index.md 页面和一个 Gemfile。文件内容分别如下:

# _config.yml

title: "Jekyll Actions 演示"
---
---

欢迎来到我的主页

{% assign date = '2024-06-20T10:20:00Z' %}

- 原始日期 - {{ date }}
- 使用 timeago filter(过滤器) - {{ date | timeago }}
# Gemfile

source 'https://rubygems.org'

gem "jekyll", "~> 4.2"

group :jekyll_plugins do
  gem "jekyll-timeago", "~> 0.13.1"
end

演示站点使用 Jekyll 4 和一个第三方插件 jekyll-timeago,这两者目前都未被 GitHub Pages 白名单列入使用。 该插件允许我们描述一个日期距离今天有多远。 例如,如果给定日期是 2020-03-23T10:20:00Z,当前日期是 2024-04-13T10:20:00Z,则输出会是 4 years and 3 weeks ago(4 年零 3 周前)。

我们使用的 Action 会负责安装 Ruby gems 和依赖项。这让设置变得简单,但如果你同时提交了 Gemfile.lock 文件,而它是用旧版本的 Bundler 生成的,可能会遇到问题。

设置 Action

  1. 打开你的仓库的 Settings 标签。
    1. Code and automation 下点击 Pages
    2. Build and deployment 下将 SourceDeploy from a branch 改为 GitHub Actions
  2. 打开你的仓库的 Actions 标签。
    1. 开始一个 New workflow,搜索 Jekyll
    2. Jekyll 工作流下点击 Configure(不是 GitHub Pages Jekyll 工作流)。
    3. 检查更改并点击 Commit changes

构建和部署

每次将本地的更改推送到 git 默认分支时,Action 就会被触发并开始构建你的站点。

要查看进度和任何构建错误,可以通过以下方法检查构建状态:

如果一切顺利,所有步骤都会变成绿色,构建的资源将上传到 GitHub Pages。

要查看 实时站点(live site),请打开仓库的 Deployments 标签,点击部署站点的 URL。

当你需要对站点进行进一步 更改(changes) 时,提交到默认分支并推送。工作流将再次构建和部署你的站点。