基于Jenkins搭建iOS持续集成开发环境
原创
2017-03-06
关键点
- Jenkins安装及配置
- Pipeline创建及配置
- ruby的版本管理工具rbenv安装
- fastlane安装
- 常见构建问题
- 相关工具及技术网站推荐
CI持续集成
什么是持续集成 ?
持续集成: 是一种软件开发实践,团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每次集成都通过自动化的构建(包括编译,发布,自动化测试)来验证,从而尽快地发现集成错误。团队发现这个过程可以大大减少集成的问题,让团队能够更快的开发内聚的软件。
参考文章:阮一峰日志
Jenkins安装及配置
通过pkg包安装 在 Mac 环境下,我们需要先安装 JDK,然后在 jenkins 的官网 下载最新的 pkg 包,双击安装即可。安装好后在浏览器中输入 localhost:8080 会出现如图则表示安装成功:
通过war包安装 如果Mac/windows上安装了Tomcat 可以直接将war包拷贝到tomcat/webapps,进入到war包所在目录启动Jenkins:
java -jar jenkins.war --httpPort=8080
通过 [homebrew] (http://brew.sh/) 方式安装
brew install jenkins
通过Docker安装
首先在Docker官网下载安装配置Docker, 然后参考此网站介绍在Docker环境下安装Jenkins默认配置 安装好Jenkins后,选择安装推荐的插件即可:
创建登录用户
Manage Jenkins
创建Node节点
分布式构建(在Jenkins的配置中叫做节点),分布式构建能够让同一套代码在不同的环境(如:Windows和Linux系统)中编译、测试等。
Master节点:相当于Server的概念
Slave节点:相当于Agent的概念
更多介绍请查看Jenkins Master/Slave
配置Node时几个重要参数介绍
- Name:节点名称
- Description:节点描述,支持中文
- Remote root directionary:节点的根目录
(注意:如果目录不存在,会自动创建目录。但是必须对该目录有读写权限,否则会报错:hudson.util.IOException2: Failed to copy xxxx)
- Labels:标记(又叫做标签)用来对多节点分组,标记之间用空格分隔.例如'iOSMobile AndrodMobile',将会把一个节点标记上'iOSMobile'和'AndrodMobile'.
- Launch method:运行方式有四个选项。建议选择第1、2种方式配置。详细如下: 【推荐】Launch slave agents on Unix machines via SSH 在Unix(包括Linux)机器上通 过SSH通道连接节点 (适用于Unix和Linux)
Host:节点主机的ip地址
Credentials:凭据(如果为空或者不可选择,请在系统管理→Manage Credentials中配置。
Port:端口默认22
ruby环境安装
在mac上计算机已经安装了ruby,在终端下输入命令:ruby --version
为了能更好的管理ruby版本,我们使用rbenv工具
$ git clone https://github.com/rbenv/rbenv.git ~/.rbenv
$ cd ~/.rbenv && src/configure && make -C src
安装成功后执行 rbenv init
按照终端输出的提示将 eval "$(rbenv init -)"
拷贝到指定文件(注意: 如果你是使用的iterm2 则拷贝至~/.zshrc 否则拷贝至./bash_profile
配置好以后,重新开启一个终端,我们安装ruby 2.4.0版本
$ rbenv install -l # 查看ruby可用版本
$ rbenv install 2.3.0 # 安装ruby2.3.0
$ gem install bundler # 安装ruby gems
$ rbenv rehash # 成功操作后,执行rehash操作
$ rbenv global 2.3.0 # ruby 系统全局环境
$ rbenv local 2.3.0 # ruby 本地环境
$ rbenv shell 2.3.0 # ruby作用于当前终端环境
注意: 由于rbenv可能与另一个ruby环境管理工具rvm发生冲突,可以使用
rvm implode
彻底删除rvm
Pipeline 创建及配置
Pipeline创建
- 设置Pipeline名称
- 选择单线程Pipeline (在现目前项目中创建单线程已能够满足条件,多线程Multibranch Pipeline暂不知如何使用,后续补上)
- 创建Pipeline时,可以根据一个已有的Pipeline创建
Pipeline配置
- General配置
- Build Trggers配置
- Pipeline scripts
配置如下,包含了:- 代码检出
- 单元测试
- 生成测试报告
- 修改版本号
- 功能测试
- 构建
- 发布App
node('Mobile') {stage('SVN Checkout') {checkout([$class: 'SubversionSCM', additionalCredentials: [], excludedCommitMessages: '', excludedRegions: '', excludedRevprop: '', excludedUsers: '', filterChangelog: false, ignoreDirPropChanges: false, includedRegions: '', locations: [[credentialsId: 'sclocman', depthOption: 'infinity', ignoreExternalsOption: true, local: '.', remote: 'svn://svn地址信息']], workspaceUpdater: [$class: 'CheckoutUpdater']])sh "svn upgrade #{HOME}/.JenkinsAgent"} stage('Unit Testing') {dir('./fastlane') {// sh 'source ~/.bash_profile && bundle exec fastlane ios test'}} stage('Generate Test Report') {dir('./fastlane') {// sh 'source ~/.bash_profile && bundle exec fastlane ios test_report'}}stage('Update the Version NO.') {dir('./fastlane') {sh 'source ~/.bash_profile && bundle exec fastlane ios update_version'}} stage('Functional Testing') {dir('./fastlane') {sh 'source ~/.bash_profile && bundle exec fastlane ios function_test'}} stage('Build') {dir('./fastlane') {sh 'source ~/.bash_profile && bundle exec fastlane ios build config:Debug'}} stage('Release Version') {dir('./fastlane') {sh 'source ~/.bash_profile && bundle exec fastlane ios deploy config:Debug' }}
}
fastlane
- fastlane 安装 fastlane - iOS 和 Android 的自动化构建工具
$ xcode-select --install #确保安装了最新的xcode command line tools
$ sudo gem install fastlane -NV # 安装fastlane
- fastlane使用 首先进入你所在工程的目录下,然后执行:
$ fastlane init
按照提示进行即可。成功后你的目录工程下会多出一个fastlane目录,更多fastlane使用请参考。
构建故障排查
- 构建版本error #1
找不到打包的ipa,造成不能上传蒲公英,couldn't open file "/Users/apple/.JenkinsAgent/workspace/locmanYZY-Test/fastlane/fastlane_build/fastlane/result/archive/Debug/ipa/Debug.ipa
原因:未在Pipeline配置打包stage
- 构建版本error #2
打包未签名,Code signing is required for product type 'Application' in SDK 'iOS 10.2
原因:Agent机器为配置对应证书及Profile
- 构建版本error #3
Could not find lane 'ios build_app_for_simulator'. Available lanes: ios test, ios build_ipa, ios build_simulator_app, ios deploy_to_pgyer, ios update_build_number 原因:stage配置执行的lane找不到,直接参考提示修改即可
![](http://upload-images.jianshu.io/upload_images/2010692-84a3e4a957aaaf3a.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
构建版本error #4
Runnning script '[CP] Embed pods Frameworks' 原因:需要证书授权
构建版本error #5
curl error SSLRead
配置curl ssl:
$ php -i |grep "SSL Version" #看看SSL Version的信息SSL Version => SecureTransport// 执行下面命令$ brew tap homebrew/dupes$ brew tap homebrew/versions$ brew tap homebrew/php$ brew install --with-openssl curl$ brew install \--with-apache \--with-homebrew-curl \--with-homebrew-openssl \--without-snmp php55$ php -i | grep "SSL Version" #如果看到以下,则操作成功SSL Version => OpenSSL/1.0.1j``` ![](http://upload-images.jianshu.io/upload_images/2010692-e5e8a70d4f1021ad.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)#### 结后语
- **相关工具推荐*** [iTerm 2](http://www.iterm2.com/downloads.html) 一款可以替代Mac自带终端的软件,为了使其用起来顺手可以参考[Mac配置终端环境 iTerm2 + Zsh + Oh My Zsh + tmux](http://www.tuicool.com/articles/FFN7Vbq)* [PostMan](https://chrome.google.com/webstore/detail/postman/fhbjgbiflinjbdggehcddcbncdddomop?hl=en) 接口测试工具,属于chrome插件,也可以是APP模式,但是需要安装了chrome才能使用* [Atom](https://atom.io/) 用法等参考[Atom中文社区](https://atom-china.org/) ,[知乎](https://www.zhihu.com/question/22867204)上有对此款软件的评价* [Sublime](http://www.sublimetext.com/)* [alfred](https://www.alfredapp.com/) 用了你就知道有多方便,付费版本功能更多,可以自定义overflow- **相关技术网站推荐*** [Thoutworks技术雷达](https://www.thoughtworks.com/radar) 同时可以参考Thoutworks公司[逸言](http://agiledon.github.io/blog/2013/04/17/thoughtworks-developer-reading-radar/)的博客* [infoQ](https://www.infoq.com/) 实践驱动的社区资讯站点,致力于促进软件开发领域知识与创新的传播,包含有:架构、移动、运维、云计算、AI、大数据、容器等技术新闻,有中文版面* 有问题上 [stackoverflow](http://stackoverflow.com)* [ruby](https://ruby-china.org/) 了解学习相关ruby技术* iOS 测试相关技术学习| 技术框架 | 单元测试 | 截屏测试 | 功能测试 ||--------| ------------- |:-------------:| :--------:|| Quick | ✅ Swift(BDD)| ❎ | ❎ || Nimble | ✅ Swift(断言)| ❎ | ❎ || KIWI | ✅ OC(BDD/断言/Mock)| ❎ | ❎ || FBSnapshotTestCase| ❎ | ✅ | ❎ || Calabash | ❎ | ❎ | ✅ || Appium | ❎ | ❎ | ✅ |本文参考了很多blog、github、stackoverflow的文章及问题,感谢作者的分享!特别感谢ThoughtWorks的周教练耐心指导!本文提到的**后续补充问题及深入详解**将会持续更新,也欢迎各位修改文档使其更加丰富细致。
转载于:https://my.oschina.net/u/216465/blog/852573
基于Jenkins搭建iOS持续集成开发环境相关推荐
- 基于 Docker 打造前端持续集成开发环境
知乎: https://zhuanlan.zhihu.com/p/37961402 本文将以一个标准的 Vue 项目为例,完全抛弃传统的前端项目开发部署方式,基于 Docker 容器技术打造一个精简的 ...
- Jenkins搭建Maven项目集成开发环境(源码库 Gitlab)
安装Jenkins 注意:安装路径最好选择没有空格和特殊符号的路径,以避免后面踩坑 附:Jenkins官网下载 配置Jenkins 安装完成后打开浏览器输入http://安装机器IP:8080等待初始 ...
- 构建基于Jenkins + Github的持续集成环境
登录 | 注册 John_cdy的专栏 学无止境 目录视图 摘要视图 订阅 有奖征资源,博文分享有内涵 6月推荐文章汇总 CSDN博文大赛初赛晋级名单公布 关注CSDN社区微信,福利多多 构建基于Je ...
- Linux上快速搭建Jenkins服务器 实现持续集成开发
http://my.oschina.net/long0419/blog/183299 简介: 持续集成是一种软件开发实践,对于提高软件开发效率并保障软件开发质量提供了理论基础.Jenkins 是一个开 ...
- 基于MacOS搭建ESP8266 NodeMCU CP2102开发环境
基于MacOS搭建ESP8266-NodeMCU开发环境 1. 下载.安装驱动 2. Arduino开发环境配置 2.1. 下载.安装Arduino 2.2. 配置Arduino 1. 下载.安装驱动 ...
- VMWare虚拟OSX系统搭建ios、iphone开发环境并成功运行模拟器(2016)
虚拟OSX系统搭建ios.iphone开发环境并成功运行模拟器 搭建ios.iphone开发环境,如果你是土豪,又或者是 愿意砸钱投资.直接买个MacBook就可以了.然后从AppStore下载所需的 ...
- 【Python基础学习一】在OSX系统下搭建Python语言集成开发环境 附激活码
Python是一门简单易学,功能强大的编程语言.它具有高效的高级数据结构和简单而有效的面向对象编程方法.Python优雅的语法和动态类型以及其解释性的性质,使它在许多领域和大多数平台成为编写脚本和快速 ...
- Jenkins 搭建C++持续集成环境
简介 本文主要介绍如何通过 Jenkins 搭建 C++的持续集成环境.最后达到的效果是每天00:00 - 08:00之间构建.测试和打包一次工程. 开发环境为 VS2015,测试工具为 CppUni ...
- 基于Jenkins的嵌入式软件持续集成方法
嵌入式软件就是嵌入在硬件中的操作系统和开发工具软件,它在产业中的关联关系体现为:芯片设计制造→嵌入式系统软件→嵌入式电子设备开发.制造. 嵌入式软件与嵌入式系统是密不可分的,嵌入式系统一般由嵌入式微处 ...
最新文章
- 10张图带你深入理解Docker容器和镜像
- 用户二次登陆,干掉第一次登录的session
- 【OpenJ_Bailian - 2299 】Ultra-QuickSort (归并排序 或 离散化 + 树状数组)
- python 持续集成方案_Jenkins+Python+GitLab持续集成
- 【sql绕过】Bypass waf notepad of def
- MATLAB中按点运算“.* ./”和一般运算的区别
- html5期末考试题答案,HTML5期末考试题型
- JDK 的 ORACLE 官网下载步骤
- web项目01-----项目需求分析,需求文档
- 井下三专两闭锁的内容_三专两闭锁
- aardio - 仿安装界面进行窗口高度调节的方法
- python 股票交易接口 github_GitHub - Higgsbit/vnpy: 基于python的开源交易平台开发框架...
- 好友列表页面java_怎样制作QQ好友列表的界面?
- 数据存储需求多样化加剧,分而治之成大势所趋
- MPC5746C双核启动配置分析
- mysql 查询去除小数点_SQL查询金额去掉小数点后面的零
- Hive管理之Web界面和远程管理
- DDR内存条/内存模块介绍
- [附源码]计算机毕业设计springboot体育馆场地预约管理系统
- MyBatis案例一:员工管理系统