Github Azure DevOps构建子模块
我有一个连接到Azure DevOps构建管道的私有bitbucket回购。 私有回购有一个子模块连接到公共Github回购 这两个存储库都是通过SSH访问的 我在DevOps中勾选了克隆子模块框Github Azure DevOps构建子模块,github,ssh,azure-devops,bitbucket,azure-pipelines,Github,Ssh,Azure Devops,Bitbucket,Azure Pipelines,我有一个连接到Azure DevOps构建管道的私有bitbucket回购。 私有回购有一个子模块连接到公共Github回购 这两个存储库都是通过SSH访问的 我在DevOps中勾选了克隆子模块框 如何向Azure DevOps提供SSH密钥,以便它克隆子模块?无需向Azure DevOps提供SSH密钥,您只需修改私有bitbucket repo中的.gitmodules文件,即可使用HTTP协议指定子模块github repo URL 例如,将.gitmodules文件修改为: [submo
如何向Azure DevOps提供SSH密钥,以便它克隆子模块?无需向Azure DevOps提供SSH密钥,您只需修改私有bitbucket repo中的
.gitmodules
文件,即可使用HTTP协议指定子模块github repo URL
例如,将.gitmodules
文件修改为:
[submodule "myrepo"]
path = myrepo
url = https://github.com/username/myrepo.git
现在,当您再次对构建排队时,它将在获取源代码(签出)步骤中成功下载子模块repo 然而,由于它主要是在获取源代码步骤中构建失败的原因,这是因为在获取soubmodule源代码时,构建代理没有与Github中匹配的SSH密钥。因此,如果您不想使用HTTP协议修改
.gitmodules
文件,您应该将包含您在GitHub中指定的ssk公钥的生成排队
设置自托管代理的详细步骤如下:
/config.cmd
->按提示输入URL、PAT、代理池(如默认代理池)等
配置后->如果代理处于脱机状态,请执行PowerShell窗口中的行->执行/run.cmd
,以确保代理状态处于联机状态
现在,您可以使用自托管代理对生成进行排队。解决方案是不更改为https或设置自托管代理 有一个步骤称为加载SSH密钥 我在github上创建了一个新的ssh密钥,将加载ssh密钥步骤添加到VSTS任务中
它在签出任务之前运行(尽管之后出现在队列中),并在代理上加载所需的ssh密钥更新.gitmodules以使用https的问题是,我需要使用https与github repo通信,如果我想推动对repo的更改,这意味着将用户名和密码放入gitmodules/或sourcetree。Ssh解决了这个问题,是访问git存储库的首选方式。我希望能够将SSH密钥添加到构建代理中,但我不明白如何使用提供的链接中的自托管代理来实现这一点?@DeanMarcussen我更新了我的答案详细信息步骤以设置自托管代理,您可以尝试一下。此外,使用http协议,您还可以在repo URL中集成用户名和密码(
https://username:password@github.com/myrepo.git
),这样它就不会被通信窗口打断。这听起来不像是一个解决问题的办法——转到http,在git repo中包含用户名和密码似乎是一个非常落后的步骤。我也不想运行自托管代理—这再次违背了VST的目的。不过,我确实发现了一个加载ssh代理的步骤,以便为me@DeanMarcussen既然你的问题已经解决了,你可以标记你自己的答案。这也会让其他遇到类似问题的人受益。哈哈哈!在我使用Azure Devops xD的旅行中遇到了这个问题