jenkins+gitlab实现iOS自动打包的坎坷之路(本文包含CI\CD过程中的一些坑点以及一些理解及建议)
本文须知:本文成功案例是配置jekins所在服务器配置打包环境,并非在jenkins中配置打包环境。关于为何不采用在jenkins中配置打包环境将会在文中具体讲解。最后因为是基于jekins所在服务器配置的打包环境,按照本文所诉,实现ios自动打包将更易成功。
一.背景(重生之开局准备)
1.既然是ios项目实现自动打包,那么就必须对ios原来的打包方式及过程要有大概的了解,不同的ios项目其打包方式以及打包的一些参数都可能不相同(具体的可向开发人员询问清楚)。
以本人为例的话:2、4、5点是重点
1).找iOS开发人员要证书和描述文件(打包需要这些。至于证书和描述文件是啥你可以有个大概的了解就行,比如证书的作用就是验证身份、应用程序签名等)
2).简单了解一下钥匙串(知道钥匙串是啥,作用,以及在钥匙串中如何导入导出证书)
3)iOS开发人员使用的开发工具是啥。我的是Xcode。
4)找ios开发人员打包一个ipa的包给你,里面的ExportOptions.plist将对你有大用。(如果条件允许的话问问他们是否有使用过命令或者脚本打包过,如果能要到将减少你的工作量。努力做个资源咖)
5)找iOS开发人员观摩一下他们打包的过程,有些选项不同也会导致你的命令或脚本不同。
例如:For Me
如果勾选了对应的编译命令和导出ipa命令就应为(这只是命令,还要有正确配置好证书和描述文件,后面会阐述)
如果没有勾选的话
至于其他涉及到的选项只要你找开发人员要到ExportOptions.plist文件就不用单独去设置了而是像上面一样通过-exportOptionsPlist一样直接设置好了。
二.基本软件安装
软件安装网上有大量教程这里不再赘述。
1.gitlab
2.jenkins
3.Xcode(你需要xcode打包看看是否能打包,然后使用命令打包,然后使用脚本,最后才是jenkins打包,这样才能更容易定位问题,从最简单的开始,一步步来)
4.本地git安装
三.jekins实现ios自动打包的两种方式
1.插件安装
你需要安装的插件主要有:git、 gitlab、Xcode integration、keychains and Provisioning ,这里就不详细举例了,上述列出的必不可少。
方式二:问题分析下载keychains and Provisioning后,无法上传login.keychains-db文件,重命名为login.keychains后仍然无法上传,方式一就诞生了,即采用命令的方式授权访问login.keychains钥匙串。(方式二具体实现待补充)
方式一:在jekins所在服务器上配置ios的打包环境(推荐:方式二可能在新版jekins中存在钥匙串login.keychains无法上传的问题)
1.双击你从开发人员那里拿到的证书,然后证书就会被添加到钥匙串里。如果出现证书不受信任,可查看
iOS推送证书显示“此证书不受信任”_苹果手机邮箱证书显示不信任-CSDN博客
2.把描述文件添加到正确位置。
2.1 首先需要对描述文件重命名为 描述文件的UUID.mobileprovisiion
对于如何获取UUID可以参考
Xcode中描述文件的真实目录及查看描述文件的UUID_ios13.6 描述文件安装后存储路径-CSDN博客
2.2 将重命名后的文件拷贝到 /Users/用户名称/Library/MobileDevice/Provisioning Profiles
3.使用命令检查能否打包成功
建议:先使用Xcode打包一遍看看是否能否打包,然后再使用命令打包
双击xcodeproj文件就能使用xcode打开项目。可能你的项目根目录下是xcworkspace的类型文件,也没有关系
执行下面命令,你需要cd 到项目根目录
#ios编译前清理工程
xcodebuild clean -project iFoxESOP.xcodeproj \ #根目录下的xcodeproj文件
-scheme iFoxESOP \
-configuration Release
#如果你的根目录是 xcworkspace类型文件 也没关系 -project 变为 -workspace
xcodebuild clean -workspace iFoxESOP.xcworkspace \ #根目录下的xcworkspace文件
-scheme iFoxESOP \
-configuration Release
执行编译和导出ipa文件命令,具体如下图。(下图是根目录是xcodeproj文件的情况的时候的命令,如果是xcworkspace类型文件的话,把-project 变为 -workspace就好)
下面两张图开头已在开头详细说明了
或
4.如果命令可以打包成功了就可以配置Jenkins了。
1.新建任务以及从gitlab拉取到工作空间
具体可以参考我的另外一篇文章,在这里面有提及到如何实现,以及拉取代码的坑
jenkins+gitlab实现Android自动打包填坑之旅-CSDN博客
2.点击配置
3.在build shell->选择执行shell
4.esop.sh
5.最后就可以点击立即构建了(自动打包就完成了)