2015-01-05 4 views
2

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

+0

Были ли вы в состоянии решить эту проблему? –

+0

kinda: P вы можете просто удалить проект - сборка завершится неудачно –

ответ

3

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

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

+1

Инструмент звучит многообещающе :). Я буду копаться в нем через несколько дней и, возможно, вернусь к вам с некоторыми вопросами. –

+0

Да, не стесняйтесь! Или пинг меня на Twitter @ czechboy0. – czechboy

0

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

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

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

Смежные вопросы