美文网首页iOS开发技巧首页推荐iOS Developer
Jenkins + SVN实现iOS项目持续集成(Continu

Jenkins + SVN实现iOS项目持续集成(Continu

作者: 永不止步123 | 来源:发表于2017-12-01 15:57 被阅读93次

    随着项目的不断推进,参与的人员越来越多,内容越来越复杂,构建项目本身可能就变成了复杂又耗时的工作。持续集成(Continuous Integration,简称CI),作为一种团队开发实践方法,很好的解决这些问题。它可以让开发团队专注于业务需求,让测试团队更快的构建项目检测问题,加快项目进度。

    Jenkins作为一种持续集成的方案,由于其丰富的插件和较高的可控性,备受大家喜爱。

    安装Jenkins

    • 首先到官方网站下载Jenkins安装包,由于它是Java项目所以依赖JDK

    下载JDK

    下载JDK

    下载Jenkins

    下载Jenkins
    • 找到下载的jenkins.pkg安装包,安装时注意在选择 安装类型 阶段选择自定义安装。

      Jenkins自定义安装
    • 取消 Start at boot as "jenkins"

      取消勾选
    • 安装完成后在Terminal中输入
      $ open /Applications/Jenkins/jenkins.war

      $ java -jar /Applications/Jenkins/jenkins.war
      启动Jenkins

    配置Jenkins

    1. 打开http://localhost:8080会出现重设初始密码的界面。根据界面中的路径提示去相应文件中取出密码。
    2. 创建一个用户
    3. 安装插件Xcode integrationKeychains and Provisioning Profiles Management
      打开Jenkins->系统管理->插件管理->可选插件,安装这两个插件。
      安装插件

    4.配置Keychains and Provisioning Profiles Management

    Jenkins->系统管理->Keychains and Provisioning Profiles Management。

    配置证书相关
    • Upload Keychain or Provisioning Profile File这里上传的是 /Users/你的用户/Library/Keychains/login.keychain 这个文件,如果你的系统中有login.keychain-db这个文件,请把它拷贝出来,重命名成login.keychain再上传。

    • Code Signing Identity这里填写 证书名称

    • Provision Profiles Directory Path这里填写与证书相对应的描述文件的路径,这个路径可以是自定义路径。

    1. 配置Xcode integration

    Jenkins->系统管理->系统设置->Xcode Builder

    Xcode Builder设置
    1. 新建项目
    • Jenkins->新建
    新建工程
    • 选择->构建一个自由风格的软件项目


      创建自由风格项目
    • 填写项目信息


      填写项目信息
    • 填写SVN配置
      Repository URL 填写SVN项目路径。
      Credentials填写SVN用户。

    填写SVN配置
    • 增加SVN用户信息


      增加SVN用户信息
    • 填写构建信息
      这里需要注意一点,如果第一次点开Keychain and Code Signing Identites后发现,Code Sign Identity 如果不能选择,那先点击保存,再打开项目来继续设置。

      填写构建信息
    • 填写Mobile Provisioning Profiles

      填写Mobile Provisioning Profiles
    • 增加 构建
      注意:这里如果Xcode的版本低于9.0,就可以正常输出ipa包。如果Xcode版本不低于9.0,就会由于Xcode 9.0不在允许你访问钥匙串里的内容(具体原因看这里),而输出ipa失败。具体的解决方法请参照后面"遇到的问题"中具体的解决方法。

    如果你的Xcode版本低于9.0那么请继续向下看😄
    增加构建步骤->Xcode

    增加构建步骤
    • 填写iOS项目Target名称
      填写后点击 Setting 设置其他参数

      填写iOS项目Target名称
    • 填写Setting信息
      其中注意 Output Directory 是生成iPA包的路径 ${WORKSPACE}是项目在Jenkins中的工作目录。

      填写Setting信息
    • 设置Code signing & OS X keychain options

      设置 Code Signing & OS X keychain options
      Development Team ID填写开发团队的ID,它可以在钥匙串中的证书详情里查看(右键证书->查看详情)。
      勾选Unlock Keychain,选择上传的login.keychain文件。
    • 如果项目里使用了workspace ,那还需要配置Advanced Xcode build options

    Advanced Xcode build options

    Xcode Schema File填写iOS项目中工程名
    Xcode Workspace File填写iOS workspace文件的绝对路径

    • 开始构建项目
      点击保存,返回到Test_Project_1构建下,选择立即构建


      立即构建

    这时会有进度条显示,构建进度,点击进入之后可以查看Log


    构建进度

    构建后的操作

    构建完成后,可以选择将ipa包上传到自己的服务器,也可以用fir或者蒲公英等第三方服务。

    遇到的问题

    • Xcode版本高于9.0 ,使用Xcode Builder构想项目的时候会出现导出ipa失败。
    导出ipa失败
    error: exportArchive: "Your.app" requires a provisioning profile with the Push Notifications feature.
    Error Domain=IDEProvisioningErrorDomain Code=9 ""Your.app" requires a provisioning profile with the Push Notifications feature." UserInfo={NSLocalizedDescription="Your.app" requires a provisioning profile with the Push Notifications feature., NSLocalizedRecoverySuggestion=Add a profile to the "provisioningProfiles" dictionary in your Export Options property list.}
    ** EXPORT FAILED **

    最后错误提示,EXPORT FAILED,推断导出ipa包时出的错。根据最后提示
    Add a profile to the "provisioningProfiles" dictionary in your Export Options property list
    google一下,发现Xcode 9.0不允许访问钥匙串里的内容。

    解决方案: 在构建中添加Execute Shell替代Xcode Builder

    选择Execute Shell

    使用脚本替代插件(插件本质是通过我们的配置生成打包脚本并执行)。

    脚本内容
    • 脚本内容
    xcodebuild -archivePath "/Users/你的用户/.jenkins/workspace/你的Jenkin构建项目名/output/debug/name.xcarchive" -workspace name.xcworkspace -sdk iphoneos -scheme "schemename" -configuration "Release" archive
    xcodebuild -exportArchive -archivePath "/Users/你的用户/.jenkins/workspace/你的Jenkin构建项目名/output/debug/name.xcarchive" -exportPath "/Users/你的用户/.jenkins/workspace/你的Jenkin构建项目名/ipa/" -exportOptionsPlist '/Users/chaos/.jenkins/workspace/你的Jenkin构建项目名/ipa/ExportOptions.plist' -allowProvisioningUpdates
    

    按照你的实际项目情况替换脚本中的内容
    name.xcarchive =>TargetName.xcarchive
    name.xcworkspace => iOS 项目 workspace 名字
    schemename => scheme manage中的名字

    其中ExportOptions.plist ,直接使用Xcode导出iPA同文件夹中的同名文件就行。

    ExportOptions.plist文件位置

    ExportOptions.plist文件请放在Jinkens的workspace,构建项目文件夹下。
    脚本中ExportOptions.plist路径可以自定义。


    ExprotOptions.plist位置

    扩展

    最后

    感谢阅读,如果对大家有帮助,请在github上follow和star,本文发布在逆流的简书博客,转载请注明出处

    相关文章

      网友评论

        本文标题:Jenkins + SVN实现iOS项目持续集成(Continu

        本文链接:https://www.haomeiwen.com/subject/wgyebxtx.html