Azure Devops Pipelines - Xcode project with multiple provisioning profiles fails archive and sign

后端 未结 3 1036
别跟我提以往
别跟我提以往 2020-12-20 03:31

I\'m new to DevOps so please go easy on me if I\'ve missed something basic :)

I’m using the following in Azure Pipelines: Hosted MacOS with an Xcode Build Agent (Xcod

相关标签:
3条回答
  • 2020-12-20 03:46

    Make sure to correctly target your Project's .xcworkspace file instead of letting it default to <Project Name>.xcodeproj/project.xcworkspace. This haunted me for two days while testing.

    Example:

    - 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)'
    
    0 讨论(0)
  • 2020-12-20 03:54

    Here's how we got building an iOS app with multiple provisioning profiles to work in Azure DevOps.

    • Ensure you have the Apple App Store Azure DevOps extension written by Microsoft installed in your account.
    • Install all of the provisioning profiles that are needed using multiple Install Apple Provisioning Profile tasks
    • Add the Xcode build task and configure it with your workspace/project settings
    • Set the "Signing style" to "Automatic signing" and provide your team ID in the "Team ID" field under the "Signing & provisioning" section
    • Create a .plist file, configure it similar to the following, and put it somewhere (your code repository, secure files, etc). This example is of a watch app, but could be any scenario where multiple provisioning profiles are necessary. You can find a provisioning profile's UUID by opening it in a text editor and looking for the "UUID" key.
        <?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>
    
    • Under the "Package options" section, specify "Plist" in the "Export options" field and provide a path to the .plist you created in the "Export options plist" field
    0 讨论(0)
  • 2020-12-20 04:00

    it turns out after closer inspection the development certificate I had been using was the wrong one (there were a few on my Mac). I swapped this for the appropriate version and the issues went away.

    I can now successfully build, archive and sign.

    Hopefully this helps someone.

    Andrew

    0 讨论(0)
提交回复
热议问题