当前位置: 首页 > news >正文

flow.ci + Github + Slack 一步步搭建 Python 自动化持续集成

理想的程序员必须懒惰,永远追随自动化法则。Automating shapes smarter future.

在一个 Python 项目的开发过程中可能会做的事情:编译、手动或自动化测试、部署环境配置等。这些操作是重复而枯燥的,如果是人工来一项一项做,会浪费大量时间,需要有一个高效的工具来帮我们完成。

这篇文章中我们用可执行的步骤告诉大家,如何用 flow.ci 从 GitHub 到 Slack 搭建简单的 Python 自动化持续集成。

了解 flow.ci

flow.ci 是融入了 workflow 机制的持续集成(CI)服务,也可以理解为自动化流程平台,除了集成代码、编译、测试之外,还可以集成常用的工具、灵活自定义流程。1 分钟即可完成开发测试环境搭建,开启第一个 Build。

在 flow.ci,我们把项目的开发工作流称为 flow ,每个 flow 由触发器插件构成。系统根据不同的语言和环境提供对应的 flow 模版,触发器和插件。Flow 的自定义非常简单,只需要 One-Click 即可添加你需要的插件。它可能是一个代码静态分析检测工具(比如 Eslint),可能是一个数据库(比如 Mysql/MongoDB/Redis),也可能是一个消息通知插件(比如 邮件/Slack)等。

更专注于代码,其他的琐事交给 flow.ci 自动化完成吧 :)

一步步搭建 Python 自动化持续集成

首先,开始创建项目:

1.创建项目

28d7095d579a5860e1e1babc28d7c.png

2.关联代码仓库

e989cd4e20ef01ba9dfe64ab70f58.png

3.选择要集成的项目

c25a59dfb1e4027c4611610fe190c.png

4.开始你的第一个 Flow

c8bd3ddce4c8fd58ef918fe786741.png

5.选择项目语言

954610c657174e22d2deca981a16d.png

选择项目语言 Python ,可以看到默认的 flow 模板 ,包括 Intialize - MySQL Database - Git Clone - Cache - Install - Test 的流程。

6.选择语言版本,单击创建项目

3030d3feb3eada2532b8317b0f17a.png
选择项目语言的版本,除了 Python 外,flow.ci 提供 Node.js , Ruby , PHP , Java for Android 的多语言、多版本的开发测试环境。

后续会支持更多语言。

7.点击“+”添加插件,自定义 flow

d66d9f28eab0b0fe9017353fb0356.png
在环境和语言等初始配置完成后,flow.ci 会提供一套 基本 flow 模版,内含通用流程插件和流程触发设置。如果你有定制化的需求,点击图中“+”或者“删除”“编辑”,实时设置就可以。

8.在插件列表中搜索 Slack 插件,并进行设置

a3b279df492814d33b79f6adf37b1.png

30aef7c1474f6ff515b6645b22eb7.jpg

到这里,点击 slack notification 插件,输入 Slack Webhook 地址,就可以实时接收上线的任何消息通知。除了 Slack 等团队沟通插件,你还可以自由添加更多的插件。

9.Bingo!你的 Flow 已准备就绪。现在,提交代码开始 Build。

903518a78fcd59d129e2092c37edb.jpg

实现这套自动化流程之后,只需要开发新功能,提交代码即可。图为跑完整个持续集成流程,健康的项目状态。


繁琐可循的任务就应该工具化自动化,这是程序员们的不懈追求。如果你也想快速搭建 Python 项目的自动化持续集成,来 http://flow.ci 首页提交申请,邀请码随后会发送到邮箱。

期待你的反馈。

Happy Building!

flow.ci team

转载于:https://www.cnblogs.com/fir-im/p/5652948.html

相关文章:

  • pct xcode7
  • 高并发性能调试经验分享
  • java中String类、StringBuilder类和StringBuffer类详解
  • 如何确认软件测试结束的呢?
  • SpringMVC(一)
  • 【转】web移动端一些常用知识
  • CSS Hack是什么意思
  • c++中while(cinstr)和ctrl z的相关问题探讨
  • 机器学习学习笔记1
  • $.ajax()方法详解
  • 【C语言入门教程】7.4 共用体
  • Android Snackbar
  • Eclipse代码自动提示设置
  • php代码审计--sql注入
  • Android开发技术周报 Issue#89
  • 2019.2.20 c++ 知识梳理
  • 345-反转字符串中的元音字母
  • angular2开源库收集
  • Angular数据绑定机制
  • ComponentOne 2017 V2版本正式发布
  • css属性的继承、初识值、计算值、当前值、应用值
  • Elasticsearch 参考指南(升级前重新索引)
  • HTTP--网络协议分层,http历史(二)
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • Python打包系统简单入门
  • SpiderData 2019年2月16日 DApp数据排行榜
  • SpiderData 2019年2月23日 DApp数据排行榜
  • SpingCloudBus整合RabbitMQ
  • Spring声明式事务管理之一:五大属性分析
  • tensorflow学习笔记3——MNIST应用篇
  • webpack入门学习手记(二)
  • Yii源码解读-服务定位器(Service Locator)
  • 大快搜索数据爬虫技术实例安装教学篇
  • 前端性能优化--懒加载和预加载
  • 深入浅出Node.js
  • 使用 @font-face
  • 微信小程序填坑清单
  • 新版博客前端前瞻
  • 学习Vue.js的五个小例子
  • HanLP分词命名实体提取详解
  • 摩拜创始人胡玮炜也彻底离开了,共享单车行业还有未来吗? ...
  • ​DB-Engines 11月数据库排名:PostgreSQL坐稳同期涨幅榜冠军宝座
  • #pragma 指令
  • (1) caustics\
  • (4)通过调用hadoop的java api实现本地文件上传到hadoop文件系统上
  • (超简单)使用vuepress搭建自己的博客并部署到github pages上
  • (附源码)springboot车辆管理系统 毕业设计 031034
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理 第13章 项目资源管理(七)
  • (转)JVM内存分配 -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=512m
  • *++p:p先自+,然后*p,最终为3 ++*p:先*p,即arr[0]=1,然后再++,最终为2 *p++:值为arr[0],即1,该语句执行完毕后,p指向arr[1]
  • .NET Core MongoDB数据仓储和工作单元模式封装
  • .NET Core 中的路径问题
  • .net MySql
  • .NET开发不可不知、不可不用的辅助类(一)