2017-02-27 201 views
0

我使用命令行工具(xcodebuild)導出App檔案。本質上,這是我運行的是什麼:codesign --keychain被忽略

xcodebuild -workspace "${WORKSPACE_PATH}" \ 
    -scheme "${SCHEME_NAME}" \ 
    -archivePath "${PROJECT_ARCHIVE}" \ 
    -configuration "${CONFIGURATION}" \ 
    -sdk "${TARGET_SDK}" \ 
    DEVELOPMENT_TEAM="XXXXXXXX" \ 
    OTHER_CODE_SIGN_FLAGS="--keychain /Users/user/Library/Keychains/jenkins.keychain" \ 
    archive 

這是結果:因爲codesign忽略--keychain參數

Check dependencies 
No signing certificate "iOS Development" found: No "iOS Development" signing certificate matching team ID "XXXXXXX" with a private key was found. 
Code signing is required for product type 'Application' in SDK 'iOS 10.2' 

** ARCHIVE FAILED ** 


The following build commands failed: 
Check dependencies 
(1 failure) 
$ echo $? 
65 

代碼簽名失敗。現在這裏是有趣的部分。我想要使​​用的鑰匙串是jenkins.keychain-db(如上所述)。這當然不起作用。這是我的鑰匙串搜索列表:

$ security list-keychains 
"/Users/user/Library/Keychains/login.keychain-db" 
"/Library/Keychains/System.keychain" 

顯然jenkins.keychain-db不存在,因爲它應該是。如果我在搜索列表中添加jenkins.keychain-db,它開始工作。

不幸的是,這不是我的解決方案,因爲我確實有多個keychains具有相同的私鑰和證書。這導致xcodebuild拿起第一個權利證書,它可以找到哪個將失敗,因爲鑰匙串可能未解鎖。

回答

1

您可以協同設計更傾向於使用定製的鑰匙扣以下命令:

security list-keychains -d user -s jenkins.keychain 
security default-keychain -s jenkins.keychain 

# to unlock the kechain: 
security unlock-keychain -p $PW jenkins.keychain 

xcodebuild聯編將這個權利...

可以省略-db擴展。沒有必要使用它,並會導致混淆行爲。

您可能希望在構建完成後清理它:

security list-keychains -d user -s login.keychain 
security default-keychain -s login.keychain 
+0

僅爲什麼從塞拉利昂? –