Xcode Cloud自动生成TestFlight测试发布笔记失败求助
解决Xcode Cloud中Git标签获取失败的问题
问题根源
Xcode Cloud默认采用**浅克隆(Shallow Clone)**拉取代码,仅获取当前分支的最新提交,不会同步完整仓库历史和远程标签,导致本地git环境找不到任何标签,触发No tags can describe错误。
修复后的脚本
# 将浅克隆转为完整克隆(若已是完整克隆则忽略错误) git fetch --unshallow || true # 拉取所有远程标签到本地 git fetch --tags -q # 获取最近的标签;若无标签则取仓库根提交的哈希值 lastTag=$(git describe --tags --abbrev=0 2>/dev/null || git rev-list --max-parents=0 HEAD) echo "last tag: $lastTag" # 生成从lastTag到当前HEAD的提交记录,写入TestFlight描述文件 git log --pretty=format:"%s" "$lastTag..HEAD" > "$CI_WORKSPACE/TestFlight/WhatToTest.en-US.txt"
关键修改说明
git fetch --unshallow || true:强制将浅克隆转为完整克隆,确保能访问所有历史提交和标签;加|| true是为了避免仓库已是完整克隆时的报错中断脚本。- 标签 fallback 逻辑:当仓库还没有任何标签时,用
git rev-list --max-parents=0 HEAD获取根提交的哈希,保证git log命令能正常输出所有提交记录,不会因为lastTag为空而失败。 git fetch --tags -q:明确拉取所有远程标签,确保本地标签列表与远程同步。
额外验证
如果问题仍存在,检查Xcode Cloud的构建配置:确保在Pre-build阶段执行该脚本,且构建账号拥有仓库的标签读取权限。
内容的提问来源于stack exchange,提问作者Tommy Sadiq Hinrichsen
相关产品推荐
相关产品推荐

