iOS自动化实践——jenkins持续集成(五)
本篇总结fastlane gym打包和jenkins配置的相关问题。
一、fastlane gym打包
1、gym可以理解为,实质是fastlane内的一个组件。fastlane是由ruby封装的xcodebuild命令,通过查阅官方github可以看到它的安装命令和使用简介。
fastlane github地址为:https://github.com/fastlane/fastlane
gym github地址为:https://github.com/fastlane/fastlane/tree/master/gym
fastlane使用命令直接安装:
gym使用命令安装:
2、本次只是为了打ipa包,我直接选择使用gym命令,最后命令为:
3、遇到的问题
问题:–export_options ${ExoptionPlist}之前会出错,是因为之前按照gym -h查看帮忙命令的时候,有–export_options [value]存在,一直写的是–export_options [plist]。
解决:过程就不详细描述了,看了源码中关于–export_options的介绍,这里应该是指明path,不需要指明[value]中值。
二、配置jenkins master和slave
1、因为jenkins master和slave已经配置好了,由于没有真的配置master和slave,侧面了解了一些概念,jenkins在“管理界面“可以方便的添加节点,配置节点时候,这里的节点可以理解为slave,需要节点所在机器的登陆用户名和密码,涉及到mac slave,需要在共享界面,打开任意用户可以登陆并且打开远程连接和屏幕共享。
需要注意的是slave不需要再按照jenkins,jenkins会自动启用slave agent,将build需要的tools拷贝到远程服务器。而且每次构建的结果应该都是存放在master上的,不需要在各个节点去查看build产生的结果文件。
2、遇到的问题
(1)gym command not found
解决:Inject environment variables to the build process或在命令行执行前直接export PATH=$PATH:/usr/local/bin
都可解决。
(2)mac slave中shell被更改
解决:通过命令行打印echo SHELL
确认当前slave启动的shell,然后通过命令sudo chsh -s /bin/bash
改为默认的shell。
(3)gym报错invalid byte sequence in US-ASCII (ArgumentError)
解决:在jenkins命令行执行前export RUBYOPT="-KU -E utf-8:utf-8"
或者导入变量
(4)gym报错Exit status: 65
解决:在jenkins命令行执行前导入export MallocNanoZone=0
(5)老问题slave上命令行可以正常执行,jenkins中一直报错archive failed
解决:这个问题的解决过程十分漫长,原因是一直关注的是jenkins log,没有看到明显的报错日志,再加上上面遇到的这么多问题,一直在重复的打包,查报错日志,最后把关注点放在了gym执行报错的日志中,查到一句是User interaction is not allowed
,这个时候才确认是因为权限问题。
解决只有两个步骤:首先在mac slave上打开钥匙串,然后在系统内找到证书然后授权让所有用户可以使用
其次在jenkins中执行
(6)archive the artifacts一直配置报错
解决:在workspace下配置相对路径即可。