编者按:本文转载自 flow.ci 用户 @LAUERAY ,原文链接 在这里。
认识 flow.ci
之前的一篇博文中曾写过使用 Travis CI
自动部署 Hexo,而这里的 flow.ci 和 Travis CI 其实也差不多的东西 --- 持续集成工具,并且且 flow.ci 被称为国内的 Travis CI,不过目前内测中,相信不久就会正式发布,祝愿它越走越远,超越 Travis CI。
关于 flow.ci 的更多介绍,大家可以去官方博客了解更多,此处引用官网主页对于 flow.ci 的介绍。
融入 Workflow 机制的持续集成,让代码在 Build, Test, Deploy 间轻盈灵动
配置步骤
目前在网上能够找到使用 flow.ci 自动部署 Hexo 的详细教程只有 Juglans' Blog 博客作者的那一篇,但是作者提供的方法中把 id_rsa 私钥文件放在博客源码中,这在 Coding.net 私有库中确实没有问题,但对于我这样同时把源码托管在 GitHub 上的人来说是很危险的(购买了GitHub私有库的小伙伴请自动回避),所以我并没有按照作者的方式配置 flow.ci ,下面是我的详细配置。
注册 flow.ci
这是必要步骤,没有 flow.ci 账号后面的操作是无法进行的,有兴趣的小伙伴可以去 flow.ci 官网申请内测以获取邀请码。
创建项目
在 flow.ci 拉取仓库源码,创建相应的项目进行自动部署,flow.ci 做的很人性化,过程都是傻瓜式操作。具体的按照下面的顺序操作即可:
创建项目 -> 选择代码源 -> 选择用户 -> 选择仓库 -> 创建工作流 -> 选择脚本模板
中间过程很简单,就不一一截图了。
设置触发器
设置自动部署触发器,因为我是把源代码放在放在分支 hexo 中,博客静态文件放在分支 master 中,所以我选设置为 push hexo 时触发。
配置工作流
配置工作流,这里我们把 测试
部分删掉,然后加上 自定义脚本
。
脚本参考代码如下
# 安装Hexo命令行工具
flow_cmd "npm install hexo-cli -g" --echo
# 执行Hexo生成
flow_cmd "hexo clean" --echo
flow_cmd "hexo g" --echo
# 执行Hexo推送,这里没有使用 hexo d,因为没有权限
flow_cmd "cd ./public" --echo
flow_cmd "git init" --echo
flow_cmd "git config user.name "your name" " --echo #修改name
flow_cmd "git config user.email "your email" " --echo #修改email
flow_cmd "git add ." --echo
flow_cmd "git commit -m "site update" " --echo
flow_cmd "git push --force --quiet "git@git.coding.net:your name/reponame.git" master:master" --echo # 修改repo
配置 Token
我们创建项目后,flow.ci 会自动在 Coding.net 中添加部署公钥,但是这个公钥只有只读权限,用于拉取(git clone)仓库代码,并没有推送权限。
所以现在我们把它删除,重新添加这个公钥,并勾选推送功能
,这样这个公钥就拥有了推送回 Coding.net 的权限了,提高了安全性。
测试
配置完后可以手动创建来测试一下是否成功,如不成功可以查看构建日志来查找不成功的原因。
总结
本文介绍了 flow.ci 自动部署 Hexo 的过程,并且不存在私钥原文保存在代码库的安全性问题。这样一来我们就只需要写好博文,向 Coding.net 源码库 git push 剩下的工作就全交给 flow.ci 来完成,并且即便是更换电脑不必像以前还要配置 hexo 。
DONE!