我目前在独立服务器上使用 Jenkins 进行 iOS 持续集成。Jenkins 构建、测试和创建 HTML 链接,以便可以从临时设备(持续交付)下载应用程序。
每当我发布 App Store 版本时,我都会得到我想要的构建代码,并从中构建。这带来了一个问题,因为尽管代码相同,但由于涉及两台不同的机器,因此不能保证二进制文件相同。
您通常会读到,在持续集成中发布应该是非事件。这适用于我的日常构建,但是,在持续集成环境中发布 App Store 的最佳方法是什么?
我目前在独立服务器上使用 Jenkins 进行 iOS 持续集成。Jenkins 构建、测试和创建 HTML 链接,以便可以从临时设备(持续交付)下载应用程序。
每当我发布 App Store 版本时,我都会得到我想要的构建代码,并从中构建。这带来了一个问题,因为尽管代码相同,但由于涉及两台不同的机器,因此不能保证二进制文件相同。
您通常会读到,在持续集成中发布应该是非事件。这适用于我的日常构建,但是,在持续集成环境中发布 App Store 的最佳方法是什么?
我最终在 Jenkins 中添加了一个新工作,它只构建一个.xcodearchive
. 该作业属于管道,是要执行的最后一个任务。用于构建存档的命令是:
xcodebuild -scheme ${JK_SCHEMA_NAME} -archivePath ${JK_OUTPUT_DIR}/${JK_ARCHIVE_NAME} clean archive "CODE_SIGN_IDENTITY=${JK_CODE_SIGN_IDENTITY}" "GCC_PREPROCESSOR_DEFINITIONS=${GCC_PREPROCESSOR_DEFINITIONS} ${JK_GCC_PREPROCESSOR_DEFINITIONS}" "PROVISIONING_PROFILE=${JK_PROVISIONING_PROFILE_UDID}"
通过这种方式,我可以确保将应用程序从提交到最终二进制文件的交付流程是完全自动化的(或者至少不需要人工交互)。版本号设置正确,源代码或编译选项没有更改,可以更改上传到商店的最终存档。