使用 Travis CI 自动部署 Hexo

2021-11-26 15:00:43 浏览数 (1)

Travis CI

Travis CI 是一个持续集成的平台,我们可以使用其自动构建部署的功能帮我们简化 Hexo 博客的部署流程。

为什么要用 Travis CI

因为懒。

Hexo 部署 Blog 到 GitPage 通常需要三部曲:

代码语言:javascript复制
$ hexo clean
$ hexo g
$ hexo deploy

很简单吧,但是如果是一个新的环境,你需要安装一大堆工具和依赖,比如要装 Node,要装 Hexo,还有 package.json 里面的各种依赖,虽然 Npm 提供了强大的包管理功能,但是有时候就是不方便。

使用 Travis,你只需要本地有一个 git 就可以了。

每当你 Push 一个 commit 到 Github 时,Travis CI 会检测到你的提交,并根据配置文件自动运行一些命令,通常这些命令用于测试,构建等等。

那么在我们的需求下,就可以用它运行一些 hexo deploy -g 之类的命令用来自动生成、部署我们的网站。

使用方法

使用 Travis 构建 Hexo 只需要三步:

  1. 登录 Travis,配置仓库
  2. 在 Travis CI 配置 GitHub 的 Access Token
  3. Blog 根目录下配置 .travis.yml

配置 Travis 仓库

首先使用 GitHub 账号登录Travis CI,登录后会进入如下页面

点击「My Repositories」后面的 ,添加要自动构建的仓库

这里会显示你 GitHub 下所有的项目,选中博客仓库,我的博客在GitHub上的仓库名字就叫做 Blog。然后点击仓库名进入仓库配置页面。

选择 Settings,配置选择如下:

  • Build only if .travis.yml is present:是只有在 .travis.yml 文件中配置的分支改变了才构建
  • Build pushes:当推送完这个分支后开始构建

这个时候,我们已经开启要构建的仓库,但是如何将构建完成后的文件推送到 Github 上呢?

GitHub Access Token

Github 支持一种特殊的 URL 来执行 push/pull 等等操作,而不需要输入用户名密码。但这需要事先在 Github 上创建一个 token。

首先去 GitHub Settings 页面选择 Personal access tokens,如果你已经登录了,点击链接进去即可。

选择 Generate new token,配置如下:

点击绿色确认按钮,copy 刚刚生成的 token。回到 Travis Settings 页面,将复制的 token 加入到环境变量,并命名为 GitHub_token

.travis.yml

上述步骤完成后,只需要在你 Blog 源代码的根目录下增加一个 .travis.yml 文件, 我的文件内容如下:

代码语言:javascript复制
language: node_js
node_js: stable

install:
  - npm install

script:
  - hexo clean
  - hexo g

after_script:
  - cd ./public
  - git init
  - git config user.name "YOUR GITHUB USER NAME"
  - git config user.email "YOUR GITHUB EMAIL"
  - git add .
  - git commit -m "Update"
  - git push --force --quiet "https://${GitHub_token}@${GH_REF}" master:master

branches:
  only:
    - master
env:
 global:
   - GH_REF: github.com/Leo555/Leo555.github.io.git

将上面的 name 和 email 还有 GH_REF 修改成你自己的。

这里用 Linux 环境变量的引用方式将 GH_REF 和 GitHub_token 其引入 git push 的 url,因此 push 方法就能通过 GitHub OAuth 授权,完成自动 push 的功能。

此时就万事俱备了。

测试

使用 Hexo 创建新的 Blog 文件,然后 push 到 GitHub 上。

代码语言:javascript复制
$ hexo new test.md
$ git add .
$ git commit -m "add new post test"
$ git push origin master

然后回到 Travis 主页面,发现部署已经开始了

在下面的 log 中可以看到部署的详细情况。

包括 nvm installnpm installhexo g 等命令都在这里执行。

总结

有了自动部署的功能,从此以后就可以将关注点集中在博客内容上,换了平台和环境也没有任何影响。

0 人点赞