最近,公司的網(wǎng)絡(luò)策略有所調(diào)整试疙,之前通過(guò)Jenkins自動(dòng)構(gòu)建的項(xiàng)目诵棵,都不能正常訪問(wèn)
https://nuget.cdn.azure.cn/v3/index.json地址,于是就有了此文章介紹的方法祝旷,利用nuget離線緩存進(jìn)行項(xiàng)目的自動(dòng)構(gòu)建
nuget離線緩存
找一臺(tái)可以連接外網(wǎng)的服務(wù)器履澳,然后創(chuàng)建一個(gè)目錄,這里我不創(chuàng)建怀跛,就利用nuget默認(rèn)的緩存目錄(~/.nuget/packages)距贷,當(dāng)然也可以設(shè)置nuget緩存的目錄為其他的目錄,大家可以自行設(shè)置敌完。
此時(shí)储耐,可以在其他的目錄創(chuàng)建一個(gè)控制臺(tái)的項(xiàng)目,項(xiàng)目名字大家隨便起滨溉,就是是為了能夠方便下載nuget包(如果大家還有其他更好的方法什湘,可以評(píng)論區(qū)討論)
dotnet new console -o downloadnugetpackages
創(chuàng)建完了长赞,之后,如果想要緩存那個(gè)nuget包闽撤,我們就可以通過(guò):
dotnet add package Newtonsoft.Json --version13.0.1
這樣我們就能看到~/.nuget/packages目錄下已經(jīng)有了Newtonsoft.Json包
設(shè)置目錄共享
將~/.nuget/packages目錄作為共享目錄得哆,這樣其他的內(nèi)網(wǎng)服務(wù)器就能通過(guò)掛載該共享目錄進(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:需要訪問(wèn)該共享目錄的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? ....
至此壹无,問(wèn)題得以解決,不用再擔(dān)心nuget官網(wǎng)解析不了的問(wèn)題感帅。