Go 引入自定义包

Go语言 小铁匠 2023-12-25

想做一个go的公共助手包,但涉及公司业务逻辑不能放在公有仓库,只能引入私有仓库。

仓库地址:gitlab.xxx.com

配置私有代理

go env -w GOPRIVATE=gitlab.xxx.com

项目中引入

require gitlab.xxx.com/{first}/{second} v{tag}

使用最新提交

go get -u gitlab.xxx.com/{first}/{second}@{提交SHA}

如果目录超过两级会拉取不成功,这时可以使用 replace 来引入

require gitlab.xxx.com/{first}/{second} v{version}

replace gitlab.xxx.com/{first}/{second} v{version} gitlab.xxx.com/{one}/{two}/{three} v{tag}

使用最新提交

require gitlab.xxx.com/{first}/{second} v{version}

replace gitlab.xxx.com/{first}/{second} v{version} gitlab.xxx.com/{one}/{two}/{three} {提交SHA}

然后更新引入就可以了

go mod tidy
go mod vendor

阿里云 codeup 代码拉取不成功

如果你的代码托管平台是阿里云的codeup则会出现代码拉取失败:

Codeup 的代码托管具备多级组的结构组织能力,同时由于 Codeup 不支持全局公开仓库,因此为了企业数据的安全考虑,在使用 Go 的依赖管理时必须使用鉴权。

在 Go 1.13 改进了对 .netrc 身份验证的支持。如果通过 HTTPS 发出请求并且可以找到匹配的 .netrc 条目,Go 会向请求添加 HTTP 基本身份验证凭据。

Codeup上使用 .netrc 的最佳实践

在 Codeup 上申请可用于HTTP验证密钥或者口令。

例如,在 Codeup 上申请的可用于读取仓库账号为 foo,token为 bar。那么对应的 .netrc 配置信息为:

machine codeup.aliyun.com login foo password bar

Linux\macOS

文件应该存放在执行账户的根目录下,即:~/.netrc。

Windows

  • 定义环境变量 %HOME%,值为 %USERPROFILE%

  • 在 %HOME% 路径下新建一个文件 _netrc

  • 在 _netrc 中配置上述的配置信息

machine codeup.aliyun.com
login foo
password bar

结束.

------ 本文结束 感谢阅读 ------