How do I add certificates for OS X Server 3.2.1 wi

2020-02-18 09:28发布

After I have upgraded both Xcode (to 6.0.1) and OS X Server (to 3.2.1) I can't figure out how to add certificates for the provisioning profiles so the Xcode bot can find them.

I have successfully added the provisioning file by copying the .mobileprovision file to /Library/Developer/XcodeServer/ProvisioningProfiles

But the error I get in the log is now:

CodeSign /Library/Developer/XcodeServer/Integrations/Caches/017d83d8975db54bc8279c2fcc0304a6/DerivedData/Build/Products/Server\ build-iphoneos/Test.app
    cd /Library/Developer/XcodeServer/Integrations/Caches/017d83d8975db54bc8279c2fcc0304a6/Source/TEST
    export CODESIGN_ALLOCATE=/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/codesign_allocate
    export PATH="/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin"

Signing Identity:     "iPhone Distribution: Greener Pastures ApS"
Provisioning Profile: "Greener Pastures Enterprise TEST"
                      (03F7CD73-FB25-422E-22A4-A80F12041005)

    /usr/bin/codesign --force --sign 746ADC85C62D54BEC9FA874A8D777A38D4DB95CA --keychain /Library/Developer/XcodeServer/Keychains/Portal.keychain --resource-rules=/Library/Developer/XcodeServer/Integrations/Caches/017d83d8975db54bc8279c2fcc0304a6/DerivedData/Build/Products/Server\ build-iphoneos/Fnug.app/ResourceRules.plist --entitlements /Library/Developer/XcodeServer/Integrations/Caches/017d83d8975db54bc8279c2fcc0304a6/DerivedData/Build/Intermediates/Fnug.build/Server\ build-iphoneos/Fnug.build/Fnug.app.xcent /Library/Developer/XcodeServer/Integrations/Caches/017d83d8975db54bc8279c2fcc0304a6/DerivedData/Build/Products/Server\ build-iphoneos/Fnug.app

746ADC85C62D54BEC9FA874A8D777A38D4DB95CA: no identity found
Command /usr/bin/codesign failed with exit code 1

Which looks like: "I can't find the certificate for the specified provisioning profile".

And it looks like the certificate should be in the file /Library/Developer/XcodeServer/Keychains/Portal.keychain – which, unfortunately I am unable to edit.

I have tried adding the certificate to the file by using

sudo security import "/Users/administrator/Desktop/Greener Pastures Enterprise Distribution TEST Certificate.p12" -k /Library/Developer/XcodeServer/Keychains/Portal.keychain -A -T /usr/bin/codesign -T /usr/bin/xcodebuild -T /usr/bin/pkgbuild

But that prompts me for the "keychain password". Which I don't have (no, it is not the administrator account's password or the certificate password).

Does anyone know how to fix this?

7条回答
成全新的幸福
2楼-- · 2020-02-18 09:54

I had the same issue. I fixed it through the following methods :

Xcode > Preferences > Accounts > View Details > And just refresh the Provisioning Profile 

Then Restart the Xcode and Clean & Build. 

View Details

查看更多
smile是对你的礼貌
3楼-- · 2020-02-18 09:58

This answer from Matt Moriarity brought me to a solution: https://devforums.apple.com/message/1022214#1022214

I just re-connected the build server with our development team. This made the Xcode-service to re-initialize all certificates and provisioning profiles it needs. Now the integration builds run without errors.

  1. In Server > Xcode > Settings > Builds > Development Teams click on Edit...

  2. Remove your development team(s) from the list and press OK

  3. After ther Server.app finished its work, there should be no entry behinde "Development Teams" and the list of devices is also empty.

  4. Now open Server > Xcode > Settings > Builds > Development Teams > Edit... again and add your development team

  5. After your team and devices re-appeared, you can start the integration build

It's important not to use your own provisioning profiles. Take the "iOS Developer (Automatic)" setting.

查看更多
Deceive 欺骗
4楼-- · 2020-02-18 10:10

When you export a .p12 file Keychain Access will ask you for a password. Try adding the password for the p12 file to your command. Like so,

sudo security import "/Users/administrator/Desktop/Greener Pastures Enterprise Distribution TEST Certificate.p12" -P PASSWORD -k /Library/Developer/XcodeServer/Keychains/Portal.keychain -A -T /usr/bin/codesign -T /usr/bin/xcodebuild -T /usr/bin/pkgbuild

I have a script on our build server that imports p12 files from a drop off folder. The import line looks like this:

security import $_ -k /Library/Developer/XcodeServer/Keychains/Portal.keychain -P PASSWORD -A

查看更多
冷血范
5楼-- · 2020-02-18 10:11

If you had it working with the old osx server and xcode 5. You just do:

$ mv /Library/Developer/XcodeServer/Keychains/Portal.keychain /Library/Developer/XcodeServer/Keychains/Portal.keychain.bkp

$ ln -s /Library/Keychains/System.keychain /Library/Developer/XcodeServer/Keychains/Portal.keychain

The old server used the system keychain.

查看更多
forever°为你锁心
6楼-- · 2020-02-18 10:11

For OX X Server 4.0 and XCode 6.1 is a much easier way:

  1. Open your Project with XCode on the Server add your Developer Account to "Accounts" and download all required provisioning profiles.

  2. Copy your Privisioning Profiles from /Users//Library/MobileDevices/Provisioning Profiles/ into /Library/Developer/XcodeServer/ProvisioningProfiles/

  3. Give read and write access for administrators for the folder /Library/Developer/XcodeServer/ProvisioningProfiles/

  4. Open KeyChaine Access double click on the provisioning profile keys (for example iOS Developer: XY) and allow access for all apps.

Done.

查看更多
Bombasti
7楼-- · 2020-02-18 10:13
  1. Install certificates(*.p12) to keychain on machine with Xcode server
  2. In Keychain.app copy "Login-My Certificates" to "System-My Certificates"
查看更多
登录 后发表回答