Как развернуть автоматизированные сборки в TestFlight из бота Xcode?

Я потратил много времени на форматирование упомянутого блога с кодом, снимками экрана и т. Д., Это слишком много усилий, чтобы дублировать здесь, в Stack Overflow. Тем не менее, я подумал, что сообществу понадобится помощь в этой области (я долго пытался понять все это), поэтому я опубликовал этот вопрос и соответствующий ответ. Если вы все еще думаете, что цель этого поста гнусна, пожалуйста, прокомментируйте как таковой, и я удалю его!

Вопрос в том, как мне настроить мой новый модный сервер Xcode с ботами для непрерывной интеграции и отправки завершенных сборок моим тестерам через тестовый полет? Мне это кажется Святым Граалем CI в мире iOS, поэтому я потратил много времени, чтобы понять это.

Процесс включает в себя некоторую ручную работу, которая, похоже, не выполняется должным образом серверным программным обеспечением XCode в Mavericks, по крайней мере, в первоначальном выпуске. Мне потребовалось много времени и даже немного написания скриптов, чтобы разобраться во всем этом и заставить его работать, и я рад поделиться результатами.

Чтобы повысить ценность этого вопроса, я опубликовал послеоперационный сценарий, который вы должны запустить во время процесса архивации ниже. Ссылка на мой блог ниже содержит пошаговые инструкции, если вам понадобится дополнительная информация.

#!/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!"

Я надеюсь, что все время, которое я потратил на это, сэкономит сообществу гораздо больше их жизни!

Вот ссылка: http://matt.vlasach.com/xcode-bots-hosted-git-repositories-and-automated-testflight-builds/


person mattv123    schedule 24.10.2013    source источник
comment
Я поговорил с автором о том, чтобы сделать этот пост более похожим на Stack Overflow. Пожалуйста, воздержитесь от пометки или других действий на некоторое время, чтобы дать ему возможность внести изменения.   -  person Pops    schedule 22.11.2013
comment
Спасибо за повторное добавление. Надеюсь доработки подойдут и будут полезны всем!   -  person mattv123    schedule 22.11.2013
comment
Вышеупомянутая команда curl не работает с Xcode 10 (возможно, раньше), вам нужно будет использовать altool для отправки двоичных файлов TestFlight и выпуска в App Store.   -  person alfwatt    schedule 08.10.2018


Ответы (2)


Вот ссылка на сообщение, в котором описывается, как создать бота Xcode, подключенного к стороннему репозиторию git, с автоматическим развертыванием сборок в TestFlight:

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

Надеюсь, поможет! Пожалуйста, отключите звук с вашими комментариями или отзывами.

person mattv123    schedule 24.10.2013