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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,457评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,837评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,696评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,183评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,057评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,105评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,520评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,211评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,482评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,574评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,353评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,897评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,489评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,683评论 2 335

推荐阅读更多精彩内容