欢迎光临
我们一直在努力

在Mac服务器上配置Jenkins实现iOS项目自动打包(基于CocoaPods

在Mac服务器上配置Jenkins实现iOS项目自动打包(基于CocoaPods)

一直以来,公司测试组都通过Jenkins在Linux服务器上完成Java相关项目(Web、WAP、后台服务、Android等)的集成测试与打包。唯独iOS打包一直未能集成到同一流程中,测试组多次尝试也未成功。为了实现测试流程的统一管理,我最近花时间研究了iOS在Jenkins上的自动化打包方案,并将其成功落地。过程中踩了不少坑,尤其是对于使用CocoaPods的项目,这里将关键步骤与注意事项整理出来,供大家参考,也便于日后回溯。

为什么非要用Mac服务器?

很多团队最初可能和我一样,试图在Linux服务器上实现iOS打包,但最终会发现这条路走不通。根本原因在于:iOS打包依赖Xcode及其相关工具链(如xcodebuild),而这些工具只能在macOS系统上运行。网上大部分关于Jenkins + iOS的教程,也都是基于Mac服务器环境的。因此,如果你还在Linux上折腾iOS打包,建议尽快转向Mac环境。

环境与前提

  • 服务器:macOS
  • 项目依赖:CocoaPods
  • 目标:通过Jenkins实现iOS项目自动拉取代码、更新依赖、编译并生成ipa包

一、Jenkins安装(macOS)

在Mac上安装Jenkins非常简便,推荐使用Homebrew:

brew install jenkins

安装完成后,根据提示启动即可。例如临时测试可运行:

jenkins

启动后访问 http://localhost:8080 即可进行初始化配置。由于安装不是本文重点,具体步骤可参考其他通用教程。


二、Jenkins任务配置(以“Shanlincaifu”项目为例)

1. 创建自由风格项目
  • 任务名称:例如“Shanlincaifu”
  • 勾选 “丢弃旧的构建”,设置保留策略(例如:保持构建天数3天,最大保留个数30)
2. 源码管理

选择 Subversion(SVN),填写项目仓库地址。如果Jenkins未授权,会在错误提示处提供填写凭证(用户名/密码)的入口。

3. 添加Shell脚本(用于CocoaPods依赖更新)

由于项目使用CocoaPods,需在编译前更新Pod依赖。

  • 添加构建步骤 → Execute Shell
  • 在命令框中输入(请根据实际路径修改):

#!/bin/bash
cd /Users/xieqiang/.jenkins/jobs/Shanlincaifu/workspace
pod update –verbose –no-repo-update

注意:该步骤必须放在“源码拉取”之后,“Xcode编译”之前。可通过拖拽调整顺序。

4. 添加Xcode构建步骤
  • 添加构建步骤 → Xcode

(1)General build settings

  • Target:可不填(尤其适用于多Target项目)
  • Clean before build?:Yes
  • 勾选 Pack application and build .ipa?
  • .ipa filename pattern:自定义输出名称,如 Shanlincaifu-${BUILD_NUMBER}
  • Output directory:设置ipa输出目录,如 /Users/xieqiang/build_output/

(2)Code signing & OS X keychain options

  • Code Signing Identity:填写对应的签名标识,可在Xcode项目的 Build Settings → Code Signing → Code Signing Identity 中查看。若未配置,需提前申请证书与描述文件。
  • Embedded Profile:填写描述文件路径,如 /Users/xieqiang/shanlincaifu/cer/Shanlincaifu_Development.mobileprovision

(3)Advanced Xcode build options

  • Xcode Schema File:对于CocoaPods工程,需指定主项目的Schema。可通过以下命令查看:

    xcodebuild -list -workspace ShanLinCaiFu.xcworkspace

    本例填写:ShanLinCaiFu

    如果是非CocoaPods项目,可使用:

    xcodebuild -list -project ShanLinCaiFu.xcodeproj

  • SYMROOT:设置编译输出目录,如 /Users/xieqiang/.jenkins/jobs/Shanlincaifu/workspace/build

  • Custom xcodebuild arguments:添加参数

    CODE_SIGN_RESOURCE_RULES_PATH=$(SDKROOT)/ResourceRules.plist

    这是为了解决Xcode打包时签名失败的一个常见问题(据称为xcodebuild的bug),也可在Xcode项目文件中设置。

  • Xcode Workspace File:填写Workspace名称(如 ShanLinCaiFu)。若为普通项目,则在 Xcode Project File 中填写 .xcodeproj 名称。


三、开始构建

完成上述配置后,即可执行构建。Jenkins的构建日志非常详细,若遇到问题,可优先查看日志输出,定位错误环节。

总结

  • 环境选择:iOS打包必须在macOS上进行,勿在Linux上浪费时间。
  • 依赖处理:使用CocoaPods的项目,需在Xcode编译前通过Shell脚本执行 pod update。
  • 签名配置:确保证书与描述文件已正确配置,并在Jenkins中填写对应路径。
  • Schema指定:多Target或CocoaPods工程需明确指定主Schema。
  • 签名Bug处理:通过 CODE_SIGN_RESOURCE_RULES_PATH 参数避免签名失败。
  • 希望这篇记录能帮助正在尝试Jenkins + iOS自动化打包的团队少走弯路。如果有其他问题或经验补充,欢迎交流讨论。


    标签:Jenkins, iOS自动化打包, CocoaPods, 持续集成, Xcode, macOS

    赞(0)
    未经允许不得转载:171主机测评 » 在Mac服务器上配置Jenkins实现iOS项目自动打包(基于CocoaPods
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址