使用 flow.ci 自动部署 Hexo

编者按:本文转载自 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 拉取仓库源码,创建相应的项目进行自动部署,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)仓库代码,并没有推送权限。

flow.ci

所以现在我们把它删除,重新添加这个公钥,并勾选推送功能,这样这个公钥就拥有了推送回 Coding.net 的权限了,提高了安全性。

coding.net

测试

配置完后可以手动创建来测试一下是否成功,如不成功可以查看构建日志来查找不成功的原因。

手动创建

总结

本文介绍了 flow.ci 自动部署 Hexo 的过程,并且不存在私钥原文保存在代码库的安全性问题。这样一来我们就只需要写好博文,向 Coding.net 源码库 git push 剩下的工作就全交给 flow.ci 来完成,并且即便是更换电脑不必像以前还要配置 hexo 。

DONE!


以上是 「flow.ci 最佳实践」系列之 @LAUERAY 的使用分享,希望对你有用。

flow.ci

Meng

尺度中蕴含本质