IOS使用jenkins进行持续集成 第一篇

本文主要讲述在开发过程中,提高工作效率而进行的IOS-Jenkins的持续集成。

背景

平时我们开发完成IOS项目,需要打包给测试人员进行测试。其中的过程需要重复进行:修改配置项--编译---连接设备--运行打包--debug进设备中--然后交给等待的测试人员。现有成熟的持续集成Jenkins解决方案,并且该方案也提供了Xcode插件的支持,可以讲上述过程封装成一键解决方案。

我实现的是jenkins执行IOS的job,build工程,签名打ipa包,上传到FTP服务器,放到tomcat下,提供http下载安装app。

过程

1.下载安装jenkins

官网地址:https://wiki.jenkins-ci.org/display/JENKINS/Installing+Jenkins#InstallingJenkins-Unix%2FLinuxInstallation

下载之后,是个war包(后台服务),是要求有jdk的。

然后直接点击jenkins.war即可运行,访问http://localhost:8080/即可

也可通过命令行运行 java -jar jenkins.war --httpPort=8888;http://localhost:8888/

也可以放到tomcat下面。

运行起来后,会在user下创建一个.jenkins目录。

2.增加Xcode插件

在jenkins的系统管理中,找到管理插件,可选插件的tab下搜索xcode,勾选安装,安装插件/升级处等待—jenkins升级到最新版本了,xcode插件更好安装(如果失败请下载最新的jenkjins,或者多尝试几次)。

这样重启jenkins的话,就会在job的构建中下拉选择处看到xcode的支持选项。

3.新建job

新建一个free的job.

4.源码管理

如果使用svn,选择subversion,直接指向地址即可;如果没有使用svn,选择none,则需要先运行下job,这样jenkins的工作目录就创建了一个结果failed的job,目录为.jenkins/jobs/你的job名字/。这时候,job下的目录还有builds,workspace等目录文件,我们需要的就是往workspace中放入我们的代码工程(这是官方的解决方案)。

目录结构见下图。

这样workspace中就有了代码。

5.构建xcode项目

在增加构建步骤下拉中选择xcode。

如上图,简单配置参数,执行项目的target,Configuration为Debug(看情况选择Release),下面还有个Pack application and build .ipa选项,这个我没选。

下面还有个Code signing和钥匙链的选项,可以不填,会自动找默认的(项目中配置的吧,可以在运行时的console中看到执行的日志,输出中会有每一步做什么了)。

在下面还有个xcode的高级参数配置,如图:

scheme配置,以及需要build运行的SDK,这里选择iphoneos(这是要准备在真机上运行),还有构建的输出目录。

在这里说下模拟器的事项,这里不能配置成iphonesimulator,是因为没用,模拟器不能运行起来的,首先苹果unix命令能够启动模拟器,但是没有提供api来命令行方式往模拟器中安装ipa程序并运行(xcodebuild命令没有这个支持),上网找了个解决方案,发现是很久之前的了,4年前的,有个github的提供的插件,但是这个插件工程需要依赖iPhoneSimulatorRemoteClient.framework这个库,而现在的mac都搜不到这个库,所以不能运行,so命令行方式启动模拟器,并安装运行ipa的方式不行了,只能真机方式来了。

运行job,此时应该能出现当前的目录文件,那个ipa还出不来呢。

现在到这,说明jenkins的这个IOS的job已经能够基本ok了。

6.接着我们来实现打包ipa文件

上面那个xcode配置 pack application and build ipa我没选,那个还没搞清楚,它的输出目录上下文变成jenkins了,而实际生成的ipa在xcode的安装目录的很隐蔽的目录,这个暂时没搞清呢。

而我是通过shell来做的,命令行方式。

选择增加构建步骤,点击shell的,然后出现个命令行的输入框,见图。

按照图上的命令,选择sdk 打包app 指定输出目录文件,这样就能在build完成后出现上上图目录结构中的ipa文件,这个就是我们需要的安装程序了,经过签名的能再真机安装的。具体指定增加签名和描述的命令请看xrun的命令说明。

ok,我们已经完成了一大步了。

7.现在我们再来设置上传ftp的功能

mac电脑本身支持ftp服务的,并且发现了一个修改系统的便捷软件,lion tweaks,

找到右侧的ftp,开启即可。

我们需要设置一下jenkins的系统配置--系统管理链接在根路径左侧,点开然后选择系统设置,下来找FTP的配置项,见图:

我设置的自己电脑,所以localhost了。设置ftp的根路径root repository path,填入本机的用户名密码。

如图设置自己job的ftp服务,

见图,设置需要上传的文件以及其相应的目录,现在ipa程序文件的上传,我们需要将build目录生成后的ipa文件上传到ftp服务器的一个目录,我们为了后续通过tomcat服务进行手机下载,所以上传到tomcat的目录下。

上传成功会在tomcat下有此目录结构,见图:

这样我们上传文件到ftp服务器的就实现了。

8.Tomcat服务

然后我们需要设置tomcat服务,以方便手机可通过网页下载并安装我们的应用。

下载tomcat,进入tomcat的bin目录,执行命令,

sh startup.sh

启动tomcat。

新建一个简单的web项目,这个请简单看下web自己实现,然后放到tomcat的webapps下面,修改tomcat的访问端口8088,与jenkins8080冲突,这样我们访问tomcat的时候,

就能访问到我们的项目,http://localhost:8088/hello_jenkins2/index.jsp。

9.下载支持文件

现在说明我们的jenkins的job的ftp其他文件上传是干嘛,ios_down.html是提供一个网页,可以点击一个链接从而下载安装程序到手机。而相对的那个hello_jenkins.plist文件则是支持ipa文件下载到手机的文件。

ios_down的链接协议指向这个plist,

<a href="itms-services://?action=download-manifest&url=http://192.168.200.124:8088/hello_jenkins2/publish/hello_jenkins.plist"><h2>Install</h2></a>

这个hello_jenkins.plist里面说明并指向ipa

内容如下

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">

<plist version="1.0">

<dict>

<key>items</key>

<array>

<dict>

<key>assets</key>

<array>

<dict>

<key>kind</key>

<string>software-package</string>

<key>url</key>

<string>http://192.168.200.124:8088/hello_jenkins2/static/build/Debug-iphoneos/HelloJenkins.ipa</string>

</dict>

</array>

<key>metadata</key>

<dict>

<key>bundle-identifier</key>

<string>com.hai.HelloJenkins</string>

<key>bundle-version</key>

<string>1.0</string>

<key>kind</key>

<string>software</string>

<key>subtitle</key>

<string>HelloJenkins</string>

<key>title</key>

<string>HelloJenkins</string>

</dict>

</dict>

</array>

</dict>

</plist>

这样,浏览网页ios_down.html的时候,点击上面的install标签,则指向hello_jenkins.plist文件,并解析再定位到ipa文件,手机同时提示下载安装hello_jenkins了,下载安装即可。

10.完成

手机访问

http://192.168.200.124:8088/hello_jenkins2/publish/ios_down.html

我的已经安装到手机了,就不发图了。

11.最后注意一些问题

注意路径问题,如果job的ftp文件上传路径,html文件和plist文件的路径有一点不对,都会造成无法访问等下载不了问题。

还要注意安装程序的base sdk与真机的兼容性,否则安不上。

注意ftp的上传目录是基于我们系统设置的用户目录下的。

还有就是如果上传文件的目录没对上,jenkins是不报错的,而输出日志提示not found 文件,所以多看看job的日志。

还有就是有时候plist文件明明是对的但是就是显示无法访问,请试试copy一份别处的plist文件,在修改内容,我的曾经出现过,copy一份就好了。

ps:

网上这方面的不多,自己花时间研究了下,奉献给大家了,还有一些疑点没弄清,后续再补充了。

时间: 2024-12-03 02:52:43

IOS使用jenkins进行持续集成 第一篇的相关文章

IOS使用jenkins进行持续集成 第二篇

上一篇,自己尝试进行持续集成,研究的不深入,这两天,为公司搭建持续集成环境,以及内部发布系统,了解的更多了,所以分享出来. 这篇主要介绍一些其他东西,不重复介绍上一篇的内容. 如果使用jenkins进行ios持续集成,需要xcode插件支持,所以先下载xcode插件,而且后期还要用到ftp服务,也安装ftp的插件. jenkins中可以自己创建特定的视图分组,all视图点击+号就能创建新视图,创建好后,在左侧的编辑视图选项,则会进入详情页,可以选择放入此视图的任务:相对于任务,我觉得最好依据代码

【iOS】Jenkins Gitlab持续集成打包平台搭建

Jenkins Gitlab持续集成打包平台搭建 SkySeraph July. 18th 2016 Email:[email protected] 更多精彩请直接访问SkySeraph个人站点:www.skyseraph.com 1. 相关概念 Jenkins Jenkins,一个用Java编写的开源的持续集成工具,提供了软件开发的持续集成服务,可监控并触发持续重复的工作,具有开源,支持多平台和插件扩展,安装简单,界面化管理等特点.更多介绍参考维基介绍. Gitlab GitLab是一个利用R

IOS使用jenkins进行持续集成2

上一篇,自己尝试进行持续集成,研究的不深入,这两天,为公司搭建持续集成环境,以及内部发布系统,了解的更多了,所以分享出来. 这篇主要介绍一些其他东西,不重复介绍上一篇的内容. 如果使用jenkins进行ios持续集成,需要xcode插件支持,所以先下载xcode插件,而且后期还要用到ftp服务,也安装ftp的插件. jenkins中可以自己创建特定的视图分组,all视图点击+号就能创建新视图,创建好后,在左侧的编辑视图选项,则会进入详情页,可以选择放入此视图的任务:相对于任务,我觉得最好依据代码

IOS使用Jenkins进行持续集成

本文主要讲述在开发过程中,提高工作效率而进行的IOS-Jenkins的持续集成. 背景 平时我们开发完成IOS项目,需要打包给测试人员进行测试.其中的过程需要重复进行:修改配置项--编译---连接设备--运行打包--debug进设备中--然后交给等待的测试人员.现有成熟的持续集成Jenkins解决方案,并且该方案也提供了Xcode插件的支持,可以讲上述过程封装成一键解决方案. 我实现的是jenkins执行IOS的job,build工程,签名打ipa包,上传到FTP服务器,放到tomcat下,提供

用MSBuild和Jenkins搭建持续集成环境(2)

http://www.infoq.com/cn/articles/MSBuild-2 作者 Mustafa Saeed Haji Ali ,译者 李剑 发布于 2012年10月23日 | 注意: 挥一挥衣袖,带走满满干货,关注活动大本营,时不时发福利呦!3 讨论 分享到:微博微信FacebookTwitter有道云笔记邮件分享 稍后阅读 我的阅读清单 这是持续集成系列的下半部分,如果你还没看过上半部分的话,请点击这里:用MSBuild和Jenkins搭建持续集成环境(1). 与Jenkins相会

使用jenkins实现持续集成

一.jenkins 介绍 它是一个自动化的周期性的集成测试过程,从检出代码.编译构建.运行测试.结果记录.测试统计等都是自动完成的,无需人工干预,有利于减少重复过程以节省时间.费用和工作量: 它需要有专门的集成服务器来执行集成构建: 它需要有代码托管工具支持,比如SVN: 官网地址地址:https://jenkins.io Jenkins的主要目标是监控软件开发流程,快速显示问题: jenkins持续集成中的任何一个环节都是自动完成的,无需太多的人工干预,所以它有利于减少重复过程以节省时间.费用

[转]使用jenkins实现持续集成

本文转自:https://www.cnblogs.com/zishengY/p/7170656.html 一.jenkins 介绍 它是一个自动化的周期性的集成测试过程,从检出代码.编译构建.运行测试.结果记录.测试统计等都是自动完成的,无需人工干预,有利于减少重复过程以节省时间.费用和工作量: 它需要有专门的集成服务器来执行集成构建: 它需要有代码托管工具支持,比如SVN: 官网地址地址:https://jenkins.io Jenkins的主要目标是监控软件开发流程,快速显示问题: jenk

使用jenkins构建持续集成平台

jenkins +   Maven + svn/git + tomcat 的持续集成平台 项目管理流程: 需求分析----原型设计----开发代码----提交测试-----内部测试-----确认上线(确认上线前可能经过多种环境的测试) ------上线到生产环境-----最终测试------如果出现问题代码回滚. 传统代码上线: 开发人员开发完成-----打好包(war.jar)-----交给运维人员上线(上传.拷贝) jenkins持续集成简介: 持续集成是一种软件开发实践,对于提高软件开发效

jenkins gulp 持续集成环境搭建

本文假设你之前没有用过任何任务脚本(task runner)和命令行工具,一步步教你上手Gulp.然后教你jenkins如何集成前端构建工具Gulp.不要怕,jenkins gulp 持续集成环境搭建其实也很简单,我会分为五步向你介绍jenkins gulp 持续集成并帮助你完成一些惊人的事情.那就直接开始吧. 第一步:安装Node 首先,最基本也最重要的是,我们需要搭建node环境.访问 https://nodejs.org/en/download/ 下载得到这样的一个文件node-v6.9.