Как прервать сборку XCode Bot?

У меня проблема с ботами Xcode. Я могу скомпилировать, протестировать и заархивировать свой проект, но я хотел бы использовать внешний инструмент, который проверяет, сделал ли я проверку кода для последних коммитов. Я хотел бы иметь возможность прервать сборку, если нет проверки кода. Я пытался добавить exit 1 или exit 0 в скрипт pre-build, но это просто завершает данный скрипт, а не весь процесс сборки. Итак, мой вопрос: как я могу прервать сборку (интеграцию) бота Xcode?


person Adam Szeptycki    schedule 05.01.2015    source источник
comment
Вы смогли решить эту проблему?   -  person Shobhit Puri    schedule 09.04.2015
comment
своего рода: P вы можете просто удалить проект - сборка не удастся   -  person Adam Szeptycki    schedule 10.04.2015


Ответы (2)


Технически это возможно. Вы можете отменить интеграцию, которая немедленно прерывает ее. Это очень похоже на запуск интеграции из командной строки, которую я описал здесь, но сначала вам нужно найти из _id интеграции, вызвав конечную точку /xcode/api/bots/BOT_ID/integrations, и первая интеграция должна быть последней. Скопируйте _id, а затем вызовите POST для /xcode/api/integrations/INTEGRATION_ID/cancel, что отменит интеграцию.

Я использую все эти API в своем инструменте Buildasaur, поэтому для получения дополнительной информации ознакомьтесь с исходным кодом.

person czechboy    schedule 05.05.2015
comment
Инструмент звучит многообещающе :). Я покопаюсь в этом через несколько дней и, возможно, вернусь к вам с некоторыми вопросами. - person Adam Szeptycki; 07.05.2015

Благодаря ответу czechboy, вот решение для копирования и вставки друзей. Используйте что-то вроде этого в качестве сценария предварительной интеграции:

#!/bin/sh

# something returning an error code like:
${XCS_PRIMARY_REPO_DIR}/customPreIntegrationConfiguration.sh

# if script exits with error code 1:
if (( $? )); then
    echo "canceling integration ${XCS_INTEGRATION_ID}..."
    curl -kX POST "https://localhost:20343/api/integrations/${XCS_INTEGRATION_ID}/cancel"
fi

$? проверяет код выхода последней команды, в данном случае script. Если вы где-то используете канал, может потребоваться использовать set -o pipefail для возврата 1, если только один компонент канала возвращает 1.

person RyuX51    schedule 15.09.2016