Jenkins For iOS安装

作者: 黄二瓜 | 来源:发表于2017-01-23 18:11 被阅读2592次

    我个人当电脑环境:

    macOS Sierra 10.12
    Xcode Version 8.1
    java version "1.8.0_111"


    1.安装Jenkins

    安装Jenkins 有两种方式,一种是下载pkg安装包,一种是下载.war安装包进行安装。当然,无论选哪种方式都需要去官网 下载。

    安装步骤请参考以下文章:
    手把手教你利用Jenkins持续集成iOS项目 (通过pkg安装)
    一步一步构建iOS持续集成:Jenkins+GitLab+蒲公英+FTP (通过war安装)

    安装成功后在浏览器中输入 http://localhost:8080 看下是能在浏览器中打开,如果能直接打开,恭喜你安装成功啦!

    如果 http://localhost:8080 打开是 404 的话(我就是),一般情况下是JDK版本不支持,需要下载 最新的java运行环境,下载并安装好JDK后刷新 http://localhost:8080 页面就可以了。

    404错误,需要更新JDK

    安装JDK


    安装JDK

    安装成功后重新打开 http://localhost:8080 的页面一般长这样:

    安装成功待Unlock页面.png

    这个时候需要我们需要去到 /Users/Shared/Jenkins/Home/secrets 目录下,打开 initialAdminPassword 文件,把密码复制出来填到网页上去重置密码。

    前往/Users/Shared/Jenkins/Home/secrets 目录,提示没有权限

    如果提示权限不够,需要修改相应的文件权限:

    修改everyone权限为只读 修改initialAdminPassword权限

    密码输进去后就是初始化。最后输入初始管理员的用户名密码等个人信息保存完成。


    选择安装默认插件

    进去之后页面是这样的


    创建一个新任务

    总结:

    1. 安装后无法打开localhost 页面一般情况下是JDK版本不支持,需要更新JDK。
    2. 无法打开文件时需要修改文件权限。
    3. 安装Jenkins 成功后,会在/Users/Shared/ 目录下创建一个 Jenkins 用户,其中Jenkins中所有相关文件都存放在该目录 ** /Users/Shared/Jenkins ** 下。
      初始状态下该目录结构如下:
    • Jenkins
      • Home
      • temp

    2.在Jenkins中配置Xcode工程

    先别点“创建一个新任务”,在这之前我们需要下载构建iOS项目的插件:
    进去以后选择‘系统管理’ -- ‘管理插件’


    管理插件

    搜索Xcode,下载安装Xcode integration插件

    下载安装Xcode integration插件

    安装完成以后我们在回到首页点击“创建一个新任务”,输入项目名称,选择“构建一个自由风格的软件项目”


    构建一个自由风格的软件项目

    构建项目完成后进入项目配置页面:


    项目配置页面

    可以看到配置步骤主要有:

    • General
    • 源码管理
    • 构建触发器
    • 构建环境
    • 构建
    • 构建后操作

    General

    1. 设置项目名称
    2. 如果是GitHub 上的项目,可以直接勾选 GitHub project,并输入github上项目的地址
    3. 丢弃旧的构建
    4. ...
      等等其他设置,目前我的设置如下:
    General设置

    源码管理

    可以选择None、git、svn 三种托管方式
    我这里用的github上的项目

    选择Git,填上项目地址

    构建触发器

    暂时不管

    构建环境

    暂时不填

    构建(重要)

    选择构建步骤-->Xcode (如果没装Xcode插件这里就没法选)

    一. General build settings

    1. Target 填项目Target,我这是:JenkinsDemo
    2. 展开Settings,勾选上 Clean before build? 和** Allow failing build results?**
    3. Configuration 中根据情况填 DebugRelease
    4. 勾选上 *Pack application and build .ipa? (是否打包成ipa)
    • .ipa filename pattern:表示打包的ipa命名前缀,例如根据版本号命名、根据日期命名
    • Output directory: 打包后的ipa存放目录,我这填的是 ${HOME}/build/ 表示:“/Users/Shared/Jenkins/Home/build”路径,其中${HOME} 代表 Jenkins用户下的Home目录(/Users/Shared/Jenkins/Home)
    • Manifest Plist URL:暂时不知道做什么的
    构建

    二. Code signing & OS X keychain options
    和签名相关的一些设置
    由于Jenkins下没有打包需要用到的证书和描述文件,因此,需要把证书拷贝的Jenkins环境下,有两种方法:

    一种是安装 Keychains and Provisioning Profiles Management 插件进行证书的管理

    另一种是直接把当前用户的证书( 载在 /Users/xxx/Library/MobileDevice/Provisioning Profiles 目录下)
    拖到Jenkins根目录(/Users/Shared/Jenkins/Library)下的MobileDevice/Provisioning Profile目录中
    即:把 /Users/xxx/Library/MobileDevice (xxx表示你自己的用户名)目录拷贝到 /Users/Shared/Jenkins/Library 下

    勾选 Unlock Keychain?Keychain path是固定填写${HOME}/Library/Keychains/login.keychain
    Keychain password指的是你的授权密码,不是证书密码。

    注意:${HOME}目录指的是Jenkins的根目录,也就是/Users/Shared/Jenkins,如果你的jenkins是新装的,你会发现Library目录中压根就没有Keychains目录。你需要去/Users/xxx/Library目录下把Keychains目录复制过来。
    复制过来后:/Users/Shared/Jenkins/Library 目录下就有 KeychainsMobileDevice 两个目录了

    配置Code signing & OS X keychain options

    三. Advanced Xcode build options

    1. Xcode Schema File:填工程的Schema
    2. SDK: 选择编译使用的SDK,不填则是默认值
    3. SYMROOT: 编译时SYMROOT文件目录,我这里填的是 ${HOME}/buildSymroot/
    4. Custom xcodebuild arguments:编译时传入的参数
    5. Xcode Workspace File: 如果项目使用的是xcworkspace的话这里就需要填对应的工程名,不需要加 ".xcworkspace" 后缀
    6. Xcode Project Directory:可不填
    7. Xcode Project File : 可不填
    8. Build output directory:编译时生成的文件存放目录,这里我填的是 ${HOME}/build/
    Advanced Xcode build options

    注意:
    如果项目中使用了cocoapods进行依赖管理,在构建时会报错:
    Xcodebuild fails in jenkins with cocoapods

    ld: warning: directory not found for option '-L/Users/Shared/Jenkins/build/Release-iphoneos/Masonry'
    ld: library not found for -lMasonry
    clang: error: linker command failed with exit code 1 (use -v to see invocation)
    

    需要在 Product -> Scheme -> Manage Schemes 中勾选上所依赖的Pods


    library not found for xxx

    构建后步骤

    在项目构建完成后可以选择发送邮件或其他方式进行提醒

    开始构建项目

    选中JenkinsDemo,点击立即构建,下放BuildHistory中会显示构建历史记录,点击当前构建,进入构建详情页:

    立即构建 构建详情

    可以通过Console Output 查看该次构建的详细日志,如果构建失败可以根据这里输出的日志查找错误原因:

    输出日志

    我一般是直接拉到日志底部查看日志结果,失败信息直接在底部可以看到。

    这里是我遇到的几个失败日志:

    1. 提示没有匹配的证书,我的解决办法是:启用Xcode8的Automatically manage signing,然后把当前用户的证书( 在 /Users/xxx/Library/MobileDevice/Provisioning Profiles 目录下)
      拖到Jenkins根目录(/Users/Shared/Jenkins/Library)下的MobileDevice/Provisioning Profile目录中
    === BUILD TARGET JenkinsDemo OF PROJECT JenkinsDemo WITH CONFIGURATION Release ===
    
    Check dependencies
    No profile matching 'xxxx' found:  Xcode couldn't find a profile matching 'xxxxx'. Install the profile (by dragging and dropping it onto Xcode's dock item) or select a different one in the General tab of the target editor.
    Code signing is required for product type 'Application' in SDK 'iOS 10.1'
    
    ** BUILD FAILED **
    

    2.日志一直停留在 “There are no schemes ” 不走

    [JenkinsDemo] $ /usr/bin/xcodebuild -list -workspace JenkinsDemo.xcworkspace
    There are no schemes in workspace "JenkinsDemo".
    

    解决办法是上面提到的,在ManageScheme 中勾选所用到的Schemes

    Manage scheme

    3.提示没有证书

    === BUILD TARGET JenkinsDemo OF PROJECT JenkinsDemo WITH CONFIGURATION Release ===
    
    Check dependencies
    Provisioning profile "iOS Team Provisioning Profile: TY.JenkinsDemo" doesn't include signing certificate "iPhone Developer: 451174332@qq.com (Y5P57G478W)".
    Code signing is required for product type 'Application' in SDK 'iOS 10.1'
    
    ** BUILD FAILED **
    
    
    The following build commands failed:
        Check dependencies
    (1 failure)
    Cleaning up previously generated .ipa files
    Cleaning up previously generated .dSYM.zip files
    Packaging IPA
    Finished: SUCCESS
    

    需要把 “/Users/dengliwen/Library/Keychains” 文件拷贝到 “/Users/Shared/Jenkins/Library/Keychains” 中

    4.其他错误,忘了是处理什么的了


    钥匙串->选择证书->显示简介->允许所有运用程序访问此项目

    待续。。。

    参考链接:
    使用 Jenkins 实现持续集成 (iOS)
    http://www.cnblogs.com/qingjoin/p/3929493.html
    http://www.cocoachina.com/ios/20160804/17281.html
    http://www.360doc.com/content/14/0508/19/10058718_375884734.shtml
    http://www.cnblogs.com/qingjoin/p/3929493.html

    相关文章

      网友评论

      • 郑钱钱的小笔记:请问我安装了最新的jdk,打开 localhost 报的是该网页无法正常运作
        localhost 未发送任何数据。你知道这个的原因吗?
      • IT锟:我按照你的教程配置,构建后,出现下面的错误,请问我该怎么解决?

        Cleaning up previously generated .ipa files
        Cleaning up previously generated .dSYM.zip files
        Packaging IPA
        [iOS自动打包] $ /usr/libexec/PlistBuddy -c "Print :ApplicationProperties:CFBundleVersion" /Users/Shared/Jenkins/build/TestProject.xcarchive/Info.plist
        [iOS自动打包] $ /usr/libexec/PlistBuddy -c "Print :ApplicationProperties:CFBundleShortVersionString" /Users/Shared/Jenkins/build/TestProject.xcarchive/Info.plist
        You have to provide a value for either the marketing or technical version. Found neither.
        Build step 'Xcode' marked build as failure
        Finished: FAILURE
      • LoveY34:你好!Jenkins上是用Xcode 9编译打包的,提示"Code Signing Error: No profile for team 'YiZi(Shanghai) Agel Ecommerce Ltd' matching 'com.luichi.chamberlain_dis' found: Xcode couldn't find any provisioning profiles matching 'YiZi(Shanghai) Agel Ecommerce Ltd/com.luichi.chamberlain_dis'. Install the profile (by dragging and dropping it onto Xcode's dock item) or select a different one in the General tab of the target editor.
        Code Signing Error: Code signing is required for product type 'Application' in SDK 'iOS 11.0'",
        咋办啊?配置文件已经拷贝过了
      • VenpleD:你用xcode 8编译,会报错么?我的jenkins 用xcode8 会报证书的错误!但是xcode 7不会
      • 一抹相思泪成雨:No iOS profile matching found Install the profile (by dragging and dropping it onto Xcode's dock item) or select a different one in the General tab of the target editor.
        Code signing is required for product type 'Application' in SDK 'iOS 10.3' 这个怎么解决 配置文件都复制了
        梅西121:@Hoolink 问题解决了,是我的证书修改后,没有上传代码:sweat:
        一抹相思泪成雨:@梅西121 直接用脚本 不要使用配置证书的插件 。
        梅西121:你好,这个问题解决了吗?请教您一下
      • PisPMPL:Will not set default: file /Users/Shared/Jenkins/Library/Keychains/login.keychain-db is owned by UID=501, but we have UID=262

        重点是第一句~
      • PisPMPL:复制loginkeychain的方法不好使啊~~
      • PisPMPL:Will not set default: file /Users/Shared/Jenkins/Library/Keychains/login.keychain-db is owned by UID=501, but we have UID=262
        security: SecKeychainSetDomainDefault user: write permissions error
        [helloworld] $ /usr/bin/security unlock-keychain -p ******** /Users/Shared/Jenkins/Library/Keychains/login.keychain
        [helloworld] $ /usr/bin/security show-keychain-info /Users/Shared/Jenkins/Library/Keychains/login.keychain
        Keychain "/Users/Shared/Jenkins/Library/Keychains/login.keychain" no-timeout
        ===========================================================
        == Available provisioning profiles
        [helloworld] $ /usr/bin/security find-identity -p codesigning -v
        1) 19081EE90BA2D0D2AB96368EE1600CD2969F1CE8 "iPhone Distribution: Beijing Remote Xinhua Network Technology Co.,LTD (22B4UKXY6S)"
        2) 1BD351DA9290FBED15841F0F4FAE7857CAB5E23B "iPhone Developer: 635888649@qq.com (7FXX6UFLE7)"
        3) 1ABFC02DE1DD6A3224AA90A57A8D5010995CE851 "iPhone Developer: ycxinhuaios@163.com (QVV5ZKS395)"
        4) 883F18F9758465253F843F0AAC8DF34BE93BA9A8 "iPhone Developer: tan mingquan (K7CLQ5YSKJ)"
        5) 19081EE90BA2D0D2AB96368EE1600CD2969F1CE8 "iPhone Distribution: Beijing Remote Xinhua Network Technology Co.,LTD (22B4UKXY6S)"
        5 valid identities found
        FATAL: No global development team or local team ID was configured.
        Build step 'Xcode' marked build as failure
        Finished: FAILURE
      • MoShi_New:大神,用jenkins去打包的时候日志保证错误Ld build/Debug-iphoneos/sender.app/sender normal armv7 应该怎么修正呢?
      • 李因思坦:早点看到你的文章也不至于在证书上面卡4天

      本文标题:Jenkins For iOS安装

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