在私有存储库中使用Bitbucket管道和git子模块

时间:2019-02-22 10:21:19

标签: git bitbucket git-submodules bitbucket-pipelines

我们尝试为包含git子模块的私有项目实现Bitbucket管道。它们在我们的项目中被引用如下:

[submodule "plugins-custom/plugin-A"]
    path = plugins-custom/plugin-A
    url = ../plugin-A.git

该存储库存在,可以使用git submodule update --init在本地安全地检出。

使用Bitbucket管道运行同一命令时,以下行将打印到日志中:

+ git submodule update --init
Submodule 'plugins-custom/plugin-A' (http://bitbucket.org/$team/plugin-A.git) registered for path 'plugins-custom/plugin-A'
Cloning into 'plugins-custom/plugin-A'...
fatal: could not read Username for 'https://bitbucket.org': No such device or address
Clone of 'http://bitbucket.org/$team/plugin-A' into submodule path 'plugins-custom/plugin-A' failed

我不知道为什么会这样,这是我已经尝试过的其他步骤:

  • 在包含并触发子模块的项目中生成了一个SSH密钥,该密钥已添加到plugin-A的引用存储库中
  • 我摆弄着将子模块URL从相对的URL更改为绝对的URL(如git submodule正确确定的URL中给出的那样)
  • 我尝试添加代理设置,因为管道已在代理设置过程中完成(例如git config http.https://bitbucket.org.proxy http://localhost:29418/

我的设置中是否存在任何明显的错误?我还能尝试什么使其工作?

1 个答案:

答案 0 :(得分:0)

好的,我没有想到我的错误如此明显,但是我的同事们能够迅速提供帮助:

  • 管道使用我们存储库的HTTP URL(而非SSH)执行git checkout
  • 因此,还使用HTTP url检出了引用的子模块
  • 很明显,这失败了,因为这是一个不允许匿名访问的私有存储库

解决方案:通过git@bitbucket.org:$team/plugin-A.git

使用SSH执行子模块的签出