Jenkins For iOS安装

我个人当电脑环境:

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 页面就可以了。

《Jenkins For iOS安装》 404错误,需要更新JDK

安装JDK

《Jenkins For iOS安装》 安装JDK

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

《Jenkins For iOS安装》 安装成功待Unlock页面.png

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

《Jenkins For iOS安装》 前往/Users/Shared/Jenkins/Home/secrets 目录,提示没有权限

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

《Jenkins For iOS安装》 修改everyone权限为只读
《Jenkins For iOS安装》 修改initialAdminPassword权限

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

《Jenkins For iOS安装》 选择安装默认插件

进去之后页面是这样的

《Jenkins For iOS安装》 创建一个新任务

总结:

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

2.在Jenkins中配置Xcode工程

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

《Jenkins For iOS安装》 管理插件

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

《Jenkins For iOS安装》 下载安装Xcode integration插件

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

《Jenkins For iOS安装》 构建一个自由风格的软件项目

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

《Jenkins For iOS安装》 项目配置页面

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

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

General

  1. 设置项目名称
  2. 如果是GitHub 上的项目,可以直接勾选 GitHub project,并输入github上项目的地址
  3. 丢弃旧的构建

  4. 等等其他设置,目前我的设置如下:

《Jenkins For iOS安装》 General设置

源码管理

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

《Jenkins For iOS安装》 选择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:暂时不知道做什么的

《Jenkins For iOS安装》 构建

二. 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 两个目录了

《Jenkins For iOS安装》 配置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/

《Jenkins For iOS安装》 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

《Jenkins For iOS安装》 library not found for xxx

构建后步骤

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

开始构建项目

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

《Jenkins For iOS安装》 立即构建
《Jenkins For iOS安装》 构建详情

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

《Jenkins For iOS安装》 输出日志

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

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

  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

《Jenkins For iOS安装》 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 For iOS安装》 钥匙串->选择证书->显示简介->允许所有运用程序访问此项目

待续。。。

参考链接:
使用 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

    原文作者:黄二峰
    原文地址: https://www.jianshu.com/p/5cad74906159
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞