¿Cómo puedo implementar compilaciones automatizadas para TestFlight desde un Bot Xcode?


Pasé una buena cantidad de tiempo formateando el blog mencionado con código, capturas de pantalla, etc. eso es demasiado esfuerzo para duplicar aquí en el desbordamiento de la pila. Dicho esto, pensé que la comunidad querría algo de ayuda en este campo (luché durante mucho tiempo para averiguarlo todo), así que publiqué esta pregunta y la respuesta respectiva. Si todavía piensas que la intención de este post es nefasta, por favor comenta como tal y lo eliminaré!

La pregunta es: ¿cómo configurar mi fantasía nueva Xcode server con Bots para integrar continuamente y enviar compilaciones completas a mis probadores a través de test flight? Para mí, esto parece el santo grial de CI en el mundo iOS, así que pasé mucho tiempo para averiguarlo.

El proceso implica algún trabajo manual que simplemente no parece hacerse correctamente por el software del servidor XCode en Mavericks, al menos en la versión inicial. Me tomó mucho tiempo e incluso algo de scripting para averiguar todo y hacer que funcione, y estoy feliz de compartir la resultado.

Para agregar valor a esta pregunta, he publicado el script post-operatorio que debe ejecutar durante el proceso de archivo 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: 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 todo el tiempo que pasé en él salvará a la comunidad colectivamente mucho más de ellos!

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

Author: Yvette Colomb, 2013-10-24

1 answers

Aquí hay un enlace a una publicación que describe cómo crear un bot Xcode, conectado a un repositorio git de terceros, con implementación automatizada de compilaciones para TestFlight:

Http://matt.vlasach.com/xcode-bots-hosted-git-repositories-and-automated-testflight-builds/

Espero que ayude! Por favor, hable con sus comentarios o comentarios.

 11
Author: mattv123,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-10-24 01:06:38