最近,公司的網(wǎng)絡(luò)策略有所調(diào)整,之前通過Jenkins自動(dòng)構(gòu)建的項(xiàng)目,都不能正常訪問
https://nuget.cdn.azure.cn/v3/index.json地址,于是就有了此文章介紹的方法,利用nuget離線緩存進(jìn)行項(xiàng)目的自動(dòng)構(gòu)建
nuget離線緩存
找一臺可以連接外網(wǎng)的服務(wù)器,然后創(chuàng)建一個(gè)目錄,這里我不創(chuàng)建,就利用nuget默認(rèn)的緩存目錄(~/.nuget/packages),當(dāng)然也可以設(shè)置nuget緩存的目錄為其他的目錄,大家可以自行設(shè)置。
此時(shí),可以在其他的目錄創(chuàng)建一個(gè)控制臺的項(xiàng)目,項(xiàng)目名字大家隨便起,就是是為了能夠方便下載nuget包(如果大家還有其他更好的方法,可以評論區(qū)討論)
dotnet new console -o downloadnugetpackages
創(chuàng)建完了,之后,如果想要緩存那個(gè)nuget包,我們就可以通過:
dotnet add package Newtonsoft.Json --version13.0.1
這樣我們就能看到~/.nuget/packages目錄下已經(jīng)有了Newtonsoft.Json包

設(shè)置目錄共享
將~/.nuget/packages目錄作為共享目錄,這樣其他的內(nèi)網(wǎng)服務(wù)器就能通過掛載該共享目錄進(jìn)行文件的讀取。
在linux中利用nfs進(jìn)行文件的共享掛載,需要進(jìn)行如下的操作:
1. 安裝nfs包
sudo yum install nfs-utils
2. 創(chuàng)建共享目錄,例如:
mkdir -p /data/sharedata
chmod -R a+r /data/sharedata//確保其他的用戶有讀取的權(quán)限
由于我這里的目錄是:~/.nuget/packages,我只需要操作如下命令即可:
chmod -R a+r ~/.nuget/packages
3. 編輯配置文件
vi /etc/exports
輸入:/root/.nuget/packages 192.168.20.11(rw,insecure) ,根據(jù)自己的情況填寫,
/root/.nuget/packages:是被共享的目錄,大家最好不使用root賬戶,這里只是作為展示,實(shí)際應(yīng)用中不推薦
192.168.20.11:需要訪問該共享目錄的IP地址
rw:配置讀寫權(quán)限
4. 配置生效
exportfs-r
5. 啟動(dòng)服務(wù)
systemctlstart nfs
6. 設(shè)置開機(jī)啟動(dòng)
chkconfignfson或者 systemctl enable nfs
7. 查看共享文件夾是否存在
showmount-e
客戶端掛載
1. 創(chuàng)建掛載目錄:
mkdir -p /data/sharedata
2. 安裝nfs
sudoyum install nfs-utils
3. 掛載
mount192.168.20.12:/root/.nuget/packages /data/sharedata
4. 設(shè)置開機(jī)自動(dòng)掛載
vi/etc/fstab92.168.20.12:/root/.nuget/packages/data/sharedatanfsdefaults00mount-a//使配置生效
利用本地緩存構(gòu)建項(xiàng)目
在客戶端服務(wù)器上,已經(jīng)有了nuget包的緩存,就可以在執(zhí)行構(gòu)建項(xiàng)目的時(shí)候指定緩存目錄:
dotnetrestore--source /data/sharedatadotnetpublish--no-restore? ....
至此,問題得以解決,不用再擔(dān)心nuget官網(wǎng)解析不了的問題。