Azure Devops管道 - 具有多个配置文件的Xcode项目无法存档和签名

问题描述 投票:1回答:3

我是DevOps的新手,所以如果我错过了一些基本的东西,请放轻松我:)

我在Azure管道中使用以下内容:托管MacOS与Xcode构建代理(Xcode版本5.142.0)

我刚开始尝试为基于Xcode的项目设置管道,该项目使用多个配置文件。在我的场景中,我在我的应用程序中有以下配置文件:

  • 意图
  • ItentsUI
  • 窗口小部件
  • 应用

我在这里遵循了设置证书和配置文件的说明(虽然我的项目使用自动签名):https://docs.microsoft.com/en-us/azure/devops/pipelines/apps/mobile/app-signing?view=vsts&tabs=apple-install-during-build

这些正确安装到托管构建代理程序(没有错误),并且构建正在进行,直到签名。

在签名期间,似乎没有任何目标可以找到他们的配置文件(使用'手动'和'自动'分配时)。

这是日志中运行的内容:

[command]/usr/bin/xcodebuild -workspace /Users/vsts/agent/2.142.1/work/1/s/*MYAPP**.xcworkspace -scheme **MYAPP** archive -sdk iphoneos -configuration Release -archivePath /Users/vsts/agent/2.142.1/work/1/s/**MYAPP** CODE_SIGN_STYLE=Manual PROVISIONING_PROFILE= PROVISIONING_PROFILE_SPECIFIER= | /usr/local/bin/xcpretty --no-color

然后,在归档时,每个方案都会发生以下情况:

error: "xxx Today Widget" requires a provisioning profile with the Push Notifications and App Groups features. Select a provisioning profile for the "Release" build configuration in the project editor. (in target 'xxx Today Widget')

几个问题:

1.)是否有任何人可以指向我的更新指南?这似乎是一个常见的用例,我显然遗漏了一些东西。

2.)或者有一种方法可以在同一版本中归档和签署多个方案时强制哪个配置文件用于哪个方案?

3.)是否在管道中自动签署选项?

为了完整性,我在这里看到了类似的问题:https://github.com/Microsoft/azure-pipelines-tasks/issues/964,但已关闭了两年多。

谢谢你看看伙计!

安德鲁

ios xcode azure-devops azure-pipelines
3个回答
2
投票

以下是我们如何构建具有多个配置文件的iOS应用程序,以便在Azure DevOps中工作。

  • 确保您的帐户中安装了Microsoft编写的Apple App Store Azure DevOps extension
  • 使用多个Install Apple Provisioning Profile任务安装所需的所有配置文件
  • 添加Xcode build task并使用您的工作区/项目设置进行配置
  • 将“签名样式”设置为“自动签名”,并在“签名和配置”部分下的“团队ID”字段中提供您的团队ID
  • 创建一个.plist文件,将其配置为类似于以下内容,并将其放在某处(您的代码存储库,安全文件等)。此示例属于监视应用程序,但可能是需要多个配置文件的任何方案。您可以通过在文本编辑器中打开它并查找“UUID”键来查找配置文件的UUID。
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
        <key>provisioningProfiles</key>
        <dict>
            <key>YOUR_BUNDLE_ID.watchkitapp.watchkitextension</key>
            <string>UUID_OF_ASSOCIATED_PROVISIONING_PROFILE</string>
            <key>YOUR_BUNDLE_ID.watchkitapp</key>
            <string>UUID_OF_ASSOCIATED_PROVISIONING_PROFILE</string>
            <key>YOUR_BUNDLE_ID</key>
            <string>UUID_OF_ASSOCIATED_PROVISIONING_PROFILE</string>
        </dict>
        <key>signingCertificate</key>
        <string>iOS Distribution</string>
        <key>signingStyle</key>
        <string>manual</string>
        <key>method</key>
        <string>app-store</string>
        <key>teamID</key>
        <string>YOUR_TEAM_ID</string>
    </dict>
    </plist>
  • 在“包选项”部分下,在“导出选项”字段中指定“Plist”,并提供在“导出​​选项plist”字段中创建的.plist的路径

0
投票

经过仔细检查后发现,我一直使用的开发证书是错误的(我的Mac上有一些)。我把它换成了适当的版本,问题就消失了。

我现在可以成功构建,存档和签名。

希望这有助于某人。

安德鲁


0
投票

确保正确定位Project的.xcworkspace文件,而不是将其默认为<Project Name>.xcodeproj/project.xcworkspace。这让我在测试时困扰了两天。

例:

- task: Xcode@5
  inputs:
    sdk: '$(sdk)'
    scheme: '$(scheme)'
    configuration: '$(configuration)'
    xcWorkspacePath: '**/<Project Name>.xcworkspace' # Make sure this line is here
    xcodeVersion: 'default' # Options: default, 10, 9, 8, specifyPath
    exportPath: '$(agent.buildDirectory)/output/$(sdk)/$(configuration)'
© www.soinside.com 2019 - 2024. All rights reserved.