iOS自动打包 - Jenkins上传fir

最近花了些时间实现了jenkins自动化打包,在此记录下步骤以及过程中遇到的坑(我使用的各版本号 -> Mac OS : 10.14.4,Jenkins : 2.141,Xcode : 10.2.1,Java : 1.8.0_131 )。

一、安装Jenkins

官网下载地址:
http://mirrors.jenkins.io/war-stable/latest/jenkins.war

下载、安装完以后,想知道有没有安装成功?在终端输入命令行 open /usr/local/Cellar/jenkins,见下图

命令行启动Jenkins

$ jenkins

一切顺利的话,打开浏览器输入:http://localhost:8080/

接下来进入Jenkins初始化设置工作.这个过程会设置管理员账号密码等,密码在 /Users/Shared/Jenkins/Home/secrets/initialAdminPassword中,可能没有权限打开文件,设置成只读权限就可以了。拷贝内容输入到下图框中

初始化完成后,就可以利用管理员账号登录.登录后通常可以安装一些常用插件,一般有默认插件和自定义插件,选择默认插件即可.

插件安装完后,创建用户

以上步骤完成,就可以开始使用 jenkins了

二、Jenkins的使用

1.插件安装

登陆后选择 -> 系统管理 -> 插件管理 -> 可选插件

搜索 Git pluginXcode integrationKeychains and Provisioning Profiles ManagementGitHub Organization Folder Plugin 分别打钩后,点击直接安装。一段时间后刷新网页,直到安装完成。

安装完成的插件可以在已安装中找到:

安装插件也可以去Jenkins-plug官网下载插件,然后选择高级tab,上传.hpi文件

2.配置Keychains and Provisioning Profiles Management

选择首页 -> 系统管理 -> Keychains and Provisioning Profiles Management如图:

keychain配置

前往文件夹:~/Library/Keychains

Mac系统10.12版本以后 找到 login.keychain-db 文件,复制出来删除-db(Mac系统10.12之前版本找到 login.keychain文件)选择文件,点击Upload

再将其他配置项填好:

Code Signing Identity:Xcode证书名称,在钥匙串中将对应的证书名称复制到这里即可

添加Provisioning Profiles

Provisioning Profiles Directory Path:固定格式:/Users/用户名/Library/MobileDevice/Provisioning Profiles(用户名替换成自己的mac用户名),在此路径下选择Provisioning Profiles文件,然后upload,(和login.keychain的上传方式一样)

3.开始配置任务

回到Jenkins网页主页 -> 新建 -> 在Enter an item name 输入的名称是相当于Jenkins存你项目的文件的名称 -> 选中 构建一个自由风格的软件项目 -> OK

点击配置,如图

接下来进行配置,Jenkins的主要工作流程,可以通过下图来直观看出来

General

天数和保持的最大个数,可以按照自己的需求来设置

源码管理

Repository URL:项目的git地址,我的是ssh的
Branch Specifier (blank for 'any'):项目的分支,可以是主分支也可以是自己的分支
Credentials:点击上图中添加 -> Jenkins 进行配置如下图

类型:选择SSH Username with private key
Username:要与git的用户名保持一致
Private Key:将ssh私钥(id_rsa)的值复制到这里(注意一定要复制全)

构建触发器

构建触发器,也就是什么时候触发自动打包我这里填写的是H 20 * * * 这个意思就是H小时然后,后面跟着数字,在后面就是日月年,*代表的我认为是每次都触发,也就是每天每月每年,但是Jenkins的时间不是绝对的,一般都是在随机在半点,也就是设置20点,大概会在20:30分左右会触发,如果需要两个时间,那么格式可以这样H 20,22 * * *结果如图

构建环境

勾选Keychains and Code Signing Identities,Keychains and Code Signing Identities是打包需要的证书,是我们在配置Keychains and Provisioning Profiles Management中配置好的,可以自己选择

勾选Mobile Provisioning Profiles,Mobile Provisioning Profiles是打包需要的配置文件,是我们在配置Keychains and Provisioning Profiles Management中配置好的,可以自己选择

构建 -> 选择Xcode

General build settings配置:

Target:填写项目名称
Clean before build:勾选YES
Configuration:写的是Debug为测试证书,若Release就是对应发布证书
Xcode Schema File:构建环境(项目target名称)

然后勾选Pack application, build and sign .ipa?,就会有新的选项:

Export method:是你要打的包的类型,就是你在手动打包的时候选的ad-hoc或者Appstore那四个选项,这个按照你要打的类型填写
.ipa filename pattern:是你打出包ipa的名字,我的这里填写了项目名字和-$(BUILD_DATE),意思就是在后面追加时间
Output directory:是导出ipa的目录,如图填写就可以。

Code signing & OS X keychain options

勾选Unlock Keychain?:Jenkins需要访问Keychain,获取响应的key,所以需要授权。选上就自动解锁。
Keychain path:默认都是${HOME}/Library/Keychains/login.keychain
Keychain password:电脑的登陆密码

Advanced Xcode build options

勾选Clean test reports?
Xcode Workspace File:如果使用了cocoapods那么填写Xcode Workspace File,如果没有使用cocoapods填写Xcode Project Directory和Build output directory

完成之后,回到任务操作页面,点击立即构建,如果配置没问题基本就能构建成功

有可能会出现报错,点击任务编号,进入控制台输出看看哪里出了问题,然后进行修改

可能出现的错误

1). 拷贝文件错误

Failed to copy /Users/Shared/Jenkins/Home/kpp_upload/xxxx.mobileprovision to /Users/xxx/Library/MobileDevice/Provisioning Profiles/xxxx.mobileprovision

解决:1.查看Library读写权限是否开放;2. 查看系统管理 -> Keychains and Provisioning Profiles Management,查看Provisioning Profiles Directory path 是否有误
MobileDevice 读写权限是否开放

2). Unable to unlock the keychain

security: SecKeychainUnlock /Users/Shared/Jenkins/Library/Keychains/login.keychain-db: The specified keychain could not be found.
FATAL: Unable to unlock the keychain.

解决:把login.keychain-db粘到这个目录下

3). Jenkins Xcode 证书设置错误

Check dependencies
Code Signing Error: There are no accounts registered with Xcode. Add your developer account to Xcode
Code Signing Error: No profiles for 'com.17house.jiaZhuangTong' were found: Xcode couldn't find any iOS App Development provisioning profiles matching 'com.17house.jiaZhuangTong'.
Code Signing Error: Code signing is required for product type 'Application' in SDK 'iOS 12.2'

** ARCHIVE FAILED **

解决:找到你用户下的Provisioning Profiles 文件。目录为 /Users/xxx/Library/MobileDevice/Provisioning Profiles xxx表示你自己的用户名
把这里面所有的证书复制到/Users/Shared/Jenkins/Library/MobileDevice/Provisioning Profile 这个文件。

上传fir

首先给Jenkins装上插件,将插件按照之前方式上传即可,Jenkins 插件下载地址

然后进入Jenkins 刚才的工程 进行配置 -> 增加构建后操作步骤 如图

选择Upload to fir.im,如图

这里只需要填写fir.im Token,Token获取 -> 进入fir官网登陆 -> 如图选择API token

至此,就可以自动化打包了。
希望以上能帮到你,如有问题请留言。

相关链接:
https://www.jianshu.com/p/3668979476ad
https://www.jianshu.com/p/91e8f571fc2b
https://www.jianshu.com/p/91baa66b6c06

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

推荐阅读更多精彩内容