GitHub+ZEIT+Coding持续集成部署Hexo

GitHub托管+ZEIT集成部署+Coding页面分发Hexo


这里说下采用这种方法的原因。


原来想采用Travis CI集成部署的,但发现ZEIT的线路不错,且又想和Coding Pages一起用,所以只通过ZEIT集成部署再推送至Coding,DNS分运营商解析实现速度更快。(说白了就是白折腾)

其实是可以通过Travis CI持续集成直接一键推送Page到ZEIT和Coding的。(

添加Token

首先去Coding添加Token

  1. Coding右上角头像 - 个人设置

  2. 访问令牌 - 新建令牌

  3. 令牌描述(随意)以及仓库控制权限

  4. 记住生成的Token和自己的Token用户名,其中Token只显示一次,以后只能重置Token。

安装Now CLI

1
2
3
npm i -g now
now login
now secrets add secret-name secret-value

其中的secret-name为你的密钥名称(需要记住,可重命名),secret-value为上面所创建的Token

https://zeit.co/docs/v2/serverless-functions/env-and-secrets?query=env#adding-secrets

添加now.js

在根目录创建now.js

now.js
1
2
3
4
5
6
7
8
9
10
11
12
13
{
"version": 2,
"alias": ["www.pearik.com", "wsl.now.sh", "pearik.com"], //添加你的自定义网址,或者在ZEIT - Domains中添加。
"build": {
"env": {
"CODING_TOKEN": "@secret-name" //secret-name填写自己上面设置的的名称。
}
},
"routes": [
{ "handle": "filesystem" },
{ "src": "/(.*)", "status": 404, "dest": "/404.html" } //开启404自定义页面跳转
]
}

安装Shelljs

npm i shelljs --save

添加Coding Pull js

以我的个人设置为例,在根目录创建coding.js
请按照注释自行修改相关配置。

coding.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
var shell = require('shelljs');
var env = process.env.CODING_TOKEN;

//执行npm run build 命令
if (shell.exec('npm run build').code !== 0) {
shell.echo('Error: Git commit failed');
shell.exit(1);
}

shell.cd('public');
shell.exec('git init');
shell.exec("git config --global user.name '[email protected]'"); //Coding用户名(其实就是邮箱.jpg)
shell.exec("git config --global user.email '[email protected]'"); //Coding邮箱
shell.exec('git add .');
shell.exec("git commit -m 'ZEIT CLI Auto Build'"); //git commit 可随意
shell.exec("git remote add origin https://CODING_TOKENNAME:[email protected]_REPO");
shell.exec("git push --force --quiet https://CODING_TOKENNAME:[email protected]_REPO")
//CODING_TOKENNAME替换成你的Coding Token用户名,CODING_REPO替换成你的仓库地址。

如果远程主机的版本比本地版本更新,推送时Git会报错,要求先在本地做git pull合并差异,然后再推送到远程主机。这时,如果你一定要推送,可以使用–force选项。

添加Node Scripts

修改根目录的package.json

package.json
1
2
3
4
"scripts": {
"build": "hexo clean && hexo g",
"deploy": "node ./coding.js"
}

Push源码到GitHub

把hexo源码Push到GitHub仓库

记得.gitignore配置中添加node_modules(逃)

ZEIT导入

  1. https://zeit.co/import/git 登录后导入仓库文件。

  2. 选择你的Hexo源码仓库。

  3. 设置项目名称(注意不能有小数点)。

  4. 设置项目运行目录,默认即可。

  5. 设置Hexo部署命令。
    其中第一项Build Command改成npm run deploy

Finish.Enjoy it.

当GitHub代码有新变动时触发ZEIT自动集成部署,并推送生成的页面到Coding。

GitHub+ZEIT+Coding持续集成部署Hexo

https://blog.wittoy.com/archives/hexo-ci/

作者

Yavin

发布于

2020-03-09

更新于

2020-03-09

许可协议

评论