1.前言
对于app的开发来说,app要换个环境或者做了某个新功能,都要给测试人员打一个包。人少还好说,一旦人多设备也多了,打包所花的时间也随之增加了。所以需要持续集成(Mac OS)来解决这种问题,本次的自动打包是基于Jenkins的Xcode插件实现的。
2.安装
到官网下载,按照步骤安装即可。
3.初始化
3.1初始化密码
安装完成后,浏览器会自动打开http://localhost:8080,如果没有,可以手动打开。还是打不开就需要安装JDK环境。
打开后会发现需要初始密码,根据提示的路径/Users/Shared/Jenkins/Home/secrets/initialAdminPassword
找到initialAdminPassword文件打开复制密码。
注意:secrets文件是有权限的,需要自己修改文件的读写权限,才能进去。
3.2设置账号密码
安装完推荐的插件后,需要设置Jenkins的登录账号跟密码。信息一定要填全并且正确。
3.4安装插件
我们可以到系统管理->管理插件->可选插件找到自己需要的插件进行安装,比如我用到的Xcode integration插件,选择下面的直接安装。
3.5创建项目
准备步骤弄好了,就可以创建一个项目了。
4.项目配置
4.1Genneral
- 项目名称
- 设置项目名称
- 描述
- 对应的描述提示
- 丢弃旧的构建
- 对所有构建的处理,里面有保持构建的天数以及保持构建的最大个数
4.2源码管理
我使用的是SVN(Git是第二个选项),所以需要配置SVN后,Jenkins才能拿到服务器的代码。SVN用到的插件是Subversion Plug-in。
- Repository URL
- 服务器对应项目的地址
- Credentials
- 服务器对应项目的账号密码,如果没有则需要点击右边的Add进行添加。
4.3构建触发器
- Build periodically
- 每天定时构建的的时间设置
- Poll SCM
- 每天轮询代码时间间隔
4.4构建环境
4.4.1安装插件
iOS的打包都需要证书和描述文件的,然后Jenkins里的Keychains and Provisioning Profiles Management插件就能配置证书跟描述文件。
4.4.2配置插件
安装后我们到系统管理的下面找到它,并查看需要配置的选项,一般操作是点击选择文件
并Upload
就可以了。
Keychains
先说这里需要使用的文件在/Users/用户名/Library/keychains
中的login.keychain与login.keychain-db其中一个,因为在旧的系统当中只有.keychain文件,而在新的系统变成.keychain-db文件。然后.keychain直接复制一份到桌面然后选择上传即可,而.keychain-db需要先去除后面的-db,就可以用了。
- Password
- 电脑的开机密码
- Identities
- 这个是签名的id,手动添加,可到系统钥匙串查看。
Provisioning Profiles
上传对应的描述文件即可,比如开发的描述文件、发布的描述文件等。然后我们需要到到系统的描述文件目录(~/Library/MobileDevice/Provisioning Profiles
)把文件拷出来放到桌面。
- Provisioning Profiles Directory Path
- 这个是Jenkins保存描述文件安装后对应描述文件的目录(并不是描述文件本身)
- Filename
- 自动识别
- UUID
- 自动识别
最后
刚才已经叫提示大家把.keychain与.mobileprovision文件拷到桌面了,这时需要把这两种文件放到Jenkins对应的目录下。这样做的原因是因为Jenkins有时并不能复制到自己的目录下,这是为了确保Jenkins拿到的都是最新的证书与描述文件。
- keychain
- /Users/Shared/Jenkins/Library/Keychains
- mobileprovision
- /Users/Shared/Jenkins/Library/MobileDevice/Provisioning Profiles
- 如果后面的文件夹没有可以自己创建
4.4.3XcodeBuilder配置
我们需要到系统管理->系统设置->找到Xcode Builder,同样需要设定keychain的配置信息,这就成了全局的keychain使用。
4.4.4使用插件
回到项目配置中的构建环境板块中勾选Keychains and Code Signing Identities与Mobile Provisioning Profiles,选用的是我们刚才创建的证书与描述文件。
4.5构建
在构建中添加找到Xcode,接下配置对应信息即可。
General build settings(打包的基本设置)
- Target
- target的名字
- Clean before build?
- 每次build之前先执行clean的操作
- Pack application, build and sign .ipa?
- 每次build后是否需要打包ipa文件
- Export method
- 导出的形式是以开发、发布、企业等形式,下面有具体描述
- .ipa filename pattern
- ipa的命名
- Output directory
- ipa的导出文件
Code signing & OS X keychain options(签名的基本信息配置)
- Development Team
- 可以使用空的,然后指定一个Team ID。
- 可以使用全局的,可到系统设置里面配置。
- Unlock Keychain?
- 可以使用空的,然后指定Jenkins的Keychain path和开机密码。
- 可以使用全局的,可到系统设置里面配置。(4.4.3里有说明)
Advanced Xcode build options(Xcode打包的高级配置)
- Clean test reports?
- 清除之前的test日志。
- Xcode Schema File
- 需要构建的环境(一般是target名称)
- Xcode Workspace File
- Cooapods项目结构的.xcworkspace文件名
- Xcode Project Directory
- 非Cooapods项目结构的.xcodeproj目录
- Xcode Project File
- 非Cooapods项目结构的.xcodeproj文件名
- Build output directory
- build后的所有文件存放目录
4.6构建后操作
这里可以做很多功能,比如发邮件通知、将文件放到FTP、代码分析等,暂不展开来说。
5.尝试构建
最后保存好整个项目的配置,回到项目的界面,我们来试一下构建,并查看每次构建的日志,确定最终执行的结果。
6.执行结果
每次构建成功都是显示蓝色的,并且查看日志内容会找到以下内容,希望你也能看到以下内容。
|
|
7.遇到问题
- 问题-1
- 系统目录在只有login.keychain-db文件
- 解决
- 将后缀的db去掉后上传。
- 问题-2
- The user name or passphrase you entered is not correct.
- 解决
- 找到所有设置keychain的地方,再确定每个密码都是对的。
- 问题-3
- file /Users/yidongshiyebu/Library/Keychains-db does not exist
- 解决
- Jenkins目录下没找到login.keychain-db文件,将系统的复制进去即可。
- 问题-4
- No global development team or local team ID was configured
- 解决
- 设置对的teamID
- 问题-5
- ‘aaa.xcworkspace’ does not exist.
- 解决
- 设置错了工程文件
- 问题-6
- the workspace named “aaa” does not contain a scheme named “aaa”. The “-list” option can be used to find the names of the schemes in the workspace.
- 解决
- 在Xcode中的Manage Schemes打开,把需要构建的项目把右边的Share点上
- 问题-7
- No profiles for ‘com.aaa.aaa’ were found: Xcode couldn’t find a provisioning profile matching ‘com.aaa.aaa’.Code signing is required for product type ‘Application’ in SDK ‘iOS 10.3’
- 解决
- 在项目工程中设置不自动配置证书跟描述文件
- 问题-8
- No iOS profile matching ‘aaa/aaaa’ found: Xcode couldn’t find a profile matching ‘aaa/aaaa’. 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.
- 解决
- 使用了错误的TeamID,更换即可。
- 问题-9
- unknown error -1=ffffffffffffffff
- 解决
- 重新配置一次所有的keychain,以及keyChain的密码,确保是最新和正确的。
8.预告
下次就聊聊如何用命令行的方式来执行整个打包过程。