我想分享团队的解决方案。我们找到了存储 Bot 结果的地方,我们使用 bash 解析它,并通过 curl 系统调用向 HUE 灯发送消息。我们在构建脚本前后调用方案中的脚本。
我们在以下位置解析机器人的结果 plist:
/Library/Server/Xcode/Data/BotRuns/Latest/output/xcodebuild_result.bundle/Info.plist
在那里你可以找到各种很酷的数据来使用!:
<dict>
<key>AnalyzerWarningCount</key>
<integer>0</integer>
<key>AnalyzerWarningSummaries</key>
<array/>
<key>ErrorCount</key>
<integer>0</integer>
<key>ErrorSummaries</key>
<array/>
<key>LogIdentifier</key>
<string>705bffcb-7453-49ba-882f-80e1218b59cf</string>
<key>LogPath</key>
<string>1_Test/action.xcactivitylog</string>
<key>Status</key>
<string>IDEActionResultStatus_Succeeded</string>
<key>TestFailureSummaries</key>
<array/>
<key>TestSummaryIdentifier</key>
<string>a1554874-4d40-4e94-ae89-a73184ec97a9</string>
<key>TestSummaryPath</key>
<string>1_Test/action_TestSummaries.plist</string>
<key>TestsCount</key>
<integer>185</integer>
<key>TestsFailedCount</key>
<integer>0</integer>
<key>WarningCount</key>
<integer>0</integer>
<key>WarningSummaries</key>
<array/>
<dict>
- AnalyzerWarningCount
- 错误计数
- 警告计数
- 测试失败计数
哦,bash,我有时的情人,再来拯救一天。
还要注意使用 Plist Buddy 来解析 Xcode 的 XML 属性列表文件。从 plist 文件中获取信息的首选。
#!/bin/bash
#
# By Phil
#
exec > /tmp/my_log_file.txt 2>&1
TEST_RESULT_PLIST="/Library/Server/Xcode/Data/BotRuns/Latest/output/xcodebuild_result.bundle/Info.plist"
hue_light_green=false
echo "testResultParse_OwlHue"
#If not bot, return
if [ "$(whoami)" != "_teamsserver" ]; then
echo "$(whoami) - Not a bot!";
exit 1
fi
#1 If file not found ERROR
if [ ! -f $TEST_RESULT_PLIST ]; then
curl -X PUT -d "{\"on\":true,\"bri\":32,\"effect\":\"none\",\"hue\":150,\"sat\":255,\"alert\":\"lselect\"}" ipaddress/api/testestest/lights/3/state
echo "Test Result Plist not Found";
exit 1
fi
#2 AnalyzerWarningCount BLUE
AnalyzerWarningCount=$(/usr/libexec/PlistBuddy -c "Print :AnalyzerWarningCount" "${TEST_RESULT_PLIST}")
if [ $AnalyzerWarningCount != 0 ]; then
echo "AnalyzerWarningCount";
curl -X PUT -d "{\"on\":true,\"bri\":32,\"xy\":[0.16, 0.1],\"hue\":15815,\"sat\":255,\"effect\":\"none\",\"alert\":\"lselect\"}" ipaddress/api/testestest/lights/3/state
fi
#3 WarningCount
WarningCount=$(/usr/libexec/PlistBuddy -c "Print :WarningCount" "${TEST_RESULT_PLIST}")
if [ $WarningCount != 0 ]; then
curl -X PUT -d "{\"on\":true,\"bri\":32,\"xy\":[0.58, 0.41],\"hue\":15815,\"sat\":255,\"effect\":\"none\",\"alert\":\"lselect\"}" ipaddress/api/testestest/lights/3/state
echo "WarningCount";
fi
#4 ErrorCount || TestsFailedCount ERROR
ErrorCount=$(/usr/libexec/PlistBuddy -c "Print :ErrorCount" "${TEST_RESULT_PLIST}")
if [ $ErrorCount != 0 ]; then
curl -X PUT -d "{\"on\":true,\"bri\":32,\"effect\":\"none\",\"hue\":150,\"sat\":255,\"alert\":\"lselect\"}" ipaddress/api/testestest/lights/3/state
echo "ErrorCount";
exit 1
fi
#5 TestsFailedCount ERROR
ErrorCount=$(/usr/libexec/PlistBuddy -c "Print :ErrorCount" "${TEST_RESULT_PLIST}")
if [ $TestsFailedCount != 0 ]; then
curl -X PUT -d "{\"on\":true,\"bri\":32,\"effect\":\"none\",\"hue\":150,\"sat\":255,\"alert\":\"lselect\"}" ipaddress/api/testestest/lights/3/state
echo "TestsFailedCount";
exit 1
fi
#6 None of the above. SUCCESS
if [ "$hue_light_green" = true ] ; then
echo "SUCCESS";
curl -X PUT -d "{\"on\":true,\"bri\":32,\"effect\":\"none\",\"hue\":25500,\"sat\":255,\"alert\":\"lselect\"}" ipaddress/api/testestest/lights/3/state
fi
- AnalyzerWarningCount蓝色
- 错误计数红色
- 警告计数橙色
- 测试失败计数红色
现在,当我们计算上述任何一项时,我们会看到闪烁的颜色变化。例如,下面的代码会从我们的色调中产生明亮的蓝色:
