我已经创建了一个Xcode Bot,它集成在每个提交上。
在“运行脚本”触发器中,我想用正在运行的测试的集成状态更新当前的GitHub提交。相当标准的CI资料。

然后,我将运行如下脚本:
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看起来,我可以从Xcode Bot环境变量中获取success或failure状态:
访问Xcode Server CI bot运行中的生成文件夹(env变量?)
但是,没有列出当前提交的SHA。此时,我如何能够获得用于集成的提交的SHA,以便在GitHub状态API请求中使用?
发布于 2015-02-23 19:56:39
XCS_OUTPUT_DIR有一个名为sourceControl.log的文件。该文件的日志如下所示:
"DVTSourceControlLocationRevisionKey" : "3787c0d9e5107861a8b8d4c7300b2d414ad41dbb",您可以解析该日志以找到SHA。
也许更实际一点,CaveJohnson可以提取SHA:
PATH=/Library/Frameworks/Python.framework/Versions/3.4/bin:$PATH
SHA=`cavejohnson getSha`或者,它可以直接将GitHub状态设置为一行:
#!/bin/bash
PATH=/Library/Frameworks/Python.framework/Versions/3.4/bin:$PATH
cavejohnson setGithubStatus值得注意的是,有更多的状态,而不仅仅是成功和失败,至少有6个我知道。你可以在我的Xcode 6 CI失踪手册上读到更多关于它们的信息。
发布于 2015-06-05 15:52:36
我在Xcode Bot触发器中使用此代码获取提交的SHA:
git -C ${XCS_SOURCE_DIR}/name_of_your_git_repo rev-parse HEAD为了得到分支机构的名字:
git -C ${XCS_SOURCE_DIR}/name_of_your_git_repo rev-parse --abbrev-ref HEAD它在源目录中执行git命令,将"name_of_your_git_repo“替换为git上存储库的名称。
发布于 2015-02-27 23:54:20
使用另一个答案中的cavejohnson代码(从Xcode日志中的某些键获取散列),我遇到了一个返回的散列是上一次构建时的过时哈希。问题。
我现在使用git rev-parse HEAD来获取CI构建中实际使用的提交的散列。我已将此作为cavejohnson的修订版提交。
使用get_sha()检索SHA-1哈希:
def get_sha():
return get_repo_sha(get_git_directory())
def get_git_directory():
for subdir in os.listdir('.'):
if is_git_directory(subdir):
return subdir
assert False
def is_git_directory(path = '.'):
return subprocess.call(['git', '-C', path, 'status'], stderr=subprocess.STDOUT, stdout = open(os.devnull, 'w')) == 0
def get_repo_sha(repo):
sha = subprocess.check_output(['git', 'rev-parse', 'HEAD'], cwd=repo).decode('ascii').strip()
return shahttps://stackoverflow.com/questions/28620681
复制相似问题