我是DevOps的新手,所以如果我错过了一些基本的东西,请放轻松我:)
我在Azure管道中使用以下内容:托管MacOS与Xcode构建代理(Xcode版本5.142.0)
我刚开始尝试为基于Xcode的项目设置管道,该项目使用多个配置文件。在我的场景中,我在我的应用程序中有以下配置文件:
我在这里遵循了设置证书和配置文件的说明(虽然我的项目使用自动签名):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应用程序,以便在Azure DevOps中工作。
<?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>
经过仔细检查后发现,我一直使用的开发证书是错误的(我的Mac上有一些)。我把它换成了适当的版本,问题就消失了。
我现在可以成功构建,存档和签名。
希望这有助于某人。
安德鲁
确保正确定位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)'