I setup Jenkins jobs to build iOS project for QA and release. Here are some useful xcodebuild commands that I use. Tested with XCode 9.
Create a xcarchive file
Create an IPA from xcarchive file with exportOptions.
If the above command doesn't create an IPA, try putting xcrun in front. To generate an IPA with the correct certificate and provision profile, you must set them correctly in exportOptions.plist. See example below.
Create an APP file for simulator
Sample exportOptions.plist
Update build version in Info.plist
Create a xcarchive file
xcodebuild -project ${APPNAME}.xcodeproj -scheme ${APPSCHEME} -configuration Release clean -archivePath "${WORKSPACE}/${APPNAME}.xcarchive" archive
Create an IPA from xcarchive file with exportOptions.
xcodebuild -exportArchive -archivePath "${APPNAME}.xcarchive" -exportPath "${WORKSPACE}" -exportOptionsPlist exportOptions.plist -allowProvisioningUpdates
If the above command doesn't create an IPA, try putting xcrun in front. To generate an IPA with the correct certificate and provision profile, you must set them correctly in exportOptions.plist. See example below.
Create an APP file for simulator
xcodebuild -project ${APPNAME}.xcodeproj -scheme ${APPSCHEME} -configuration Debug -sdk iphonesimulator clean build
Sample exportOptions.plist
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>method</key> <string>enterprise</string> //app-store, enterprise, ad-hoc or development <key>signingCertificate</key> <string>iPhone Distribution</string> //Certificate name <key>teamID</key> <string>T7L12345678</string> //The development program team identifier. <key>uploadBitcode</key> <false> <key>uploadSymbols</key> <false> <key>provisioningProfiles</key> <dict> <key>com.sample</key> <string>fe26f4e4-11d0-4054-898c-144a8se030a1</string> //Provision profile UUID </dict> </dict> </plist>
Update build version in Info.plist
/usr/libexec/Plistbuddy -c "Set CFBundleVersion ${BUILD_NUMBER}" "${WORKSPACE}/${APPNAME}/Info.plist"
Comments