如何为Xcode Bot"运行脚本"触发器获取提交的SHA?更新Github上的测试状态

pka*_*amb 7 git xcode continuous-integration xcode-bots xcode-server

我创建了一个Xcode Bot,它集成在每次提交时.

在"运行脚本"触发器中,我想使用已运行的测试的集成状态更新当前的GitHub提交.相当标准的CI东西.

Xcode Bot运行脚本

然后我将运行如下的脚本:

curl -i -X POST -H "Content-type: application/json"
-H 'Authorization: token TOKEN_HERE' -d 
'{
"state": "success",
"target_url": "https://example.com/build/status",
"description": "The build succeeded!",
"context": "continuous-integration/jenkins"
}' 
https://api.github.com/repos/ORGANIZATION_HERE/REPO_HERE/statuses/SHA_HERE
Run Code Online (Sandbox Code Playgroud)

看起来我将能够从Xcode Bot Environment变量获取successfailure状态:

在Xcode Server CI bot中访问构建文件夹(env变量?)

但是,未列出当前提交的SHA.如何在此时获取用于Integration的提交的SHA,以便在GitHub Status API请求中使用?

Dre*_*rew 1

XCS_OUTPUT_DIR有一个名为sourceControl.log. 该文件具有如下日志:

"DVTSourceControlLocationRevisionKey" : "3787c0d9e5107861a8b8d4c7300b2d414ad41dbb",
Run Code Online (Sandbox Code Playgroud)

您可以解析该日志以查找 SHA。

也许更实际的是,CaveJohnson可以拉取 SHA:

PATH=/Library/Frameworks/Python.framework/Versions/3.4/bin:$PATH
SHA=`cavejohnson getSha`
Run Code Online (Sandbox Code Playgroud)

或者它可以直接将 GitHub 状态设置为一行:

#!/bin/bash
PATH=/Library/Frameworks/Python.framework/Versions/3.4/bin:$PATH
cavejohnson setGithubStatus
Run Code Online (Sandbox Code Playgroud)

值得注意的是,状态不仅仅是成功和失败,我知道至少有 6 种。您可以在我的Xcode 6 CI Missing Manual中阅读有关它们的更多信息。