gpt4 book ai didi

带有私有(private) gitlab (ssh) 的 Goland 模块

转载 作者:行者123 更新时间:2023-12-01 19:39:39 24 4
gpt4 key购买 nike

再会!我尝试从 glide 迁移到 go 模块(私有(private) gitlab 存储库)
并通过 ssh 结帐代码

我有一个从私有(private) gitlab 仓库导入的简单项目。

go.mod 看起来像:

module my.private.package/modtest

go 1.12

require my.private.package/statistics v1.0.0

当我尝试构建我的应用程序或运行测试时,我得到:
go: my.private.package/statistics@v1.0.0: unrecognized import path "my.private.package/statistics" (parse https://my.private.package/statistics?go-get=1: no go-import meta tags ())
go: error loading module requirements

我尝试将设置添加到 git config:
[url "ssh://git@my.gitlab.server:9999"]
insteadOf = https://my.private.package

但仍然收到此错误。

有什么办法让它工作吗?
谢谢你。

最佳答案

我之前处理过 Go 模块和私有(private) GitLab。我们的私有(private) GitLab 有组和子组。您可能缺少的部分是 ~/.netrc你可能有一个不正确的全局 git 配置。
我为此做了一个 GitHub 要点。你可以在这里找到它:https://gist.github.com/MicahParks/1ba2b19c39d1e5fccc3e892837b10e21
您可以在下面找到粘贴的要点:
问题go命令行工具需要能够从您的私有(private) GitLab 获取依赖项,但需要进行身份验证。
这假设您的私有(private) GitLab 托管在 privategitlab.company.com .
环境变量
推荐使用以下环境变量:

export GO111MODULE=on
export GOPRIVATE=privategitlab.company.com
以上几行可能最适合您的 shell 启动,例如 ~/.bashrc .
解释 GO111MODULE=on告诉 Golang 命令行工具你正在使用模块。我没有用不使用的项目对此进行测试
私有(private) GitLab 上的 Golang 模块。 GOPRIVATE=privategitlab.company.com告诉 Golang 命令行工具不要将公共(public)互联网资源用于主机名
列出(如公共(public)模块代理)。
从您的私有(private) GitLab 获取个人访问 token
为了将来证明这些说明,请遵循 this guide from the GitLab docs .
我知道 read_api范围是 Golang 命令行工具工作所必需的,我可能怀疑 read_repository作为
好吧,但还没有证实这一点。
设置 ~/.netrc为了让 Golang 命令行工具向 GitLab 进行身份验证, ~/.netrc文件最好使用。
如果文件不存在,要创建该文件,请运行以下命令:
touch ~/.netrc
chmod 600 ~/.netrc
现在编辑文件的内容以匹配以下内容:
machine privategitlab.company.com login USERNAME_HERE password TOKEN_HERE
在哪里 USERNAME_HERE替换为您的 GitLab 用户名和 TOKEN_HERE被替换为在
上一节。
常见错误
不是 使用以下内容设置全局 git 配置:
git config --global url."git@privategitlab.company.com:".insteadOf "https://privategitlab.company.com"
我相信在撰写本文时,Golang 命令行工具不完全支持 SSH git,这可能会导致
~/.netrc 冲突.
奖励:SSH 配置文件
定期使用 git工具,而不是 Golang 命令行工具,有一个 ~/.ssh/config 很方便文件设置。
为此,请运行以下命令:
mkdir ~/.ssh
chmod 700 ~/.ssh
touch ~/.ssh/config
chmod 600 ~/.ssh/config
请注意,以上文件和目录的权限是 SSH 在其默认配置下工作的基本条件
大多数Linux系统。
然后,编辑 ~/.ssh/config文件以匹配以下内容:
Host privategitlab.company.com
Hostname privategitlab.company.com
User USERNAME_HERE
IdentityFile ~/.ssh/id_rsa
请注意上述文件中的间距很重要,如果不正确将使文件无效。
在哪里 USERNAME_HERE是您的 GitLab 用户名和 ~/.ssh/id_rsa是文件系统中 SSH 私钥的路径。
您已经将其公钥上传到 GitLab。这里是 some instructions .

关于带有私有(private) gitlab (ssh) 的 Goland 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59478542/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com