Xcode:生成存档时自动注释

8
背景: 我的项目包含两个后端服务器,一个用于开发,一个用于生产。每次我为QA构建时,我需要在TestFlight上注明构建所在的服务器(这没问题)。但是在我的Xcode存档列表中,我很容易得到100多个存档,在其中必须手动放置它是prod还是dev服务器。
主要问题在于当QA需要回滚到特定服务器上的特定版本时。 问题: 是否有一种自动方式来在构建时对存档进行注释? 我想放置类似以下内容的注释:

[Build Number] - [Dev|Live] Server

谢谢

1
使用像Jenkins这样的持续集成系统来完成这些任务。 - Till
正如@Till所提到的,我最终使用了具有多个方案的Jenkins。 - Charles Vu
4个回答

1
我们使用以下命令在构建(xcodebuild)后直接向归档添加评论:
/usr/libexec/PlistBuddy -c "Add :Comment string \"your comment goes here\"" "$ARCHIVE_DIR/Info.plist"

假设$ARCHIVE_DIR是所需存档的目录,例如:

ARCHIVE_DIR=`ls -dt1 $HOME/Library/Developer/Xcode/Archives/*/*.xcarchive |head -n1`

1

我尝试了Norman的想法,但无法使语法正常工作。最终我使用了:

ARCHIVE_DIR=$(ls -dt1 $HOME/Library/Developer/Xcode/Archives/*/*.xcarchive/Info.plist |head -n1)
/usr/libexec/PlistBuddy -c "Add :Comment string \"your comment goes here\"" "$ARCHIVE_DIR"

这个方法是可行的,但如果你的存档方案设置为自动打开组织器,那么只有在重新启动Xcode后,新的注释才会在组织器的UI中反映出来。或者,你可以关闭自动打开组织器的设置。然后,当你手动打开组织器时,UI将反映你插入的注释。 - codeperson

1

嗨,基于其他答案,我做了以下操作:

  1. 点击项目图标,然后选择“Edit Scheme...”
  2. 选择“Archive/Post-actions”
  3. 按“+”键,“New Run script action”
  4. 更改“Provide build settings from”为所需的项目
  5. 选择shell
  6. 粘贴此脚本(假设已使用git):
cd "$PROJECT_FILE_PATH"
BRANCH=$(basename `git describe --all`)
COMMIT_HASH=$(git rev-parse HEAD | awk '{print substr($0,0,7)}')
ARCHIVE_PATH=$(dirname "$ARCHIVE_PRODUCTS_PATH")
ARCHIVE_NAME=${ARCHIVE_PATH}/Info.plist
DEST_DIR="<desired destination path>"

/usr/libexec/PlistBuddy -c "Add :Comment string \"${BRANCH}_${COMMIT_HASH}\""  "$ARCHIVE_NAME"

if [ -d "$DEST_DIR" ]; then
    PACKAGE_NAME=$DEST_DIR/${BRANCH}_${COMMIT_HASH}_${PRODUCT_NAME}

    xcodebuild -sdk $SDKROOT -archivePath "$ARCHIVE_PATH" -exportPath "$PACKAGE_NAME" -exportFormat ipa -exportArchive -exportProvisioningProfile "your provisioning profile name"
fi

相比其他解决方案,优势在于存档是基于XCode变量本地化的,而不是基于搜索(不必要的开销)。

1

在谷歌搜索后找到了这篇旧文章,非常烦恼组织者刷新的问题,于是我有了一个很丑陋的想法。实际上,在FS更新时自动刷新组织者。

因此,我尝试在更新其plist后将归档移动,然后将其移回其初始位置。像这样:

ARCHIVE_PATH=$(dirname "$ARCHIVE_PRODUCTS_PATH")
ARCHIVE_PLIST=${ARCHIVE_PATH}/Info.plist

/usr/libexec/PlistBuddy -c "Add :Comment string \"your comment goes here\"" "$ARCHIVE_PLIST"

mv "$ARCHIVE_PATH" "$ARCHIVE_PATH"_TMP
sleep 1
mv "$ARCHIVE_PATH"_TMP "$ARCHIVE_PATH"

睡眠是让OS X刷新文件夹内容所必需的。您会看到归档文件消失,然后再次出现。
希望这有所帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接