2013-05-28 178 views
0

我安装了Jenkins并使用Gi​​t插件,Xcode插件和Testflight插件启动了一个项目。Jenkins + iOS + TestFlight API

我可以使用安装程序创建自动构建版本,但它在创建Testflight的.ipa文件时失败。

的问题是在调试和释放,虽然不同的方式设置...

如果我试图创建的.ipa通过调试设置将在没有建立/调试-的iPhoneOS夹点失败(我试图打开干净的选项,但没有帮助)。但是Xcode Build并没有在命令行失败

当我尝试切换到释放链接器失败(ld)。

没有.ipa文件我无法提交给Testflight并获得自动化测试分发。

+0

哪里是您使用来构建它的脚本/命令?您的.ipa路径可能是错误的。 –

回答

2

这是我正在使用的脚本。 (显然我删除了个人信息,但你应该很好理解它)。

TARGET_NAME="-"  # Target name 
TARGET_SDK="iphoneos"     # Target SDK: iphoneos 
CONFIGURATION="Release"  # Build Configuration 
BUILD_DIR="build"      # Directory where the build is generated 
ARCHS="armv7"       # Valid Architectures 
APP_NAME="-"    # Application name 

## Provisioning configurations 
BUILD_ARCHIVED_DIR="BuildArchived"     # Directory with the history of builds 
DEVELOPER_NAME="-" # Developer name 
PROVISIONING_PROFILE=Prototype.mobileprovision  # Provisioning profile file 
PROVISIONING_DIR=~/Library/MobileDevice/Provisioning\ Profiles/      # Provisioning dir 

## TestFlight App 
TESTFLIGHT_API_TOKEN="-"  
TESTFLIGHT_TEAM_TOKEN="-" 


#Release Notes 
BUILDSCRIPTS_DIR="build" 
TESTFLIGHT_RELEASE_NOTES_FILE="ios_testflight-releasenotes" 


#Distribution Lists 
TESTFLIGHT_DISTRIBUTION_LISTS="Jenkins" 


# Returns to the root directory of the build 
cd ../ios 

PROJECT_BUILDDIR="${BUILD_DIR}/${CONFIGURATION}-${TARGET_SDK}" 
CURRENT_DIR=`pwd` 

# fix for the newest sdk 
# Only export the environment variable if the location exists, 
# otherwise it breaks the signing process! 
if [ -f "/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate" ] 
then 
    echo Export environment variable for codesign_allocate location 
    export CODESIGN_ALLOCATE=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate 
fi 


#changing the build version 
INFO_PLIST_PATH="${CURRENT_DIR}/${TARGET_NAME}/${TARGET_NAME}-Info.plist" 
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion ${SVN_REVISION}" $INFO_PLIST_PATH 


# compile project 
echo Building Project 
xcodebuild -target "${TARGET_NAME}" -sdk "${TARGET_SDK}" ARCHS=${ARCHS} -configuration "${CONFIGURATION}" clean build 

#Check if build succeeded 
#if [ $? != 0 ] 
#then 
# exit 1 
#fi 

# Create output dir ($x) if doesn't exist 
mkdir -p $BUILD_ARCHIVED_DIR 

# .ipa file generation 
echo Generating .ipa file 
/usr/bin/xcrun -sdk "${TARGET_SDK}" PackageApplication -v  "${PROJECT_BUILDDIR}/${APP_NAME}.app" -o  "${CURRENT_DIR}/${BUILD_ARCHIVED_DIR}/${APP_NAME}.ipa" --sign "${DEVELOPER_NAME}" 

#zipping the .dSYM to send to Testflight 
echo Generating zip file 
/usr/bin/zip -r "${CURRENT_DIR}/${BUILD_ARCHIVED_DIR}/${APP_NAME}.app.dSYM.zip" "${CURRENT_DIR}/${PROJECT_BUILDDIR}/${APP_NAME}.app.dSYM" 

echo Sending to TestFlight 
curl http://testflightapp.com/api/builds.json -F file="@${CURRENT_DIR}/${BUILD_ARCHIVED_DIR}/${APP_NAME}.ipa" -F dsym="@${CURRENT_DIR}/${BUILD_ARCHIVED_DIR}/${APP_NAME}.app.dSYM.zip" -F api_token="${TESTFLIGHT_API_TOKEN}" -F team_token="${TESTFLIGHT_TEAM_TOKEN}" -F notes="This build was uploaded via the upload API" -F notify=False -F distribution_lists="${TESTFLIGHT_DISTRIBUTION_LISTS}" 
echo Submission ended 
+0

感谢您的脚本。但它再次失败,因为它没有找到ld:找不到-lPods这个豆荚的链接器... – mariusLAN

+0

是在jenkins服务器上安装的cocoapods? –

+0

是的,我发现我身边的失败。我需要在xcodebuild命令行中使用Scheme和Workspace – mariusLAN

0

我想象计划您构建的目标是不正确。

此外,TestFlightplugin for Jenkins这样你就可以编写脚本的构建过程和执行使用它们詹金斯插件上传到TestFlight。我已经提供了一个构建脚本示例,可以通过手动命令行和Jenkins CI为我工作。

如果你想看到完整的安装程序,你可以找到一个的iOS /混帐/ TestFlight教程这里:Jenkins iOS – Git, xcodebuild, TestFlight

xcodebuild -alltargets clean 

rm -rf "./JenkinsBuild/*" 

xcodebuild -target HelloJenkins PROVISIONING_PROFILE="00000000-0000-0000-0000-000000000000" CONFIGURATION_BUILD_DIR=JenkinsBuild 

rm -rf "./JenkinsArchive/*" 

xcodebuild -scheme HelloJenkins archive PROVISIONING_PROFILE="00000000-0000-0000-0000-000000000000" CODE_SIGN_IDENTITY="iPhone Developer: Jonny Appleseed (XXXXXXXXXX)" -archivePath ./JenkinsArchive/HelloJenkins.xcarchive 

rm -rf "./JenkinsIPAExport/*" 

xcodebuild -exportArchive -exportFormat IPA -exportProvisioningProfile iOS\ Team\ Provisioning\ Profile:\ com.yourAPP.HelloJenkins -archivePath ./JenkinsArchive/HelloJenkins.xcarchive -exportPath ./JenkinsIPAExport/HelloJenkins.ipa