zoukankan      html  css  js  c++  java
  • IOS使用Jenkins持续集成

    本文详细介绍了开发过程,提高效率进行IOS-Jenkins持续集成。

    第二http://blog.csdn.net/monkey_cool/article/details/43270885

    背景

    平时我们开发完毕IOS项目,须要打包给測试人员进行測试。当中的过程须要反复进行:改动配置项--编译---连接设备--执行打包--debug进设备中--然后交给等待的測试人员。现有成熟的持续集成Jenkins解决方式。而且该方案也提供了Xcode插件的支持,能够讲上述过程封装成一键解决方式。

    我实现的是jenkins运行IOS的job,buildproject。签名打ipa包,上传到FTPserver。放到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中放入我们的代码project(这是官方的解决方式)。

    文件夹结构见下图。

    这样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的提供的插件。可是这个插件project须要依赖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。填入本机的usernamepassword。

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

    见图,设置须要上传的文件以及其对应的文件夹。如今ipa程序文件的上传,我们须要将build文件夹生成后的ipa文件上传到ftpserver的一个文件夹。我们为了兴许通过tomcat服务进行手机下载。所以上传到tomcat的文件夹下。

    上传成功会在tomcat下有此文件夹结构,见图:

    这样我们上传文件到ftpserver的就实现了。

    8.Tomcat服务

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

    下载tomcat,进入tomcat的bin文件夹,运行命令,

    sh startup.sh

    启动tomcat。

    新建一个简单的web项目,这个请简单看下web自己实现。然后放到tomcat的webapps以下,改动tomcat的訪问port8088,与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:

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





  • 相关阅读:
    Checking Types Against the Real World in TypeScript
    nexus pip proxy config
    go.rice 强大灵活的golang 静态资源嵌入包
    几个golang 静态资源嵌入包
    rpm 子包创建学习
    Rpm Creating Subpackages
    ava 类似jest snapshot 功能试用
    ava js 测试框架基本试用
    The Architectural Principles Behind Vrbo’s GraphQL Implementation
    graphql-compose graphql schema 生成工具集
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/5032723.html
Copyright © 2011-2022 走看看