持续集成

缘起

根据破窗效应,软件中的bug越多,就越难将这些累积在一起的bug去除掉。
提高质量的关键是内建质量,根本不让bug产生,那么就需要将bug扼杀在摇篮里,趁着问题和思路还在你脑子里的时候就解决掉问题。

定义

持续集成(Continuous Integration,以下简称CI)是一种软件开发工程实践,可以让团队持续地收到反馈并进行改进,不必等到开发周期后期才寻找和修复缺陷。持续集成倡导团队开发成员必须频密地集成他们的工作,甚至每天都可能发生多次集成。而每次的集成都是通过自动化的构建来验证,包括自动编译、发布和测试,从而尽快地发现集成错误,让团队能够更快的开发出可工作的软件。

继续阅读 More

Docker初探

工作步骤

Docker所用的虚拟镜像的基线版本都是Ubuntu系统。
当运行docker run xxx之后,

  1. Docker客户端连接到Docker守护进程
  2. 如果本地没找到xxx镜像的话,Docker守护进程就从Docker Hub仓库中拉下(pull) xxx镜像
  3. Docker守护进程根据xxx镜像创建一个新的容器(container), 从其中来执行程序并产生输出内容
  4. Docker守护进程将输出内容流到(stream)Docker客户端,然后发送到终端

常用命令

官网入门教程的几个常用命令

docker version
docker search tutorial
docker pull learn/tutorial
docker run learn/tutorial echo "hello world"
docker run learn/tutorial apt-get install -y ping
docker ps -l
docker commit 698 learn/ping
docker run learn/ping ping google.com
docker ps
docker inspect efe
docker images
docker push learn/ping

继续阅读 More

命令行运行iphone模拟器以及单元测试

由于需要搭建持续集成CI平台,因此需要利用命令行进行编译和单元测试。
命令行编译倒是容易,xcodebuild即可。但是如果运行Unit test甚至启动模拟器运行应用程序,成了国内外同行的大问题,苹果还没有来得及开放或者根本不愿意开放命令行,所以只好自己摸索。环境为XCode4.2。工程名为Krowdit.

参考:
https://github.com/hborders/iphonesim/commit/27acdfdf6c900b0e9bbd061f45c904c1d18fd21d#commitcomment-484139
http://blog.carbonfive.com/2011/04/06/running-xcode-4-unit-tests-from-the-command-line/
http://longweekendmobile.com/2011/04/17/xcode4-running-application-tests-from-the-command-line-in-ios/

关于使用Jenkins CI,参见Jenkins CI 连接Mac 电脑失败

继续阅读 More