You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过脚本为Xcode Cloud CI程序化设置版本号与构建号?

如何通过Xcode Cloud的ci_scripts控制版本号与构建号

可以通过ci_scripts实现版本号和构建号的自定义控制,直接修改Info.plist无效的原因是:Xcode Cloud构建时会优先读取项目配置(而非硬编码的Info.plist值),如果你的项目里用了MARKETING_VERSION(对应CFBundleShortVersionString)和CURRENT_PROJECT_VERSION(对应CFBundleVersion)变量,直接修改Info.plist会被Xcode的项目配置覆盖。

以下是具体实现步骤:

  1. 确认项目配置
    在Xcode的项目设置→Info标签页中,将版本(MARKETING_VERSION)和构建(CURRENT_PROJECT_VERSION)设置为变量形式(比如直接用$(MARKETING_VERSION)和$(CURRENT_PROJECT_VERSION)),不要硬编码具体数值。

  2. 创建构建前脚本
    在项目根目录新建ci_scripts文件夹,添加pre-xcodebuild.sh文件(Xcode Cloud会自动执行该目录下的构建前脚本),内容如下:

    #!/bin/bash
    
    # 根据Xcode Cloud工作流名称区分构建类型
    if [[ "$CI_WORKFLOW" == "Debug 构建" ]]; then
        # 调试构建版本号规则
        MARKETING_VERSION="1.0.0-debug"
        CURRENT_PROJECT_VERSION="$CI_BUILD_NUMBER" # 用Xcode Cloud自增构建号
    elif [[ "$CI_WORKFLOW" == "Release 构建" ]]; then
        # 发布构建版本号规则
        MARKETING_VERSION="1.0.0"
        CURRENT_PROJECT_VERSION="$CI_BUILD_NUMBER"
    fi
    
    # 修改项目配置文件中的版本号变量
    # 替换成你的项目文件名
    sed -i '' "s/MARKETING_VERSION = .*;/MARKETING_VERSION = $MARKETING_VERSION;/" YourProject.xcodeproj/project.pbxproj
    sed -i '' "s/CURRENT_PROJECT_VERSION = .*;/CURRENT_PROJECT_VERSION = $CURRENT_PROJECT_VERSION;/" YourProject.xcodeproj/project.pbxproj
    
  3. 配置脚本权限
    在本地执行chmod +x ci_scripts/pre-xcodebuild.sh,给脚本添加可执行权限,然后提交到Git仓库。

  4. 关键说明

    • CI_WORKFLOW是Xcode Cloud内置环境变量,对应你在Xcode Cloud后台创建的工作流名称,需确保脚本中的判断值与实际工作流名称一致。
    • CI_BUILD_NUMBER是Xcode Cloud自动生成的自增构建号,也可自定义构建号规则(比如拼接日期)。
    • 如果项目有多个Target,需调整sed命令,匹配对应Target的配置段,确保修改生效。

内容的提问来源于stack exchange,提问作者Shivacharan Reddy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 22:32:08