如何中止 XCode Bot 构建?
How to abort XCode Bot build?
我对 Xcode 机器人有疑问。我能够编译、测试和存档我的项目,但我想使用外部工具来检查我是否对上次提交进行了代码审查。如果没有代码审查,我希望能够中止构建。
我试图在 pre-build
脚本中添加 exit 1
或 exit 0
但它只是结束给定的脚本而不是整个构建过程。所以我的问题是如何中止 Xcode 机器人构建(集成)?
从技术上讲,这是可能的。您可以取消集成,这会立即中止它。这是一个非常类似于从命令行触发集成的过程,我 ,但是您首先需要通过使用端点 /xcode/api/bots/BOT_ID/integrations
调用来找出集成的 _id
和第一个集成应该是最新的。复制 _id
,然后在 /xcode/api/integrations/INTEGRATION_ID/cancel
上调用 POST,这将取消集成。
我在我的工具 Buildasaur 中使用了所有这些 API,因此请查看源代码以了解更多详细信息。
感谢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
$?
检查最后一个命令的退出代码,在本例中是脚本。如果您在某处使用管道,则可能需要使用 set -o pipefail
到 return 1 如果只有一个管道组件 returns 1.
我对 Xcode 机器人有疑问。我能够编译、测试和存档我的项目,但我想使用外部工具来检查我是否对上次提交进行了代码审查。如果没有代码审查,我希望能够中止构建。
我试图在 pre-build
脚本中添加 exit 1
或 exit 0
但它只是结束给定的脚本而不是整个构建过程。所以我的问题是如何中止 Xcode 机器人构建(集成)?
从技术上讲,这是可能的。您可以取消集成,这会立即中止它。这是一个非常类似于从命令行触发集成的过程,我 /xcode/api/bots/BOT_ID/integrations
调用来找出集成的 _id
和第一个集成应该是最新的。复制 _id
,然后在 /xcode/api/integrations/INTEGRATION_ID/cancel
上调用 POST,这将取消集成。
我在我的工具 Buildasaur 中使用了所有这些 API,因此请查看源代码以了解更多详细信息。
感谢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
$?
检查最后一个命令的退出代码,在本例中是脚本。如果您在某处使用管道,则可能需要使用 set -o pipefail
到 return 1 如果只有一个管道组件 returns 1.