【问题标题】:Xcode : Generating an automatic comment upon ArchiveXcode:在存档时生成自动评论
【发布时间】:2012-06-05 14:45:42
【问题描述】:

背景: 我的项目包含两台后端服务器,一台用于开发,一台用于生产。 每次我为 QA 构建构建时,我都需要将构建所在的服务器放在 TestFlight 上(这没关系)。但是在我的 Xcode 存档列表中,我很容易获得 100 多个存档,如果它是 prod 或 dev 服务器,我必须手动放置。

这里的主要问题是当 QA 需要回滚到特定服务器上的特定版本时。

问题: 是否有自动方式在构建时对存档发表评论? 我想写一些类似的东西:

[内部版本号] - [Dev|Live] 服务器

谢谢

【问题讨论】:

  • 使用持续集成系统,例如Jenkins 用于此类任务。
  • 正如@Till 所提到的,我最终将Jenkins 与多个方案一起使用。

标签: ios xcode comments archive


【解决方案1】:

我们使用以下命令在构建后直接向存档添加注释(xcodebuild):

/usr/libexec/PlistBuddy -c "Add :Comment string \"your comment goes here\"" "$ARCHIVE_DIR/Info.plist"

$ARCHIVE_DIR 是相关存档的目录,例如。 g.:

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

【讨论】:

    【解决方案2】:

    我尝试了 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 中。或者,您可以关闭设置以自动打开管理器。然后,当您手动打开 Organizer 时,UI 将反映您插入的评论。
    【解决方案3】:

    嗨,根据其他答案,我做了类似的事情:

    1. 点击项目图标,选择“Edit Scheme...”
    2. 选择“存档/后操作”
    3. 按“+”“新建运行脚本动作”
    4. 将“提供构建设置从”更改为所需项目
    5. 选择外壳
    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 变量而不是基于搜索的本地化(不必要的开销)。

    【讨论】:

      【解决方案4】:

      google 后发现了这个老帖子,被主办方刷新问题很恼火,刚刚有了一个很丑陋的想法。 事实上,管理器会在 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 刷新文件夹内容是必要的。您将看到存档消失,然后再次出现。

      希望对你有帮助。

      【讨论】:

        猜你喜欢
        • 2011-06-15
        • 2011-12-01
        • 2013-02-03
        • 1970-01-01
        • 2016-10-30
        • 2019-03-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多