Jenkins+fastlane打包出现找不到对应scheme的问题

最近在尝试搭建Jenkins+fastlane持续集成环境,在打包的iMac第一次执行Jenkins任务打包多target项目时总是打包不到指定的scheme,所以记录下这次的问题。

1.什么是target和scheme

target

一个项目可以包含一个或多个target,每个target有自己对应的编译信息且互不影响,我们最终编译成的app就是一个target。

scheme

一个scheme定义了你项目的Build,Test,Archive等命令所执行对应的target,一个scheme对应一个target,但是一个target可以有多个scheme。

2.问题描述

[09:45:37]: �[31mCouldn't find specified scheme 'xxxx'. Please make sure that the scheme is shared, see https://developer.apple.com/library/content/documentation/IDEs/Conceptual/xcode_guide-continuous_integration/ConfigureBots.html#//apple_ref/doc/uid/TP40013292-CH9-SW3�[0m

上面就是Jenkins执行任务时出现的问题log,我们知道一个scheme对应一个target,当Manage Schemes里勾选了Autocreate schemems时,复制一个target时会自动创建对应的scheme,Xcode里的scheme如下:


截屏2021-04-28 上午11.48.17.png

按照log的字面意思,是SchemeB没有勾选shared,但是我们打开Manage Schemes查看里面的shared复选框确实选中了,如图所示:


截屏2021-04-28 下午2.58.16.png

Fastfile文件里配置如下:
build_number = get_build_number_from_plist(target: SchemeB)
build_app(
        configuration:"Release",
        clean: true,
        workspace: "MyApp.xcworkspace",
        scheme: SchemeB,
        export_method: "development",
        output_name:"SchemeB_#{build_number}.ipa",
        output_directory: "xxxx/IPA"
    )

Fastfile里的配置是正确的,SchemeB的Shared复选框我们也勾选中了,那build_app为啥还是找不到SchemeB呢?当我们把SchemeB的Shared复选框勾选去掉然后再勾选下,然后重新执行Jenkins任务,发现就能成功找到SchemeB并成功打包,但这并不是我们想要的,毕竟自动化的东西我为啥还是手动去掉勾选再重新勾选呢。

3.问题解决

fastlane里的buildapp执行xcodebuild,Fastfile里的一些配置文件实际上也都是传给了xcodebuild,包括scheme,workspace,configuration等,build_app执行xcodebuild前会遍历MyApp/MyApp.xcodeproj/xcshareddata/xcschemes里xcscheme文件,如果有,则执行对应的scheme,否则执行第一个scheme,所以出现上述问题,就是xcshareddata文件夹里不存在对应的xcscheme文件或者xcshareddata文件夹不存在,这里大概介绍下xcshareddata文件夹,项目一开始创建是没有xcshareddata文件夹的,当某个scheme下的Shared复选框被选中,则会创建xcshareddata文件夹和xcschemes文件夹,并在xcschemes文件夹里创建SchemeB.xcscheme,而我们打包的iMac里的项目并不存在xcshareddata文件夹,但本地项目存在,由此判断是没有把xcshareddata和里面的xcscheme上传到git,把gitignore里的 *.xcscheme和 *.xcshareddata去掉并且重新上传到git即可。

4.总结

第一次写文章,文笔和描述可能会比较乱,望包涵,如有错误,请指出谢谢。Jenkins+fastlane持续集成有很多坑要踩,只有踩的坑多,才能更加了解其原理,大家一起共勉。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容