如何获取xcodebuild的返回值?
Posted
技术标签:
【中文标题】如何获取xcodebuild的返回值?【英文标题】:How to get the return value of xcodebuild? 【发布时间】:2011-09-09 14:47:19 【问题描述】:我在持续集成服务器上的 bash 脚本中使用 xcodebuild。
我想知道脚本中的构建何时失败,因此我可以提前退出并将构建标记为失败。
xcodebuild 向控制台显示 BUILD FAILED 消息,但我没有成功获取返回值。
我怎样才能做到这一点?
提前致谢
【问题讨论】:
【参考方案1】:我使用以下命令解决了我的问题:xcodebuild -... || 1号出口
【讨论】:
这是最干净的答案。谢谢迈克;) 真是个天才!谢谢朋友。【参考方案2】:xcodebuild
始终返回 0,无论实际测试结果如何。您应该检查输出中的 ** BUILD FAILED **
或 ** BUILD SUCCEEDED **
以了解测试是否通过。
【讨论】:
我们如何检查这些状态?它们不像退出代码 AFAIK【参考方案3】:您可以使用“$?”变量来获取上一条命令的返回码。
xcodebuild -...
if [[ $? == 0 ]]; then
echo "Success"
else
echo "Failed"
fi
【讨论】:
【参考方案4】:Xcodebuild 可以返回下面列出的任何错误代码,并且不限于 EX_OK(或 int 0)。
但是,我从 Dmitry 提供的解决方案中学习并修改如下。它对我有用,我希望它会有所帮助。
xcodebuild -project ......
if test $? -eq 0
then
echo "Success"
else
echo "Failed"
fi
错误代码
以下是可以为returned by sysexits的错误码archive:
EX_OK
(0):成功退出。
EX_USAGE
(64):命令使用不正确,例如,参数数量错误、标志错误、参数中的语法错误等等。
EX_DATAERR
(65): 输入数据在某些方面不正确。这应该只用于用户的数据,而不是系统文件。
EX_NOINPUT
(66):输入文件(不是系统文件)不存在或不可读。这也可能包括像“没有消息”这样的错误发给邮件程序(如果它想抓住它的话)。
EX_NOUSER
(67): 指定的用户不存在。这可能用于邮件地址或远程登录。
EX_NOHOST
(68):指定的主机不存在。这用于邮件地址或网络请求。
EX_UNAVAILABLE
(69):服务不可用。如果支持程序或文件不存在,则会发生这种情况。当您想做的事情不起作用但您不知道原因时,这也可以用作一个包罗万象的信息。
EX_SOFTWARE
(70):检测到内部软件错误。这应尽可能限制为与非操作性非操作系统相关的错误。
EX_OSERR
(71):检测到操作系统错误。这旨在用于cannot fork'',
cannot create pipe'' 等。它包括 getuid 返回密码文件中不存在的用户等内容。
EX_OSFILE
(72):某些系统文件(例如,/etc/passwd、/var/run/utmp 等)不存在、无法打开或出现某种错误(例如,语法错误)。
EX_CANTCREAT
(73):无法创建(用户指定的)输出文件。
EX_IOERR
(74):对某个文件执行 I/O 时出错。
EX_TEMPFAIL
(75): 暂时失败,表明某些东西并不是真正的错误。在 send-mail、sendmail、mail 中,这意味着邮件程序(例如)无法创建连接,应稍后重新尝试请求。
EX_PROTOCOL
(76):远程系统在协议交换期间返回了“不可能”的内容。
EX_NOPERM
(77):您没有足够的权限执行该操作。这不适用于文件系统问题,应该使用 EX_NOINPUT
或 EX_CANTCREAT
,而是用于更高级别的权限。
EX_CONFIG
(78):发现某些东西处于未配置或配置错误的状态。
欲了解更多信息click here。
【讨论】:
【参考方案5】:也许不是因为 xcodebuild 在构建失败时没有返回非零值。无论返回错误行如何,您的 shell 脚本都会继续运行,这可能是您没有使用“-e”选项运行脚本的结果。
尝试将 #!/bin/bash -e 放在脚本文件之前。
【讨论】:
【参考方案6】:通常,您可以随时通过以下方式检查 Unix bash 中上次运行进程的存在值:
$ echo $?
其中$?
是最后执行命令的存在值的内置占位符。有关其他 bash 内置变量的更多详细信息,请参阅here。
所以,首先运行您想要调查其返回码的命令,然后像上面一样运行 echo。
【讨论】:
【参考方案7】:编译后的产品(.a或.ipa文件)是否存在
【讨论】:
以上是关于如何获取xcodebuild的返回值?的主要内容,如果未能解决你的问题,请参考以下文章