博客迁移之语雀

发布 : 2099-01-15 分类 : 教程 浏览 :

搞了一天多,终于折腾成功了。在看作者github的时候发现ssh在上面,给作者提醒了下,加了微信好友,才知道是17年毕业的。

哎,自惭形秽啊,大佬现在都这么年轻了么。以后前端的路该怎么走啊。

算了不感慨了,总结下吧。

  1. 用语雀发布文章
  2. 语雀触发serveless函数钩子
  3. servelee函数触发Travis自动化构建
  4. travis利用yuque-hexo拉取语雀上面的文章md
  5. 重新hexo g生成文章

哎,丢人。。。

Travis-CI 自动化发布文章

Travis CI是在软件开发领域中的一个在线的,分布式的持续集成服务,用来构建及测试在GitHub托管的代码

本地写完文章 => push github => GitHub触发Travis CI构建 => 执行命令 => 部署 => 完成

https://github.com/settings/tokens 生成github的token,复制到https://www.travis-ci.org/wu529778790/wu529778790.github.io

的setting
CI_TOKEN是github的Token

自动化部署脚本.travis.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
language: node_js
node_js:
- 8.9.0
cache:
directories:
- node_modules
before_install:
- npm install hexo-cli -g
install:
- npm install
script:
- hexo clean
- hexo generate
after_script:
- cd ./public
- git init
- git config user.name "github用户名"
- git config user.email "github邮箱"
- git add .
- git commit -m "TravisCI 自动部署"
# Github Pages
- git push --force --quiet "https://${CI_TOKEN}@${GH_REF}" master:master
# Coding Pages
- git push --force --quiet "https://coding用户名:${CO_TOKEN}@${CO_REF}" master:master

branches:
only:
- indigo 这里替换你要监听的分支

env:
global:
# Github Pages
- GH_REF: github.com/lanpangzhi/lanpangzhi.github.io 这里替换你的github仓库地址
# Coding Pages
- CO_REF: git.coding.net/bule/bule.coding.me.git 这里替换你的coding仓库地址

然后提交github,travis-ci就会自动构建了。 现在写博客只需要两步操作,第一步 hexo new “新的文章”,第二步提交到github。travis-ci会帮你自动部署的。 省去了 hexo clean hexo g -d 的环节。

https://juejin.im/post/5afe61f5f265da0b8d422a3e

yuque-hexo

用yuque-hexo同步文章: https://github.com/x-cold/yuque-hexo

下载npm

1
npm install yuque-hexo --save-dev

修改package.json,增加配置

1
2
3
4
5
6
7
"yuqueConfig": {
"baseUrl": "https://www.yuque.com/api/v2",
"login": "shenzujiudi",
"repo": "blog",
"mdNameFormat": "title",
"postPath": "source/_posts/yuque"
}

增加命令

1
2
3
4
5
6
"scripts": {
"dev": "npm run sync && hexo s",
"sync": "yuque-hexo sync",
"clean:yuque": "yuque-hexo clean",
"deploy": "npm run sync && hexo clean && hexo g -d"
},

serverless

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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
<?php
function main_handler($event, $context) {
// 解析语雀post的数据
$update_title = '';
if($event->body){
$yuque_data= json_decode($event->body);
$update_title .= $yuque_data->data->title;
}
// default params
$repos = '22794509'; // 你的仓库id 或 slug
$token = ''; // 你的登录token
$message = date("Y/m/d").':yuque update:'.$update_title;
$branch = 'hexo';
// post params
$queryString = $event->queryString;
$q_token = $queryString->token ? $queryString->token : $token;
$q_repos = $queryString->repos ? $queryString->repos : $repos;
$q_message = $queryString->message ? $queryString->message : $message;
$q_branch = $queryString->branch ? $queryString->branch : 'hexo';
echo($q_token);
echo('===');
echo ($q_repos);
echo ('===');
echo ($q_message);
echo ('===');
echo ($q_branch);
echo ('===');
//request travis ci
$res_info = triggerTravisCI($q_repos, $q_token, $q_message, $q_branch);

$res_code = 0;
$res_message = '未知';
if($res_info['http_code']){
$res_code = $res_info['http_code'];
switch($res_info['http_code']){
case 200:
case 202:
$res_message = 'success';
break;
default:
$res_message = 'faild';
break;
}
}
$res = array(
'status'=>$res_code,
'message'=>$res_message
);
return $res;
}

/*
* @description travis api , trigger a build
* @param $repos string 仓库ID、slug
* @param $token string 登录验证token
* @param $message string 触发信息
* @param $branch string 分支
* @return $info array 回包信息
*/
function triggerTravisCI ($repos, $token, $message='yuque update', $branch='hexo') {
//初始化
$curl = curl_init();
//设置抓取的url
curl_setopt($curl, CURLOPT_URL, 'https://api.travis-ci.org/repo/'.$repos.'/requests');
//设置获取的信息以文件流的形式返回,而不是直接输出。
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
//设置post方式提交
curl_setopt($curl, CURLOPT_CUSTOMREQUEST, "POST");
//设置post数据
$post_data = json_encode(array(
"request"=> array(
"message"=>$message,
"branch"=>$branch
)
));
$header = array(
'Content-Type: application/json',
'Travis-API-Version: 3',
'Authorization:token '.$token,
'Content-Length:' . strlen($post_data)
);
curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
curl_setopt($curl, CURLOPT_POSTFIELDS, $post_data);
//执行命令
$data = curl_exec($curl);
$info = curl_getinfo($curl);
//关闭URL请求
curl_close($curl);
return $info;
}
?>

https://segmentfault.com/a/1190000017797561

留下足迹

❤(●'◡'●)❤博客已运行❤(●'◡'●)❤