构建iOS持续集成平台(一)自动化构建和依赖管理

2000年Matin Fowler发表文章Continuous Integration【1】;2007年,Paul Duvall, Steve Matyas 和 Andrew Glover合著的《Continuous Integration:Improving Software Quality and Reducing Risk》 【2】出版发行,该书获得了2008年的图灵大奖。持续集成理念经过10多年的发展,已经成为了 业界的标准。在Java, Ruby的世界已经诞生了非常成熟的持续集成工具和实践,而对于iOS领域来说, 因为技术本身相对比较年轻和苹果与生俱来的封闭思想,在持续集成方面的发展相对滞后一些,但是, 随着越来越多的iOS开发者的涌入,以及各个互联网巨头加大对iOS开发的投入,诞生了一大批非常好用 的持续集成工具和服务,本文的目的就是介绍一下如何有效的利用这些类库,服务快速构建一个iOS开发 环境下的持续集成平台。

自动化构建

在MartinFowler的文章[1]中关于自动化的构建定 义如下:

Anyone should be able to bring in a virgin machine, check the sources
out of the repository, issue a single command, and have a running
system on their machine.

因此,自动化构建的的首要前提是有一个支持自动化构建的命令行 工具,可以让开发人员可以通过一个简单的命令运行当前项目。

命令行工具

自动化构 建的命令行工具比持续集成的概念要诞生得早很多,几十年前,Unix世界就已经有了Make,而Java世界 有Ant,Maven,以及当前最流行的Gradle,.Net世界则有Nant和MSBuild。作为以GUI和命令行操作结合 的完美性著称的苹果公司来说,当然也不会忘记为自己的封闭的iOS系统提供开发环境下命令行编译工具 :xcodebuild【3】

xcodebuild

在介绍xcodebuild之前,需要先弄清楚一些在XCode环 境下的一些概念【4】:

Workspace:简单来说,Workspace就是一个容器,在该容器中可以存放多个你创建的Xcode Project , 以及其他的项目中需要使用到的文件。使用Workspace的好处有,1),扩展项目的可视域,即可以在多 个项目之间跳转,重构,一个项目可以使用另一个项目的输出。Workspace会负责各个Project之间提供 各种相互依赖的关系;2),多个项目之间共享Build目录。

Project:指一个项目,该项目会负责管理生成一个或者多个软件产品的全部文件和配置,一个 Project可以包含多个Target。

Target:一个Target是指在一个Project中构建的一个产品,它包含了构建该产品的所有文件,以及 如何构建该产品的配置。

Scheme:一个定义好构建过程的Target成为一个Scheme。可在Scheme中定义的Target的构建过程有: Build/Run/Test/Profile/Analyze/Archive

BuildSetting:配置产品的Build设置,比方说,使用哪个Architectures?使用哪个版本的SDK?。 在Xcode Project中,有Project级别的Build Setting,也有Target级别的Build Setting。Build一个产 品时一定是针对某个Target的,因此,XCode中总是优先选择Target的Build Setting,如果Target没有 配置,则会使用Project的Build Setting。

弄清楚上面的这些概念之后,xcodebuild就很好理解了,官网上对其作用的描述如下:

xcodebuild builds one or more targets contained in an 

Xcode
project, or builds a scheme contained in an Xcode workspace or
Xcode project.

xcodebuild就是用了构建产品的命令行工具,其用法可以归结为3个部分:

可构建的对象

构建行为

一些其他的辅助命令

可以构建的对象有,默认情况下会运行project下的第一个target:

workspace:必须和“-scheme”一起使用,构建该workspace下的一个scheme。

project:当根目录下有多个Project的时候,必须使用“-project”指定project,然后会运行

target:构建某个Target

scheme:和“-workspace”一起使用,指定构建的scheme。

……

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索xcode
, scheme
, gradle
, 命令
, project
, 项目
, xcode7.3
, xcode obje...
, ios 构建版本
, ios 构建版本错误
, target
, 持续集成
, 环信iOS集成
一个
每日构建 持续集成、持续集成构建、开发持续构建集成环境、持续集成 自动化测试、自动化持续集成,以便于您获取更多的相关知识。

时间: 2024-10-02 14:15:51

构建iOS持续集成平台(一)自动化构建和依赖管理的相关文章

构建iOS持续集成平台(二)测试框架

测试框架 有了自动化构建和依赖管理之后,开发者可以很轻松的在命令行构建整个项目,但 是,作为持续集成平台来说,最重要的还是测试,持续集成最大的好处在于能够尽早发现问题,降低解 决问题的成本.而发现问题的手段主要就是测试.在Martin Fowler的Test Pyramid[10]一文中论述了 测试金子塔的概念,测试金字塔的概念来自Mike Cohn,在他的书Succeeding With Agile中有详细描述 :测试金字塔最底层是单元测试,然后是业务逻辑测试,如果更细化一点的话,可以分为把完

构建iOS持续集成平台(三)CI服务器与自动化部署

CI服务器 写到这儿,对于iOS开发者来说,需要准备好: 一个比较容易获取的源代码仓库(包含源代码) 一套自动化构建脚本 一系列围绕构建的可执行测试 接下来就需要一个CI服务器来根据源代码的变更触发构建,监控测试结果.目前,业界比较流行的,支持iOS构建的CI服务器有Travis CI和Jenkins Travis CI Travis CI[20]是一个免费的云服务平台,主要功能就是为开源社区提供免费的CI服务,对于商业用户可以使用Travis Pro版本,其基本上支持所有目前主流的语言,Obj

Jenkins-构建程序的持续集成平台(安装篇)

一.什么是持续集成 1.什么是集成 指的是代码由编译.发布和测试.直到上线的一个过程 2.什么持续集成 高效的.持续性质的不断迭代代码的集成工作 3.如何高效准确的实现持续集成 必不可少的需要一套能自动化.并且可视化的平台来帮助我们. 那么总结来看,Jenkins就是一个可以帮助我们实现持续集成的平台. 二.为什么Jenkins能帮助我们进行持续集成 理由有如下几点: 1.Jenkins是一个开源的.且基于JAVA代码开发的持续集成系统,  因为含有非常丰富的插件支持所以我们可以方便的打通版本库

微服务的持续集成,四步“构建”一个代码世界

本文讲的是微服务的持续集成,四步"构建"一个代码世界,大师Martin Fowler对持续集成是这样定义的:持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成.每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽快地发现集成错误. 今天我们就来聊一聊微服务的持续集成. 目录 一.持续集成之构建 二.持续集成之部署 三.持续集成之测试 四.持续集成之发布 五.总结 一.持续集成之构建 当微服务产生

使用阿里云容器服务Jenkins实现持续集成和Docker镜像构建(updated on 2017.3.3)

持续集成作为敏捷开发重要的一步,其目的在于让产品快速迭代的同时,尽可能保持高质量.每一次代码更新,都要通过自动化测试来检测代码和功能的正确性,只有通过自动测试的代码才能进行后续的交付和部署.本文主要介绍如何将时下最流行的持续集成工具之一的Jenkins结合阿里云容器服务,实现自动测试和镜像构建推送. 接下来的演示是如何通过阿里云容器服务Jenkins实现自动测试和Docker镜像构建,实现高质量的持续集成.具体场景:每次代码提交到GitHub上的nodejs的项目中,阿里云容器服务Jenkins

真正的持续集成:分布式代码仓库和依赖

微服务架构为软件开发带来了极大的灵活性,并加快了交付速度,但同时也带来了依赖管理问题.传统的解决方案虽然能够解决依赖管理问题,但都太极端,顾此失彼.于是,Netflix尝试着寻找自己的解决方案,期待着在整个组织层面做到真正的持续集成.本文内容来自Netflix技术博客,已获得翻译授权,查看英文原文 Towards true continuous integration:distributed repositories and dependencies. 在过去的8年间,Netflix基于AWS构

使用Subversion、Hudson和Eclipse构建持续集成系统的过程

持续集成系统是指持续地编译.测试.检查和部署源代码的系统. Martin Fowler 对持续集成是这样定义的 : 持续集成是一种软件开发实践,团队开发成员经常集成它们的工作,通常每个成员每天可能会发生多次集成.每次集成都通过自动化的构建(包括编译.发布.自动化测试)来验证,从而尽快地发现集成错误.这个过程可以大大减少集成的问题,从而让团队能够更快的开发内聚的软件. 持续集成有以下几个特点和要求: 有统一的源代码库. 开发人员基于同一个源代码库进行开发是进行持续集成的一个前提.为了让持续集成系统

Jenkins+Ant+Jmeter搭建持续集成的接口测试平台

一.什么是接口测试? 接口测试是测试系统组件间接口的一种测试.接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点.测试的重点是要检查数据的交换,传递和控制管理过程,以及系统间的相互逻辑依赖关系等. 接口测试适用于为其他系统提供服务的底层框架系统和中心服务系统,主要测试这些系统对外部提供的接口,验证其正确性和稳定性.接口测试同样适用于一个上层系统中的服务层接口,越往上层,其测试的难度越大. 接口测试实施在多系统多平台的构架下,有着极为高效的成本收益比,接口测试天生为高复杂性的平台

微服务治理实战:服务流的自动化构建与应用

本文根据DBAplus社群第89期线上分享整理而成.   讲师介绍  张真 宜信技术研发中心高级架构师   目前负责金融基础服务.微服务架构演进/计算平台.DevOps平台等. 曾任IBM,负责云计算.应用服务器等,拥有多个国际专利.开源社区活跃贡献者.   主题简介: 服务流及微服务架构下服务流构建的挑战 自动化构建(微)服务流 自动化构建服务流的应用场景   先谈谈这个话题的早期背景,作为一个发展了十年的企业,我们公司内部存在大量的系统,这些系统可能包括多种架构,多种技术栈,它们互相关联,互