2014-12-27 20 views
19

Travis CI nie może zbudować mojej aplikacji, ponieważ projekt Xcode jest skonfigurowany tak, aby wymagał podpisu kodu, a Travis nie ma moich certyfikatów. Mogę to naprawić, wyłączając podpisywanie kodu, ale wtedy piaskownica i uprawnienia nie będą działać. Wiem, że podczas budowania z linii poleceń zazwyczaj można przekazać CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO do xcodebuild, aby wyłączyć podpisywanie kodu, ale jak to zrobić w Travis CI?Travis CI nie chce budować z błędem podpisywania kodu

Oto mój .travis.yml:

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

I tu jest błąd (mam kod z wielu poprzednich linie nawiązujące do Cocoapods, ponieważ nie są one istotne:

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. 

Odpowiedz

14

Czy spróbujesz dodaj to na travis.yml:

language: objective-c 

script: 
    - xcodebuild [DEFAULT_OPTIONS] CODE_SIGNING_REQUIRED=NO 

Lub importuj rozwój (i rozpowszechnianie, jeśli zamierzasz użyć na swojej kompilacji) certyfikatu/klucza do pęku kluczy i skopiuj swój profil zaopatrywania zespołu, aby podpisanie kodu działało. Tak:

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

Odpowiedź ta działa na mnie, należy je oznaczyć jako zaakceptowane, czy to działa również dla was @SevenBits –

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

Można odwołać się do this .travis.yml

9

Proszę znaleźć .travis.yml plik poniżej, który naprawia ten błąd wiadomość i inne, przy korzystaniu z projektu Xcode 7 + Swift + iOS 9 + narzędzie do ciągłej integracji dostępne na 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 

Źródła:

+0

nie używam iOS. – SevenBits

3

Jeśli nie trzeba budować dla iphoneos, np jeśli chcesz tylko wiedzieć, czy projekt się rozwija, czy testy jednostek przejdą. Możesz określić sdk iphonesimulator. W ten sposób xctool nie podpisze kodu.

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

Dzięki, ale nie używam 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

mogę przechodząc tylko se Celowanie-C z językiem, jak to w ".travis.yml”

language: objective-c