基于 Gitlab 快速搭建私有 Go Module
Contents
实现 go get 内部 gitlab 私有库,go get 基本原理可以参考链接。
场景一
gitlab 地址比较常规时,比如 https://10.1.30.167/
- 查看 gitlab 的 external_url(如果为 ip,且无法修改配置时直接看场景二,可以修改配置时参考 https://blog.csdn.net/xiuxiuzhuanshu/article/details/115961449)

go get 响应内容

本地设置 Host,因为 go get 不能是 ip
110.1.30.167 gitlab.yykk.com
如果本地使用代理软件(没有可忽略),记得先配置绕过该域名,下图是 Clash For Windows

- 本地浏览器测试访问成功

- 配置 SSH Keys

- 创建一个 private repo

git clone 测试
1git clone https://gitlab.yykk.com/abc/test

设置 .gitconfig,go get 默认走 https,这里让它走 ssh
1 2
[url "ssh://git@gitlab.yykk.com"] insteadOf = https://gitlab.yykk.com
设置 GOPRIVATE、GOINSECURE
1 2
go env -w GOPRIVATE=gitlab.yykk.com go env -w GOINSECURE="gitlab.yykk.com"
go get 测试及代码调用
1go get gitlab.yykk.com/abc/test


场景二
场景二的解决方案更加通用,也能用来解决场景一的问题。
gitlab 地址非常规时,比如 http://10.1.1.57:9001,且 external_url 为 ip
本地设置 Host,这里我们需要另外搭建一个 httpserver 伪造 go get 响应来实现
1 2
10.1.1.57 gitlab.yykk2.com 127.0.0.1 nginx.yykk2.com
本地浏览器访问测试

设置 SSH Keys
设置 .gitconfig
1 2
[url "ssh://git@gitlab.yykk2.com"] insteadOf = http://gitlab.yykk2.com:9001
git clone 测试
1git clone https://gitlab.yykk2.com:9001/aaa/bbb/ccc
这里 clone 域名只能通过 https 的方式

- 搭建 httpserver
根据情况设置 minLen
|
|
设置 GOPRIVATE、GOINSECURE
1 2
go env -w GOPRIVATE=nginx.yykk2.com go env -w GOINSECURE=nginx.yykk2.com
go get 测试
1go get nginx.yykk2.com/aaa/bbb/ccc
若出现下面的错误,修改 go.mod 将你要导入的 module 修改为对应的域名


- 重新 go get 以及代码调用


参考链接
Author niudaii
LastMod 2023-12-25