1,前言说明
golang是近来非常火热的语言,但是处理其依赖包一直都是一个让人头疼的问题,尤其是在国内,开发者需要下载一些官方的包的时候,就会非常苦恼。尽管已经有了私服 Athens
,公司也已经搭建了这个私服,但是小伙伴们使用下来,反馈仍旧不好,大多时候下载官方的包时还是要自己本地开小飞机进行下载。
今天就打算借助于nexus优秀且强大的代理能力,来解决一下这个痛点。
在nexus官方文档配置go代理的文章里,有如下一个拓扑说明了nexus当中go私服的用法:
这张图的意思很明了,也就是nexus私服的建立,同样需要依赖于 Athens
,因为在对一些本地包下载的问题上,显然Athens
解决的更好一些。于是乎,在目前nexus最新的版本(3.24)中我们看到,其也仅仅支持proxy
和group
两种类型,group是统一对外提供访问的,不必过多介绍,那么本篇文章,也就将是重点围绕着proxy类型的代理展开来讲的。
目前来看,纵然是nexus官方文档,谷歌百度,也没有比较完备的文档针对nexus当中配置golang项目私服的文章,我这里也算是结合之前配置其他代理的一些经验,分享一下自己配置整理的思路。至少目前公司小伙伴用起来,都是非常开心满意的,被这种简约高速的代理方式,纷纷赞不绝口的。
配置过程中,将添加三个proxy类型的,其中一个是套娃形式的,接下来一一介绍。
2,创建blob存储
为其创建一个单独的存储空间。
3,阿里代理
首先将国内的阿里仓库添加进来,再一次口头表扬阿里,这造福广大开发者的举措。添加的方式非常简单,与其他项目的代理添加方式一致:
- Name: proxy-go-ali
- Proxy
- Remote Storage: 远程仓库地址,这里填写: https://mirrors.aliyun.com/goproxy/
- Storage: go-hub。
其他的均是默认。
整体配置截图如下:
4,官方代理
一个全球代理为 Go 模块而生,添加的方式非常简单,与其他项目的代理添加方式一致:
- Name: proxy-go-gf
- Proxy
- Remote Storage: 远程仓库地址,这里填写: https://goproxy.io
- Storage: go-hub。
其他的均是默认。
整体配置截图如下:
5,创建group类型的go仓库
- Name:group-go
- Storage:选择专用的blob存储go-hub。
- group : 将左边可选的4个仓库,添加到右边的members下。
整体配置截图如下:
6,简单验证
没有使用私服之前,里边是空空如也。
通过设置GOPROXY将代理指向私服地址,然后进行项目的编译,可以看到对应的依赖的包已经缓存到私服当中了。
通过查看go版本,采用下面的方式设置
[root@worker ~]# go version
go version go1.13.11 linux/amd64
如果您使用的 Go 版本是 1.12 及以下
# 启用 Go Modules 功能
export GO111MODULE=on
# 配置 GOPROXY 环境变量
export GOPROXY=http://192.168.75.11:8081/repository/group-go/
如果您使用的 Go 版本是 1.13 及以上,采用这个进行配置
go env -w GO111MODULE=on
go env -w GOPROXY=http://192.168.75.11:8081/repository/group-go/
使用go安装模块
[root@worker ~]# go get -u golang.org/x/sys
go: finding golang.org/x/sys latest
go: downloading golang.org/x/sys v0.0.0-20200610111108-226ff32320da
go: extracting golang.org/x/sys v0.0.0-20200610111108-226ff32320da
参考文章:http://www.eryajf.net/4941.html