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


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

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

# 添加 Token

首先去 Coding 添加 Token

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

    <br>
  2. 访问令牌 - 新建令牌

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

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

# 安装 Now CLI

h
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

s 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
请按照注释自行修改相关配置。

s 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

s package.json
"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 登录后导入仓库文件。

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

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

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

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

Finish.Enjoy it.

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