ios - descargar - ¿Cómo implemento compilaciones automatizadas a TestFlight desde un bot de Xcode?
testflight tutorial (1)
Pasé una buena cantidad de tiempo formateando el blog mencionado con código, capturas de pantalla, etc. que es demasiado esfuerzo para duplicar aquí en Stack Overflow. Dicho esto, pensé que la comunidad querría algo de ayuda en este campo (luché durante mucho tiempo para resolverlo todo), así que publiqué esta pregunta y la respuesta correspondiente. Si aún piensa que la intención de esta publicación es nefasta, por favor, comente como tal y la eliminaré.
La pregunta es: ¿cómo configuro mi nuevo y elegante servidor Xcode con Bots para integrar y enviar continuamente las compilaciones completadas a mis evaluadores a través del vuelo de prueba? Para mí, esto parece ser el santo grial de la IC en el mundo iOS, así que dediqué mucho tiempo a averiguarlo.
El proceso implica cierto trabajo manual que parece que el software del servidor XCode en Mavericks no realiza correctamente, al menos en la versión inicial. Me tomó mucho tiempo e incluso algunas secuencias de comandos para resolverlo y hacerlo funcionar, y me complace compartir los resultados.
Con el fin de agregar valor a esta pregunta, he publicado la secuencia de comandos postoperatoria que debe ejecutar durante el proceso de archivo a continuación. El enlace a mi blog a continuación proporciona detalles paso a paso en caso de que necesite 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: Unwired 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 tiempo que dedique a esto ahorre 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/
Aquí hay un enlace a una publicación que describe cómo crear un bot Xcode, conectado a un repositorio de git de terceros, con implementación automatizada de compilaciones en TestFlight:
http://matt.vlasach.com/xcode-bots-hosted-git-repositories-and-automated-testflight-builds/
¡Espero eso ayude! Por favor, apague sus comentarios o sugerencias.