最近花了些时间实现了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 plugin、 Xcode integration、Keychains and Provisioning Profiles Management、 GitHub 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