持续集成

从自动化测试到持续部署,你需要了解这些

拟墨画扇 提交于 2019-11-29 16:04:43
在互联网的产品开发时代,产品迭代越来越频繁,“从功能开发完成直到成功部署”这一阶段被称为软件开发“最后一公里”。很多开发团队也越来越认识到,自动化测试和持续部署可帮助开发团队提高迭代效率和质量。 那么,如何更好地解决“最后一公里”这一问题呢? 一切从自动化测试开始,让自动化测试贯穿在整个项目开发-集成-部署-交付的-开发流程中。 如果你的团队还没有开始自动化测试,推荐从经典的测试金字塔开始。 自动化测试 在这个分层自动化测试金字塔中,Unit 代表单元测试,Service 代表服务集成测试,UI 代表页面级的功能测试。不同的产品层次都需要自动化测试,投入的精力和工作量会有所不同。下面我们仔细看下每个层次的测试: 1.1 Unit 单元测试 “凡是不能量化的工作都是不可考量的” 目前很多公司已经意识到了单元测试的重要性,但国内坚持写单元测试的团队并不多,其中一个难点在于没有考量,没有很好地执行单元测试覆盖率检测。 想想,如果没有单元测试覆盖率检测,单纯的只写单元测试,时间长了也许开发人员会产生惰性,比如:今天任务太紧了,就不写单元测试了,以后再补,反正写不写也没有人知道。引入单元测试覆盖率检测之后,开发人员会更主动地写单元测试,就算补写单元测试也更有成就感。单元测试覆盖率检测有现成的第三方工具,比如 code climate 、 Coveralls 等等

谈谈持续集成,持续交付,持续部署之间的区别

两盒软妹~` 提交于 2019-11-29 16:04:26
经常会听到持续集成,持续交付,持续部署,三者究竟是什么,有何联系和区别呢? 假如把开发工作流程分为以下几个阶段: 编码 -> 构建 -> 集成 -> 测试 -> 交付 -> 部署 正如你在上图中看到,「持续集成(Continuous Integration)」、「持续交付(Continuous Delivery)」和「持续部署(Continuous Deployment)」有着不同的软件自动化交付周期。 持续集成 持续集成是指软件个人研发的部分向软件整体部分交付,频繁进行集成以便更快地发现其中的错误。“持续集成”源自于极限编程(XP),是 XP 最初的 12 种实践之一。 CI 需要具备这些: 全面的自动化测试 。这是实践持续集成&持续部署的基础,同时,选择合适的自动化测试工具也极其重要; 灵活的基础设施 。容器,虚拟机的存在让开发人员和 QA 人员不必再大费周折; 版本控制工具 。如 Git,CVS,SVN 等; 自动化的构建和软件发布流程的工具 ,如 Jenkins, flow.ci ; 反馈机制 。如构建/测试的失败,可以快速地反馈到相关负责人,以尽快解决达到一个更稳定的版本。 持续集成的优点 “快速失败”,在对产品没有风险的情况下进行测试,并快速响应; 最大限度地减少风险,降低修复错误代码的成本; 将重复性的手工流程自动化,让工程师更加专注于代码; 保持频繁部署

Ubuntu快速搭建Jenkins持续集成平台

*爱你&永不变心* 提交于 2019-11-29 15:03:08
【准备】 操作系统:ubuntu-13.10-server-amd64 JAVA版本:server-jre-7u45-linux-x64.tar.gz Jenkins版本:jenkins.war(v1.545) 【步骤】 采用Stand-Alone方式运行Jenkins服务器,该方法使用灵活方便,不需要系统安装JDK,对于喜欢绿色软件的同学会比较倾向于该方式 本次演练示例以Jenkins服务器的运行目录为“/home/CIServer” 1)解压server-jre-7u45-linux-x64.tar.gz到当前目录; 2)拷贝jenkins.war到当前目录; 3)采用Linux的Shell脚本来快速运行Jenkins服务器(下面详细解读); 至此,“/home/CIServer”目录下目前仅存在如下文件: 【关键解读】 该方法的主要知识点在于如何编写快速启动Jenkins服务器的Shell脚本,这里贴出主要实现代码: #!/bin/sh # Startup script for the Jenkins Continuous Integration server # Set Jenkins environment. export JENKINS_BASE=$PWD/.jenkins export JAVA_HOME=$PWD/jdk1.7.0_45 export PATH=

fir.im Weekly

試著忘記壹切 提交于 2019-11-29 14:32:57
一则利好消息, flow.ci 支持 iOS 项目持续集成,想试试的伙伴去 Gitter群 问问。首批尝鲜用户 @阿米amoy 已经用 flow.ci 实现了基本的 iOS 持续集成,并详细记录整个 Build, Test, Deploy 的过程,详情见: flow.ci 初体验!记一次暖心的 iOS 持续集成 除此外,再来看下最近的 iOS/Android 相关的工具、源码分享和技术文章~ 『iOS / Android开发分享 』 ## Dash iOS 版本开源 Dash 是一个免费且开源的 API 文档浏览器,能让你的 iPad 和 iPhone 在脱机的情况下即时访问超过 150 个 API 文档集,Dash 也是一个成功的独立 App。GitHub 地址: Dash-iOS . ## iOS预加载Web页面方案 来自 @戴铭 ** 的分享。 iOS可以预加载多个网址,然后在离线状态去显示那几个网址,看是否完全缓存。可以先下载Demo看看效果,Github地址: STMURLCache . ## Swift3.0语法速查手册 @Dariel在杭州 整理分享了 Swift3.0语法速查手册 ,希望可以给在学和在用 swift 的童鞋做一个参考。GitHub地址: darielchen.github.io 。 基于clang插件的一种iOS包大小瘦身方案 来自 @移动开发前线

fir.im Weekly

雨燕双飞 提交于 2019-11-29 14:29:52
神兽护体,代码无bug。经常看到代码注释的各种形状,这是一种程序员情怀。那么,如何能写出零 Bug 的代码呢,来看看 @码农翻身 的这篇手册—— 零Bug的代码是怎么炼成的 。 写零 Bug 一定少不了代码审查,推荐下 mindwind 的随笔思考 Code Review 程序员的寄望与哀伤 ,是否也说出了你的心声。除此之外, @叶孤城___ 和其他几个伙伴做了 Code Review 的高效专业代码审核服务。 再来看下本期 fir.im Weekly 的其他干货内容。 『 iOS,Android, 前端开发干货分享』 iOS 10 Music 架构解析 @糖炒小虾_txx 在公众号上分享道: “作为一个 iOS / Android 双料开发者,我非常喜欢围观 Android 系统自带的 app 源码,毕竟那是 Google 的工程师认为的最佳实践。而这次我们也能近距离的围观一下 iOS 内置的书写方式,于是这里我们选择了 Music.app 来做小白鼠。 ” 文章 传送门 . JieCaoVideoPlayer —— Android 播放器 SDK @卢_俊 分享了一款 Android 播放器 SDK,JieCaoVideoPlayer,真正实现Android的全屏功能。Github地址: JieCaoVideoPl ayer . Xcode 下编译时间分析工具 来自与

fir.im Weekly

泄露秘密 提交于 2019-11-29 14:28:59
传播学大师麦克卢汉有一个著名理论——「 媒介即讯息,媒介是人的延伸」,在当代,表现更为明显的是「工具即为人的延伸」,工具使人自由。那么,我们究竟需要什么样的工具释放技术生产力?本期 fir.im Weekly 分享下 @赵赛坡 的 iPad 生产力指南 ,精选了 iPad 上大量优秀的生产力应用,11000 字,50 多张插图(动态图),全部在 iPad mini 4 上完成,涉及到六大工作流、40 多款应用的使用教程。十分强大,推荐阅读。 还有一些优秀的 Github 项目、iOS/Android 开发工具、持续集成实践等技术分享 :) 『iOS,Android开发工具&源码分享』 iOS 实现基于 DLNA 的本机图片,视频投屏 @艾力亚尔 整理了关于 iOS 使用 DLNA 投本地图片视频的实现思路和方法。 可结合之前的基于 DLNA 实现 iOS,Android 投屏系列文章来了解 DLNA 投屏协议。详情见 链接 。 客户端动态化系列之——URLRoute 在有限的开发资源下,如何最大程度化地做到端测动态化的方案?来看看 @kuailejim 的整个思路,文章 传送门 。 为 UIAutomation 添加自动化测试标签的探索 @杨萧玉HIT 在微博上分享了iOS 自动化测试生成标签方案的文章,并更新了方案和代码。文章地址在 这里 。 Google TensorFlow

fir.im Weekly

依然范特西╮ 提交于 2019-11-29 11:20:28
2016 年已经过去一半,你在年初制定的成长计划都实现了吗? 学海无涯,技术成长不是一簇而就的事情。本期 fir.im Weekly 推荐 王下邀月熊_Chevalier 的 我的编程之路——知识管理与知识体系 ,适合所有的开发者阅读。 还有作者的关于 2016里一些 Android 最佳实践列表——Opinionated ,其中集成 Medium 上关于最佳实践的 Checklist,并加入了一些个人看法,包涵Language、UI、Network、Storage、DataBase、SysProc、TestRelease等方面,希望对你有用。 再来看下其他干货内容 ~ 『 iOS,Android, 前端开发干货分享』 如何构建Android MVVM应用程序 @Kelin-Hong 的这篇文章将讲述如何通过Data Binding 构建 MVVM 应用框架。并告诉我们什么是MVVM,如何一步一步来设计整个应用程序框架。 文章 传送门 ;源码 地址 . iOS现有项目集成React Native iOS现有项目集成React Native有2种方法: 通过CocoaPods集成React Native 手工集成React Native 作者 huxiaoqiao 通过五步将原有项目成功集成React Native,详情见 这里 。 检查iOS App是否支持IPv6-only

fir.im Weekly

不想你离开。 提交于 2019-11-29 11:20:19
“2016年,当我们迎来了如Xcode 8、Swift 3、SiriKit、Android N、Android Instant Apps、React Native等诸多移动开发技术、开发工具、语言和平台的更新,以及移动直播、VR/AR、人工智能等创新技术时。从开发者角度,我们又需要以及期待什么样的移动开发者大会?” 正如 CSDN移动 所讲,新开发时代技术层出不穷,当下的开发者更期待什么样的技术干货。也许今年的 MDCC 2016移动开发者大会 会给我们更多的答案与惊喜。 本期 fir.im Weekly 一如初衷,为大家带来新鲜有热度的技术分享。欢迎提出意见和建议。 『iOS,Android,前端开发分享』 facebook-sdk-swift Facebook为iOS开发者推出了Swift开发者工具包(SDK),开发者可以通过 Github链接下载 ,将很快推出Swift3的版本。这一开发者工具包包括登陆和分享功能,同时也包含带有分析功能的社交图谱API。 CoreAudio的sample集合 @叶孤城___ 找到所有CoreAudio的sample,分享给大家 Github 地址。 StevenKuo / AudioUnitSample tkzic / audiograph danny-source / SimpleRemoteIO warrenm /

利用Jenkins+Gitlab搭建持续集成(CI)环境

白昼怎懂夜的黑 提交于 2019-11-29 06:18:58
这次实习的任务之一就是搭建一个持续集成(Continuous Integration)环境。 我们选择Jenkins作为持续集成工具,其优点是提供web GUI配置界面,方便配置,还可以安装很多第三方插件(plugin)进行定制与扩展,功能强大。 其次选择Gitlab作为git server。Gitlab的功能和Github差不多,但是是开源的,可以用来搭建私有git server,也提供非常强大的web GUI,比如开发者互相review源代码的时候就会很方便。 本文首先介绍整个系统的结构,然后再一一叙述各个组件的安装及使用方法。 1.系统概览 系统结构如下图所示: 系统的工作流程大概分为以下几步: 1> 开发者将新版本push到git server (Gitlab)。 2> Gitlab随后触发jenkins master结点进行一次build。(通过web hook或者定时检测) 3> jenkins master结点将这个build任务分配给若干个注册的slave结点中的一个,这个slave结点根据一个事先设置好的脚本进行build。这个脚本可以做的事情很多,比如编译,测试,生成测试报告等等。这些原本需要手动完成的任务都可以交给jenkins来做。 4> 我们在build中要进行编译,这里使用了分布式编译器distcc来加快编译速度。 notes

持续集成高级篇之基于win32-openssh搭建jenkins混合集群(一)

六月ゝ 毕业季﹏ 提交于 2019-11-29 05:36:20
系列目录 前面的demo我们使用的都是只有一个windows主节点的的jenkins,实际生产环境中,一个节点往往是不能满足需求的.比如,.net项目要使用windows节点构建,java项目如果部署在linux服务器上往往也需要目标类型的linux节点做为构建节点,开发中使用的jdk版本不同也可能需要不同的构建主机.构建docker镜像往往也需要linux主机(强烈不建议使用docker for windows 进行linux环境的docker构建).本节我们讲解如何搭建一个主节点为windows server主机,从节点同时包含windows server和centos的jenkins集群 需要注意的是,由于windows不支持ssh(至少目前绝大多数线上的windows server主机是这样的),因此windows从节点往往是通过 JNLP 的方式搭建的.而linux则相对较为简单,只需要配置ssh即可. 使用 JNLP 配置从节点虽然也不十分复杂,但是缺点也比较明显.那就是需要在目标主机上启动一个控制台程序,一方面这个程序容易被误关,另一方面如果windows server重启则需要手动把它启动起来,这样极大增加了工作量.如果运维的工作负荷非常高,很可能在一次大规模主机重启后忘记重启一些软件,这样很多错误可能在已经影响使用的情况下才会发现.因此,这里我们探索一种新的方式