Jenkins 打包 iOS App 的方法与实践

在现代软件开发流程中,持续集成 (Continuous Integration, CI) 和持续交付 (Continuous Delivery, CD) 是至关重要的概念。Jenkins 作为一个广泛使用的开源 CI/CD 工具,能够帮助开发团队自动化构建、测试和部署等任务。本文将介绍如何使用 Jenkins 打包 iOS 应用程序,并提供代码示例。

环境准备

在开始之前,确保你已具备以下环境:

  • macOS 系统(Jenkins 需要运行于 macOS 上以支持 iOS 打包)
  • Jenkins 安装及基本配置
  • Xcode 安装,并配置好 iOS 开发环境
  • 对 iOS 应用的代码托管在 Git 仓库中

Jenkins 安装及基本配置

# 使用 Homebrew 安装 Jenkins
brew install jenkins-lts

# 启动 Jenkins
brew services start jenkins-lts

# 访问 Jenkins 界面
# 默认地址是 http://localhost:8080

在 Jenkins 界面中,您需要安装几种插件,例如:

  • Git plugin(支持 Git 仓库)
  • Xcode plugin(方便进行 iOS 项目的构建)

在安装完成后,您可以创建一个新的自由风格项目。

配置项目

  1. 源代码管理
    在新的 Jenkins 项目中,选择 "Git" 作为源代码管理,输入您的 Git 仓库 URL。

  2. 构建触发器
    设置为 "Poll SCM" 或者 "Build periodically",根据需要而定。

  3. 构建环境
    在构建环境部分,您可以使用 SSH 或者自定义脚本进行设置。确保您的 macOS 被配置成允许 Jenkins 访问 Xcode。

  4. 构建步骤
    在 "构建" 部分,选择 "Execute shell" 并输入如下命令来打包应用。

#!/bin/bash

set -e

# 定义变量
WORKSPACE=$WORKSPACE
PROJECT_NAME="YourProject"
SCHEME_NAME="YourScheme"
EXPORT_OPTIONS_PLIST="ExportOptions.plist"

# 进行清理
xcodebuild clean -workspace "$WORKSPACE/$PROJECT_NAME.xcworkspace" -scheme "$SCHEME_NAME"

# 构建项目并生成 IPA 文件
xcodebuild archive -workspace "$WORKSPACE/$PROJECT_NAME.xcworkspace" -scheme "$SCHEME_NAME" -archivePath "$WORKSPACE/build/${PROJECT_NAME}.xcarchive"

xcodebuild -exportArchive -archivePath "$WORKSPACE/build/${PROJECT_NAME}.xcarchive" -exportPath "$WORKSPACE/build" -exportOptionsPlist "$EXPORT_OPTIONS_PLIST"

这里的 ExportOptions.plist 是您需要自己创建的文件,包含有关如何导出构建的配置,例如签名证书和配置文件。

ExportOptions.plist 示例

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "
<plist version="1.0">
<dict>
    <key>method</key>
    <string>app-store</string>
    <key>teamID</key>
    <string>YourTeamID</string>
    <key>uploadBitcode</key>
    <true/>
    <key>thinning</key>
    <string>&lt;none&gt;</string>
</dict>
</plist>

生成报告与可视化

打包完成后,我们可以生成一些可视化的报告来展示构建的情况。例如,我们可以用饼状图展示不同构建方式的构建比例。

pie
    title Build Type Distribution
    "Manual": 40
    "Automated": 60

另外,使用实体关系图 (ER Diagram) 来显示项目与 Jenkins 的关系,可以更好地理解数据流动。

erDiagram
    PROJECT {
        string id PK
        string name
        string version
    }
    JENKINS {
        string id PK
        string name
    }

    PROJECT ||--o{ JENKINS : "builds"

总结

Jenkins 提供了一个强大的平台来自动化构建和测试 iOS 应用,使用上述步骤和代码示例,您可以轻松设置构建流程。当项目代码发生变更时,Jenkins 会自动启动构建流程,并生成相应的应用程序包(IPA)。这样的设置不仅提高了开发效率,还确保了代码质量。欢迎您根据自己的需求调整脚本及配置,并深入挖掘 Jenkins 的更多功能!