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

