2014-12-27 32 views
19

Travis CI無法構建我的應用程序,因爲Xcode項目設置爲需要代碼簽名,而Travis沒有我的證書。我可以通過禁用代碼簽名來解決這個問題,但是沙箱和授權不起作用。我知道從命令行通常構建時,您可以通過CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NOxcodebuild來禁用代碼簽名,但是您如何在Travis CI中執行此操作?Travis CI無法構建代碼簽名錯誤

這裏是我的.travis.yml

language: objective-c 
xcode_workspace: "Mac Linux USB Loader.xcworkspace" 
xcode_scheme: "Mac Linux USB Loader" 

而這裏的錯誤(我已經碼了許多以前的線指的CocoaPods,因爲他們是不相關的:

Check dependencies 
Code Sign error: No code signing identities found: No valid signing identities (i.e. certificate and private key pair) matching the team ID 「T47PR9EQY5」 were found. 

回答

14

你有沒有嘗試添加此對你travis.yml:

language: objective-c 

script: 
    - xcodebuild [DEFAULT_OPTIONS] CODE_SIGNING_REQUIRED=NO 

或導入一個開發(和分佈如果您將使用您的版本)證書/密鑰到鑰匙串並複製您的團隊配置文件,以使代碼簽署工作。就像這樣:

language: objective-c 

before_script: 
- ./scripts/add-key.sh 

script: 
    - xcodebuild [DEFAULT_OPTIONS] CODE_SIGNING_REQUIRED=NO 

add-key.sh

#!/bin/sh 

KEY_CHAIN=ios-build.keychain 
security create-keychain -p travis $KEY_CHAIN 
# Make the keychain the default so identities are found 
security default-keychain -s $KEY_CHAIN 
# Unlock the keychain 
security unlock-keychain -p travis $KEY_CHAIN 
# Set keychain locking timeout to 3600 seconds 
security set-keychain-settings -t 3600 -u $KEY_CHAIN 

# Add certificates to keychain and allow codesign to access them 
security import ./scripts/certs/dist.cer -k $KEY_CHAIN -T /usr/bin/codesign 
security import ./scripts/certs/dev.cer -k $KEY_CHAIN -T /usr/bin/codesign 

security import ./scripts/certs/dist.p12 -k $KEY_CHAIN -P DISTRIBUTION_KEY_PASSWORD -T /usr/bin/codesign 
security import ./scripts/certs/dev.p12 -k $KEY_CHAIN -P DEVELOPMENT_KEY_PASSWORD -T /usr/bin/codesign 

echo "list keychains: " 
security list-keychains 
echo " ****** " 

echo "find indentities keychains: " 
security find-identity -p codesigning ~/Library/Keychains/ios-build.keychain 
echo " ****** " 

# Put the provisioning profile in place 
mkdir -p ~/Library/MobileDevice/Provisioning\ Profiles 

cp "./scripts/profiles/iOSTeam_Provisioning_Profile_.mobileprovision" ~/Library/MobileDevice/Provisioning\ Profiles/ 
cp "./scripts/profiles/DISTRIBUTION_PROFILE_NAME.mobileprovision" ~/Library/MobileDevice/Provisioning\ Profiles/ 
+0

這個答案對我的作品,應該將其標記爲接受,如果它也適用於你@SevenBits –

1
language: objective-c 
script: xctool -project [xcodeproject] -scheme [scheme] build CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO 

你可以參考this .travis.yml

9

請在下面找到我的.travis.yml文件,修復這個錯誤消息和其他,當使用Xcode 7項目+ Swift + iOS 9 +在travis-ci.org上提供的持續集成工具時:

# http://docs.travis-ci.com/user/languages/objective-c/ 
# https://github.com/facebook/xctool 

language: objective-c 

osx_image: xcode7 

# xcode_project: SampleNotifcations/SampleNotifcations.xcodeproj 
# xcode_workspace: SampleNotifcations/SampleNotifcations.xcworkspace 

# xcode_scheme: SampleNotifcationsTests 

podfile: SampleNotifcations/Podfile 

# xcode_sdk: iphonesimulator9.0 

script: 

    xctool 
    -workspace SampleNotifcations/SampleNotifcations.xcworkspace 
    -scheme SampleNotifcationsTests 
    -sdk iphonesimulator 
    -destination 'platform=iOS Simulator,name=iPhone 6 Plus' 
    build 
    test 
    ONLY_ACTIVE_ARCH=NO 
    CODE_SIGN_IDENTITY="" 
    CODE_SIGNING_REQUIRED=NO 

before_install: 
    - brew update 
    - brew uninstall xctool && brew install --HEAD xctool 

來源:

+0

我不使用的iOS。 – SevenBits

3

如果您不需要建立iphoneos,例如如果你只是想知道項目是否構建或者你的單元測試通過了。您可以指定iphonesimulator sdk。通過這樣做,xctool將不會簽署代碼。

script: xctool -sdk iphonesimulator -workspace {WORKSPACE}.xcworkspace -scheme {SCHEME} build test 
+0

謝謝,但我不使用的iOS。 – SevenBits

1

.travis.yml:

language: objective-c 
osx_image: xcode7.2 
script: 
    - xctool -workspace XXX.xcworkspace -scheme XXX -sdk iphonesimulator ONLY_ACTIVE_ARCH=NO 
    - xctool test -workspace XXX.xcworkspace -scheme XXXTests -sdk iphonesimulator ONLY_ACTIVE_ARCH=NO 
before_script: 
    - chmod a+x ./scripts/add-key.sh 
    - sh ./scripts/add-key.sh 

add-key.sh:

#!/bin/sh 
# Create a custom keychain 
security create-keychain -p travis ios-build.keychain 

# Make the custom keychain default, so xcodebuild will use it for signing 
security default-keychain -s ios-build.keychain 

# Unlock the keychain 
security unlock-keychain -p travis ios-build.keychain 

# Set keychain timeout to 1 hour for long builds 
# see http://www.egeek.me/2013/02/23/jenkins-and-xcode-user-interaction-is-not-allowed/ 
security set-keychain-settings -t 3600 -l ~/Library/Keychains/ios-build.keychain 

# Add certificates to keychain and allow codesign to access them 
security import ./scripts/certs/XXXDevelop.p12 -k ~/Library/Keychains/ios-build.keychain -P $PASSWORD -T /usr/bin/codesign 
security import ./scripts/certs/XXXDistribution.p12 -k ~/Library/Keychains/ios-build.keychain -P $PASSWORD -T /usr/bin/codesign 


# Put the provisioning profile in place 
mkdir -p ~/Library/MobileDevice/Provisioning\ Profiles 
cp "./scripts/profile/XXXdevPP.mobileprovision" ~/Library/MobileDevice/Provisioning\ Profiles/ 
cp "./scripts/profile/XXXdisPP.mobileprovision" ~/Library/MobileDevice/Provisioning\ Profiles/ 

my dir tree

link to details

0

我只是路過本身Objective-C與語言,如「.travis。陽明海運」

language: objective-c