如何将BuildConfig Git源参考设置为GitHub拉取请求?

时间:2017-07-25 11:24:57

标签: openshift

OpenShift docs for Git Source input中,它说明了以下内容:

  

如果ref字段表示拉取请求,系统将使用git fetch操作,然后检出FETCH_HEAD。

但是,没有一个例子可以找到需要作为参考来匹配拉取请求的内容。我无法弄清楚它应该是什么,以及我尝试的每个变化,我都会收到如下错误:

  

错误:构建错误:错误:pathspec'draw / 128 / head'与git已知的任何文件都不匹配。

我尝试过的变化:

  • 参/拉/ 128 /头
  • 拉/ 128 /头
  • 拉/ 128
  • 128
  • PR-128
  • 起源/ PR / 128 /头
  • 起源/ PR / 128 /合并

感谢任何帮助,谢谢!

修改:根据Graham在comment中的建议更新新信息:

  

我不确定它是否显示该部分的额外内容,但将BUILD_LOGLEVEL=9设置为构建配置的环境变量。

设置BUILD_LOGLEVEL=9显示以下内容:

Cloning "https://github.com/<org>/<repo>" ...
I0725 13:43:32.297019 1 source.go:134] git ls-remote --heads https://github.com/<org>/<repo>
...
git ls-remote --heads https://github.com/<org>/<repo>
...
git checkout <branch>

为此,显示所有常规分支,但不显示PR头(这可以通过任何repo重现...删除--heads选项,您也将看到所有标记和PR头。

source.go:236] Cloning source from https://github.com/<org>/<repo>
...
git clone https://github.com/<org>/<repo> /tmp/docker-build989528171
...
git checkout origin/pr/128/merge
...
repository.go:427] Error executing command: exit status 1
...
helpers.go:116] error: build error: error: pathspec 'origin/pr/128/head' did not match any file(s) known to git.

我不确定如何给它checkout接受的东西。我没有办法让它在本地获取那些头部参考refspec(比如Jenkins如何git fetch --tags --progress https://github.com/<org>/<repo>.git +refs/pull/*/head:refs/remotes/origin/pr/*

编辑2 :添加了有关我尝试过的内容的更多信息

我现在也尝试将.gitconfig文件添加到我在BuildConfig中设置的秘密中(此秘密还具有基本的身份验证凭据,能够通过https从GitHub克隆)。 .gitconfig中唯一的东西是refspec,试图让它获取PR头部引用:

[remote "origin"]
    fetch = +refs/pull/*/head:refs/remotes/origin/pr/*

这似乎也没有帮助,即使我尝试使用ref origin/pr/128/head的值,因此似乎不会获取refspec。

正如mhutter在评论中所建议的那样,用--commit传递实际提交的sha1似乎得到了我想要的东西,但在我理解为“忽略ref的值,并改为使用它” “解决方法。

1 个答案:

答案 0 :(得分:1)

直到最近才出现使用pull refs的错误: https://bugzilla.redhat.com/show_bug.cgi?id=1447495

除非您使用的是原产地3.6.0-rc.0,否则这可能就是您所要达到的。

文档反映了原始状态的主人。

“refs / pull / 58 / head”应该是正确的格式(一旦你使用了具有修复程序的OpenShift版本)。