¿Cómo implemento comstackciones automatizadas en TestFlight desde un Xcode Bot?

Pasé una buena cantidad de time formateando el blog mencionado con código, capturas de pantalla, etc., que es un esfuerzo demasiado grande para duplicar aquí en Stack Overflow. Dicho esto, pensé que la comunidad querría un poco de ayuda en este campo (me costó mucho calcularlo), así que publiqué esta pregunta y la respuesta respectiva. Si aún piensas que la intención de esta publicación es nefasta, ¡comenta como tal y la eliminaré!

La pregunta es: ¿cómo configuro mi nuevo y elegante server Xcode con Bots para que integre continuamente y envíe comstackciones completadas a mis probadores a través del vuelo de testing? Para mí, esto parece ser el santo grial de CI en el mundo de iOS, así que pasé mucho time para resolverlo.

El process implica un trabajo manual que simplemente no parece ser realizado correctamente por el software del server XCode en Mavericks, al less en la versión inicial. Me tomó mucho time e incluso algunas secuencias de commands para resolverlo y hacerlo funcionar, y me complace compartir los resultados.

Para sumr valor a esta pregunta, publiqué el script post-op que debería ejecutar durante el process de Archive a continuación. El enlace a mi blog a continuación proporciona detalles paso a paso si necesita más información.

#!/bin/bash # # (Above line comes out when placing in Xcode scheme) # # Valid and working as of 10/29/2013 # Xcode 5.0.1, XCode Server # API_TOKEN="<Your TesFlight API Token>" TEAM_TOKEN="<Your TestFlight Team Token>" DISTRIBUTION_LISTS="<Comma separated TestFlight Distribution List Names for auto deploy>" PROVISIONING_PROFILE="/Library/Server/Xcode/Data/ProvisioningProfiles/<your file name here>.mobileprovision" #EXAMPLE:"/Library/Server/Xcode/Data/ProvisioningProfiles/DocLink_InHouse_2013.mobileprovision" SIGNING_IDENTITY="<your provisioning profile name here>" #EXAMPLE:"iPhone Distribution: Unwinetworking Revolution, LLC." # DO NOT EDIT BELOW HERE! ######################################## DSYM="/tmp/Archive.xcarchive/dSYMs/${PRODUCT_NAME}.app.dSYM" IPA="/tmp/${PRODUCT_NAME}.ipa" APP="/tmp/Archive.xcarchive/Products/Applications/${PRODUCT_NAME}.app" # Clear out any old copies of the Archive echo "Removing old Archive files from /tmp..."; /bin/rm -rf /tmp/Archive.xcarchive* #Copy over the latest build the bot just created echo "Copying latest Archive to /tmp/..."; LATESTBUILD=$(ls -1rt /Library/Server/Xcode/Data/BotRuns | tail -1) /bin/cp -Rp "/Library/Server/Xcode/Data/BotRuns/${LATESTBUILD}/output/Archive.xcarchive" "/tmp/" echo "Creating .ipa for ${PRODUCT_NAME}" /bin/rm "${IPA}" /usr/bin/xcrun -sdk iphoneos PackageApplication -v "${APP}" -o "${IPA}" --sign "${SIGNING_IDENTITY}" --embed "${PROVISIONING_PROFILE}" echo "Done with IPA creation." echo "Zipping .dSYM for ${PRODUCT_NAME}" /bin/rm "${DSYM}.zip" /usr/bin/zip -r "${DSYM}.zip" "${DSYM}" echo "Created .dSYM for ${PRODUCT_NAME}" echo "*** Uploading ${PRODUCT_NAME} to TestFlight ***" /usr/bin/curl "http://testflightapp.com/api/builds.json" \ -F file=@"${IPA}" \ -F dsym=@"${DSYM}.zip" \ -F api_token="${API_TOKEN}" \ -F team_token="${TEAM_TOKEN}" \ -F distribution_lists="${DISTRIBUTION_LISTS}" \ -F notes="Build uploaded automatically from Xcode Server Bot." echo "TestFlight upload finished!" 

¡Espero que todo el time que pase en él pueda salvar colectivamente a la comunidad mucho más de ellos!

Aquí está el enlace: http://matt.vlasach.com/xcode-bots-hosted-git-repositories-and-automated-testflight-builds/

Solutions Collecting From Web of "¿Cómo implemento comstackciones automatizadas en TestFlight desde un Xcode Bot?"