编者按:感谢 @ 小小小杜 投稿,原文链接Juglans' Blog。如果你也想体验 flow.ci 的自动化持续部署,来 http://flow.ci 首页提交申请,邀请码随后会发送到邮箱:)
flow.ci是一个持续集成(CI)的 saas 服务平台,就是中国的Travis CI,作用是把你 Github 上的代码拉过来,通过容器技术自动化完成代码的构建、测试、交付和部署。整个对 flow.ci 使用下来的感受就是简单,对源码的侵入少,虽然也用了 SPA 页面,但是速度相当让人满意,连 loading 都看不见,很感兴趣用了什么前端框架。
为了表示对 flow.ci 发给我邀请码的感谢,我必须夸一下 flow.ci 的文宣:让你的代码留下来流出来吧(信!达!雅!)。
本文在《随时随地让 Hexo 持续部署》基础上用 flow.ci 对 Daocloud 平台进行替换,基本思路没有改变,跟 Daocloud 的代码构建相比,flow.ci 是更纯粹的持续集成/部署平台,目前宣称 beta 时期免费。
git commit
进行测试.daocloud
目录及其中的id_rsa
私钥文件这一步单列是因为,如果是新项目,就需要增加这个文件,为了在持续集成过程中添加私钥,私钥文件的生成请自己百度。
既然要用 flow.ci 进行集成,自然要关闭 Daocloud 的持续集成功能,如果是新项目请忽略。
Dockerfile
和daocloud.yml
配置文件这一步可选,不删除也不影响部署,但是这两个配置文件并没有起任何作用,如果是新项目请忽略。
这一步很简单,按照 flow.ci 控制台里面的按钮顺着点Create Project->选择CODING代码托管库->选择你的用户->选择你的项目,完成!
这时 CODING 里面的项目会有两处变化:
创建过程给两个界面感受一下就行:
以下都是持续集成项目的配置过程。
进入Get started with flow.ci界面,选择Create your first flow。我们使用的 Hexo 基于 Node.js,因此选择Node.js default template:
选择Versions为v5.2.0->Create。这时会根据选择的模板(上图有)生成相应的工作流。
这是 flow.ci 的核心价值,我们的自动部署就在这里实现。
通过每个工作流节点之间的+
号对模板生成的工作流进行改造,改造后如下:
这里新增了一个Custom Script节点和删除了Test节点。
保持默认即可,初始环境变量(flow.ci 提供)和 Node.js 的组件版本等信息。
保持默认即可,拉去CODING
代码。
保持默认即可,对./node_modules
进行缓存,增加下次集成的速度。
保持默认即可,默认执行npm install
安装依赖项。
我们自己增加的节点(插件),该过程主要完成:
Hexo d
操作的失败修改脚本为:
# 安装Hexo命令行工具
flow_cmd "npm install hexo-cli -g" --echo
# 准备并安装私钥
flow_cmd "cp .daocloud/id_rsa ." --echo
flow_cmd "chmod 600 ./id_rsa" --echo
flow_cmd "eval $(ssh-agent)" --echo
flow_cmd "ssh-add ./id_rsa" --echo
# 执行Hexo生成和发布
flow_cmd "hexo clean" --echo
flow_cmd "hexo g" --echo
flow_cmd "hexo d" --echo
配置触发器为master 分支有提交时,配置信息在介绍工作流的图有。
在项目的 jobs 标签下,点击Start Build按钮->选择对master
分支进行构建,之后会看到整个工作流的执行过程和日志信息(绿色为成功,蓝色为正在执行)。
本文介绍了从 Daocloud 进行持续集成/部署改造为 flow.ci 进行集成/部署的过程,今后的使用和之前的方式一样,向 CODING 源码库提交push
就可以触发自动部署。
和 Daocloud 的代码构建相比,flow.ci 为持续集成/部署优点如下:
但是这种方式仍然存在私钥原文保存在代码库的安全性问题,这也是我的 CODING 代码库仍然保持私有的原因。
Done!
以上是「flow.ci 最佳实践」系列之 @ 小小小杜 的使用分享,希望对你有用。
flow.ci