以 hexo 为例学习 github 的自动构建功能 actions

简介

GitHub Actions 是一种持续集成和持续交付 (CI/CD) 平台,可用于自动执行生成、测试和部署管道。 你可以创建工作流,以便在推送更改到存储库时运行测试,或将合并的拉取请求部署到生产环境。更多查看官网文档

下面我们将以 hexo 博客的构建示例来说明。

代码集成

首先在项目的根目录下新建目录:.github/workflows

然后在这个新目录中,新建我们的构建配置文件,例如:webpack.yml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
name: NodeJS with Hexo blog

on:
push:
branches: ["master"]
pull_request:
branches: ["master"]

jobs:
build:
runs-on: ubuntu-latest

strategy:
matrix:
node-version: [16.20.2]

steps:
- uses: actions/checkout@v3

- name: Use Node.js ${{ matrix.node-version }}
uses: actions/setup-node@v3
with:
node-version: ${{ matrix.node-version }}

- name: Hexo Setup
run: |
npm i -g hexo-cli

- name: Build
run: |
npm install
npm run build

- name: Upload ftp
uses: sebastianpopp/ftp-action@releases/v2
with:
host: ${{ secrets.FTP_SERVER }}
user: ${{ secrets.FTP_USERNAME }}
password: ${{ secrets.FTP_PASSWORD }}
localDir: "public"

配置解读

可以看到上面定义了一个任务在推送后会被执行。

使用的 nodejs 的版本为:16.20.2

然后后面就是编译的过程,最后使用 sebastianpopp/ftp-action@releases/v2 库,来上传到我们的 web 所在的 FTP 服务器上。

更多的工作流模板,可以查看

github 配置

进入 github 的项目主页,找到 Actions 入口,当推送后,在这里就可以看到具体的任务情况。

github-actions.png

在前面我们的 yml 配置文件中,有一个 FTP 上传的信息,这块是在 github 另外的地方配置的,当前项目>Settings->Secrets and variables->Actions

github-actions2.png

这样,我们就能在每次推送完新提交后,启动自动构建流程,并将构建成功后的内容自动上传到服务器进行部署。