zoukankan      html  css  js  c++  java
  • 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.

    持续,集成,jenkins,ios0

    4.源码管理

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

    目录结构见下图。

    持续,集成,jenkins,ios1

    这样workspace中就有了代码。

    5.构建xcode项目

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

    持续,集成,jenkins,ios2

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

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

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

    持续,集成,jenkins,ios3

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

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

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

    持续,集成,jenkins,ios4

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

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

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

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

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

    持续,集成,jenkins,ios5

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

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

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

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

    持续,集成,jenkins,ios6

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

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

    持续,集成,jenkins,ios7

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

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

    持续,集成,jenkins,ios8

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

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

    持续,集成,jenkins,ios9

    这样我们上传文件到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:

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

  • 相关阅读:
    linux(ubuntu) 安装 node.js
    正反向代理
    js正则表达式----replace
    webpack开发小总结
    稳定排序和非稳定排序
    树状数组 --- (离散化+树状数组、求逆序对)
    编程之美初赛第一场 题目3 : 活动中心
    巴什博弈 杭电 1847
    巴什博弈 杭电 1846
    约瑟夫环问题详解
  • 原文地址:https://www.cnblogs.com/yulang314/p/5149761.html
Copyright © 2011-2022 走看看