xcodecode-signingkeychainxcodebuildcodesign

CLI: Switch keychains in order to sign an xcodebuild


I am trying to switch on a certain keychain, and close another one. I need this because our enterprise & appstore identities are called the same.

Right now, I do a "security unlock-keychain" followed by a "security default-keychain" to open the correct keychain and do a "security lock-keychain" on the keychain I wish not to use.

But xcodebuild still sees the entries in both keychains and gives up.

iPhone Distribution: Company name.: ambiguous (matches "iPhone Distribution: Company name." in /Users/user/Library/Keychains/login.keychain and "iPhone Distribution: Company name" in /Users/user/Library/Keychains/enterprise.keychain)

How do I prevent the system from finding the entry in the keychain that I lock?


Solution

  • Solution: I've put all the appstore related stuff in the login keychain, and the enterprise stuff in a seperate keychain file.

    In the buildscript, I switch between those as follows:

        # 1. Only activate the System and either the Appstore(=login) or Enterprise keychain.
    security list-keychains -s $KEYCHAIN_NAME $SYSTEM_KEYCHAIN
    
    # 2. Loop through App Schema's
    for APP_SCHEME in ${APP_SCHEMES[@]}; do
        echo "--=  Processing $APP_SCHEME  =--"
        xcodebuild -scheme "${APP_SCHEME}" archive
    done ### Looping through App Schema's
    
    # 3. Restore login & system keychains
    security list-keychains -s $APPSTORE_KEYCHAIN $ENTERPRISE_KEYCHAIN $SYSTEM_KEYCHAIN