Jenkins,用多个用户通过ssh获取git子模块?
我不知道标题是否描述了我想说的内容,但这里是: 我想知道使用git子模块设置Jenkins时的“最佳实践”是什么。主模块和子模块repo都是通过ssh访问的,因为我们有几个用户,所有这些用户都有各自的用户名。詹金斯也有自己的用户。然而,我们(我)偶然发现了一个问题。如果创建子模块: git子模块添加ssh://my-user-name@地址到模块repo和推送时,Jenkins会在尝试获取子模块时将我称为用户,这显然会失败。如果其他用户执行了拉操作,则我的用户名仍将位于路径中(在.gitmodule、.git/config等中) 我在“普通”用户之间发现了另一个帖子处理共享,但这并不能真正解决Jenkins尝试构建时的问题,因为我只能在Jenkins获取链接中提到的我无法执行的所有操作后执行shell cmd,或者我可以(Jenkins新手)执行吗 总而言之。如何解决这个问题,以便Jenkins在通过ssh获取子模块时使用自己的用户 比尔,Jenkins,用多个用户通过ssh获取git子模块?,git,ssh,jenkins,fetch,git-submodules,Git,Ssh,Jenkins,Fetch,Git Submodules,我不知道标题是否描述了我想说的内容,但这里是: 我想知道使用git子模块设置Jenkins时的“最佳实践”是什么。主模块和子模块repo都是通过ssh访问的,因为我们有几个用户,所有这些用户都有各自的用户名。詹金斯也有自己的用户。然而,我们(我)偶然发现了一个问题。如果创建子模块: git子模块添加ssh://my-user-name@地址到模块repo和推送时,Jenkins会在尝试获取子模块时将我称为用户,这显然会失败。如果其他用户执行了拉操作,则我的用户名仍将位于路径中(在.gitmodu
Pistol先生如果通用Jenkins ssh“帐户”被授权至少从这些子规则中提取,那么您可以添加一个脚本,该脚本将:
- 检测它是否在Jenkins环境中运行
文件的.gitmodules
- 更改
的内容,以将任何用户替换为Jenkins用户.gitmodules
.gitmodules
文件的原始内容,以便不在其上记录任何修改
这些脚本自动工作的方式是通过:
解决方案是,在设置到子模块存储库的ssh连接时,更改Jenkins用户的ssh配置文件,使其使用自己的默认用户。我在StackOverflow的另一个问题中找到了一个很好的解决方案: 你可以用
[submodule foosub]
path = foosub
url = ./../foosub
定义相对于项目所用URL的URL。例如,如果您有您的项目URLmyuser@myserver.com/git/project和您的子模块URLmyuser@myserver.com/git/foosub,配置应该可以工作。当然,如果子模块位于与项目不同的服务器上,它就无法工作
现在Jenkins应该将自己的用户数据应用于子模块,因为它在项目URL中有自己的用户数据集。Ah,这看起来很有希望。我会尝试一下,完成后再反馈。谢谢嗨,已经有一段时间了,但我们还是按照我在下面的帖子中描述的方法解决了这个问题。谢谢你的支持。