GitHub 托管 + ZEIT 集成部署 + Coding 页面分发 Hexo
这里说下采用这种方法的原因。
<br>
原来想采用 Travis CI 集成部署的,但发现 ZEIT 的线路不错,且又想和 Coding Pages 一起用,所以只通过 ZEIT 集成部署再推送至 Coding,DNS 分运营商解析实现速度更快。(说白了就是白折腾)
其实是可以通过 Travis CI 持续集成直接一键推送 Page 到 ZEIT 和 Coding 的。(
# 添加 Token
首先去 Coding 添加 Token
- Coding 右上角头像 - 个人设置
<br> - 访问令牌 - 新建令牌
<br> - 令牌描述(随意)以及仓库控制权限
<br> - 记住生成的 Token 和自己的 Token 用户名,其中 Token 只显示一次,以后只能重置 Token。
# 安装 Now CLI
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
{ | |
"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
请按照注释自行修改相关配置。
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 'admin@pearik.com'"); //Coding 用户名(其实就是邮箱.jpg) | |
shell.exec("git config --global user.email 'admin@pearik.com'"); //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:$CODING_TOKEN@CODING_REPO"); | |
shell.exec("git push --force --quiet https://CODING_TOKENNAME:$CODING_TOKEN@CODING_REPO") | |
//CODING_TOKENNAME 替换成你的 Coding Token 用户名,CODING_REPO 替换成你的仓库地址。 |
如果远程主机的版本比本地版本更新,推送时 Git 会报错,要求先在本地做 git pull 合并差异,然后再推送到远程主机。这时,如果你一定要推送,可以使用 --force 选项。
# 添加 Node Scripts
修改根目录的 package.json
"scripts": { | |
"build": "hexo clean && hexo g", | |
"deploy": "node ./coding.js" | |
} |
# Push 源码到 GitHub
把 hexo 源码 Push 到 GitHub 仓库
记得
.gitignore
配置中添加node_modules
(逃)
# ZEIT 导入
- https://zeit.co/import/git 登录后导入仓库文件。
<br> - 选择你的 Hexo 源码仓库。
<br> - 设置项目名称(注意不能有小数点)。
<br> - 设置项目运行目录,默认即可。
<br> - 设置 Hexo 部署命令。
其中第一项 Build Command 改成npm run deploy
Finish.Enjoy it.
当 GitHub 代码有新变动时触发 ZEIT 自动集成部署,并推送生成的页面到 Coding。