在OpenShift docs for Git Source input中,它说明了以下内容:
如果ref字段表示拉取请求,系统将使用git fetch操作,然后检出FETCH_HEAD。
但是,没有一个例子可以找到需要作为参考来匹配拉取请求的内容。我无法弄清楚它应该是什么,以及我尝试的每个变化,我都会收到如下错误:
错误:构建错误:错误:pathspec'draw / 128 / head'与git已知的任何文件都不匹配。
我尝试过的变化:
感谢任何帮助,谢谢!
修改:根据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的值,并改为使用它” “解决方法。
答案 0 :(得分:1)
直到最近才出现使用pull refs的错误: https://bugzilla.redhat.com/show_bug.cgi?id=1447495
除非您使用的是原产地3.6.0-rc.0,否则这可能就是您所要达到的。
文档反映了原始状态的主人。
“refs / pull / 58 / head”应该是正确的格式(一旦你使用了具有修复程序的OpenShift版本)。