关于iOS 自动打包的 jenkins +SVN 干货!

背景描述


本文不适合手把手教你集成 Jenkins 的童鞋....本文则是一片问题出现与解决的总结~!

首先,我要将一下为什么我们要用 Jenkins 这个平台来构建自动打包平台:有人会有疑问,使用脚本在电脑上打包, 效率也是非常快的.为啥还要用这个开源平台呢?   我们的自动打包需求并不是为了方便开发人员, 而是为了减轻测试部门同事的工作量,去掉中间那么多的共同时间,让他们可以在需要的时候去打包测试. 那问题就来了, 要知道iOS 的打包是需要创建证书的那台特定机子去打, 而其他人即使拿到 P12 文件也无法打包成功(相同的脚本,直接运行会各种错误),而 jenkins 就完美得解决可这一问题.

网上也有很多 jenkins 的使用教程之类的东西, 但是,通过自己做过这一遍,深感那些资料有写不能满足我的需要, 很多资料都是交给你怎么成功得整合, 却没有说明当你在整合时会出现的问题, 或者是出现了怎么解决(特别是在 使用了gitLab的项目).为了给后来者以方便,特写此文.

集成 Jenkins


我在这里不会详细的介绍怎么安装和搭建 jenkins 运行环境, 网上有很多, 我只是提想下打算在Mac 上构建Java 环境的开发者, jenkins 的运行不要构建 Java HOME , 直接安装 Java_JDK就可以了,然后到官网下载页面,选择  Mac os X 版本 .在安装时,一定要按默认的安装,不要自定义安装, 网上有的资料是自定义安装,不去创建jenkins用户,这个很坑人,千万不要少装了!!!!

安装完毕后, 确保你的shared文件下存在jenkins用户。

当我们第一次进入jenkins 时会让我们安装,等待页面下载完毕,然后注册, 当然要是忘记了密码.是没有找回密码这一按钮的, 你需要去删除在/Users/Shared/Jenkins/Home/config.xml 以下代码

然后重新启动jenkins  sudo service jenkins restart , 当然,重启电脑也行..哈哈..

打包项目构建


进入 jenkins 页面后, 新建一个项目, 如何新建项目,网上自己百度吧..记住一点,自己的项目名称或运行脚本名不要出现空格, 因为空格会被转译.这回在你使用命令在终端中调试时出现很多不必要的麻烦...

在项目配置中的"源码管理"中选择 Subversion , Repository URL里填写 SVN 地址, 直接拷贝项目 URL粘进去就可以, Credentials 中点击添加, 选择账号 密码连接类型, ID , 描述什么的可以不写.添加账号后回到前一页面Credentials,选择该账号, 没有连接上回报错.

到这里如果你是使用脚本打包的,那构建过程中的难点就没有了, 如果你是使用 Xcode 构建的话, 还是有一定难度在等你. 当然如果你的本地项目工程使用Workspace来管理的, 那么请按照网上主流的资料进行配置就可以了, 如果你的工程中没有使用Workspace来管理,那么在Xcode Workspace File 输入地址当然会在打包时报错..这时候你会发现在页面中还有几个框, 其中一个是Xcode Project File,这样你将你的项目运行文件. xcodeproj放进去,就可以了...

配置jenkins的关键


我们使用jenkins的目的是实现jenkins自动打包svn 或git 托管的最新代码。而不是你电脑本地的工程。所以不管是脚本还是Xcode插件,build的工作区间必须是jenkins目录下的workspace;使用脚本时, 第一次我们不知道我们的目标工程在哪里, 所以当你配置差不多了,可以选择构建一次, 这样jenkins下的workspace文件下就有了你的目标文件。jenkins 首先会自己会检出一份代码, 将脚本也放在该工程文件下, 如果你构建时报“没有权限”的问题, 那就使用命令给jenkins文件全部权限(chmod -R 777 /文件路径)。单单去改变脚本权限是没有用的~!

要实现jenkins的自动打包,其实就是要jenkins用户下可以正常打包,真机运行。因为你的目标工程是在shared目录下的jenkins下, 所以,首先你需要保证在你自己用户下可以打包,等。然后,切换用户到jenkins下, 通过shared可以找到目标工程, 然后再这里面实现正常打包,运行等。。完成这两部,你就已经离成功不远了~!(在jenkins中如果出现问题, 请往下仔细阅读)。


打包时的常见问题


项目配置全部都 OK 了, 这时候我们点击"立即构建"按钮, 第一次一般都会报错,一下是集中常见报错的现象及原因以及解决方法:

如果你是使用 Xcode 构建:

1. Jenkins Xcode 证书设置错误 :

Code Sign error: No matching codesigning identity found: No code signing identities

 或者

Check dependencies

Code Sign error: No codesigning identities found: No codesigning identities (i.e. certificate and private key pairs) that match the provisioning profile specified in your build settings (“qingyunDeveloper”) were found.

或者报什么 UUID(***************)不匹配

原因: Xcode 现在的证书选项选择不正确, 或者是 jenkins 的Xcode 证书没有在其证书文件中找到相应证书对应项.jenkins的打包是在jenkins用户下进行的,所以,在本机用户的证书环境要与jenkins用户环境证书一致。

解决1: 叫你的老大给你把 P12文件传给你,打开.选择好证书类型, 然后再构建, 如果还是不行,找到你用户下的Provisioning Profiles 文件。目录为 /Users/xxx/Library/MobileDevice/Provisioning Profiles  xxx表示你自己的用户名

把这里面所有的证书复制到/Users/Shared/Jenkins/Library/MobileDevice/Provisioning Profile  这个文件。然后再构建..

2.构建时,输出错误为权限问题..

原因:因为在安装 jenkins 后, 会系统会自动创建一个 jenkins 的用户, 你现在所使用的是自己的 MAC 用户,所以操作 jenkins 会无权限,.

解决:你需要做的是找到报错的地址文件, 单击右键,显示简介中找到共享与权限, 全部给读写权限, 并且查看根目录其他文件是否是全部读写权限...或者直接暴力(chmod -R 777 /路径)

3.Xcode 编译出错 ,代码不支持新的 SDK

原因:因为 jenkins 构建时,默认是 APPStore 上最新的版本, 有的工程里第三方文件编译时,不支持最新 Xcode 版本, 所以需要更改 Xcode 的编译 SDK.

解决:运行 xcodebuild -showsdks 命令在终端中查看当前版本, sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer  后面的地址是你需要的 Xcode 版本的地址,如你想更换为9.2的 SDK, 那么该地址则为 Xcode 7.2.1 的报内容.  更改完后构建即可.

4.如果在jenkins用户下,按第一条问题解决方法操作,还是无法运行,或者找不到想要的描述文件。一直报证书的错。

原因:上次删除jenkins时不规范, 文件有残留,导致这次安装有问题。

解决:按照网上删除jenkins的方法去删除(都是命令语言),然后再装, 重新按照步骤来做。

5.两个用户下各自都能打包,运行。但是回到本机使用jenkins网页上的构建按钮构建,提示:

原因:提示的意思是jenkins用户没有解锁用户交互。但是,如果你去网上按照那些方法添加“登陆钥匙串”的解锁命令,还是无法完成。其实,这个问题的实质还是证书的问题,但这个问题不是描述文件的事,而是开发或者发布证书没有添加的问题。

解决:进入jenkins用户下, 如果你直接双击打开证书, 但是,系统会提示你 user interface is not allowed。 所以并不能这么直接添加, 而是要打开钥匙串, 找到“system”---copy全部的证书-----“login”---粘贴  。

再去构建,OK 完美~!O(∩_∩)O哈哈~

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

推荐阅读更多精彩内容