如何在 go mod 中使用私有仓库
Alex 11/10/2020 golang
# 申请权限
申请 read_repository 权限的 gitlab AccessToken
# 修改 repo 代理
核心原理就是刚才申请的 token 可以进行免密 clone,git clone https://oauth2:${TOKEN}@${MODREPO}
以下命令的作用是将 go mod 中使用默认http无认证的链接,替换为使用token认证的链接,进行免密clone
TOKEN="xxxx"
MODREPO="gitlab.private.org/backend/repo.git"
$ git config --global url."https://oauth2:${TOKEN}@${MODREPO}".insteadOf "https://${MODREPO}"
1
2
3
4
2
3
4
# 跳过GOPROXY
否则 go mod tidy 时将会被代理到设置的地址,无法获取到包
$ go env -w GOPRIVATE=gitlab.private.org
1
# 测试
$ go mod tidy -v
get "gitlab.private.org/backend/repo.git": found meta tag get.metaImport{Prefix:"gitlab.private.org/backend/repo.git", VCS:"git", RepoRoot:"https://gitlab.private.org/backend/repo.git"} at //gitlab.private.org/backend/repo?go-get=1
go: downloading gitlab.private.org/backend/repo.git v1.0.0
1
2
3
2
3
# 其他git服务器
以上教程适用于 gitlab,其他git服务器可以使用账号密码进行操作、也可以使用 ssh-key 认证
$ git config --global url."https://gitlabuser:gitlabpassword@${MODREPO}".insteadOf "https://${MODREPO}"
1