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,见下图

iOS自动打包 - Jenkins上传fir_第1张图片

命令行启动Jenkins

$ jenkins

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

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

iOS自动打包 - Jenkins上传fir_第2张图片

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

iOS自动打包 - Jenkins上传fir_第3张图片
iOS自动打包 - Jenkins上传fir_第4张图片

插件安装完后,创建用户

iOS自动打包 - Jenkins上传fir_第5张图片

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

二、Jenkins的使用

1.插件安装

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

iOS自动打包 - Jenkins上传fir_第6张图片

搜索 Git plugin、 Xcode integration、Keychains and Provisioning Profiles Management、 GitHub Organization Folder Plugin 分别打钩后,点击直接安装。一段时间后刷新网页,直到安装完成。

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

iOS自动打包 - Jenkins上传fir_第7张图片

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

iOS自动打包 - Jenkins上传fir_第8张图片

2.配置Keychains and Provisioning Profiles Management

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

iOS自动打包 - Jenkins上传fir_第9张图片

keychain配置

前往文件夹:~/Library/Keychains

iOS自动打包 - Jenkins上传fir_第10张图片

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

iOS自动打包 - Jenkins上传fir_第11张图片

再将其他配置项填好:

iOS自动打包 - Jenkins上传fir_第12张图片

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

添加Provisioning Profiles

iOS自动打包 - Jenkins上传fir_第13张图片

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

3.开始配置任务

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

点击配置,如图

iOS自动打包 - Jenkins上传fir_第14张图片

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

iOS自动打包 - Jenkins上传fir_第15张图片

General

iOS自动打包 - Jenkins上传fir_第16张图片

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

源码管理

iOS自动打包 - Jenkins上传fir_第17张图片

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

iOS自动打包 - Jenkins上传fir_第18张图片

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

构建触发器

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

iOS自动打包 - Jenkins上传fir_第19张图片

构建环境

iOS自动打包 - Jenkins上传fir_第20张图片

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

iOS自动打包 - Jenkins上传fir_第21张图片

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

构建 -> 选择Xcode

General build settings配置:

iOS自动打包 - Jenkins上传fir_第22张图片

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

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

iOS自动打包 - Jenkins上传fir_第23张图片

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

Code signing & OS X keychain options

iOS自动打包 - Jenkins上传fir_第24张图片

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

Advanced Xcode build options

iOS自动打包 - Jenkins上传fir_第25张图片

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

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

iOS自动打包 - Jenkins上传fir_第26张图片

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

iOS自动打包 - Jenkins上传fir_第27张图片

可能出现的错误

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 刚才的工程 进行配置 -> 增加构建后操作步骤 如图

iOS自动打包 - Jenkins上传fir_第28张图片

选择Upload to fir.im,如图

iOS自动打包 - Jenkins上传fir_第29张图片

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

iOS自动打包 - Jenkins上传fir_第30张图片

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

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

你可能感兴趣的:(iOS自动打包 - Jenkins上传fir)