Jenkins CI/CD 持续集成专题九 -Mac服务器上配置Jenkins实现iOS项目自动打包

为什么非要用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)

  1. 源码管理

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

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

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

添加构建步骤 → Execute Shell

在命令框中输入(请根据实际路径修改):

复制代码
#!/bin/bash
cd /Users/xieqiang/.jenkins/jobs/Shanlincaifu/workspace
pod update --verbose --no-repo-update

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

  1. 添加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 参数避免签名失败。
相关推荐
leluckys2 小时前
Jenkins CI/CD 持续集成专题十-jenkins 可以通过api 打ios包
ios·ci/cd·jenkins
会飞的大可2 小时前
前后端一体化CI/CD设计与实现:告别手动部署,实现全链路自动化交付
运维·ci/cd·自动化
和沐阳学逆向11 小时前
iOS逆向_古法逆向_Instagram最新版抓包
macos·ios·cocoa
自学AI的鲨鱼儿16 小时前
mac npm 安装 codex 报错 npm ENOTEMPTY
macos·npm·codex
风.foxwho17 小时前
jenkins使用 ED25519密钥 拉取Git 代码 配置
git·servlet·jenkins
夫礼者1 天前
【极简监控】核弹级排障利器:仿 Jenkins Script Console 打造免重启诊断“黑科技”
java·jenkins·监控·排错
Sephiroth.Ma1 天前
Mac 提示“Docker 已损坏,无法打开”?我这样排查后 10 分钟修好
macos·docker·容器
量子炒饭大师1 天前
【OpenClaw修炼宝典】—— 【macOS安装篇】想玩《爪子船长》复刻版却卡在安装?OpenClaw 从零环境搭建与编译全攻略 (小白避坑指南)
macos·openclaw·小龙虾·龙虾