1. 程式人生 > >搭建私有Nuget倉庫

搭建私有Nuget倉庫

詳細 data nuget realm class 請求 tab 應用 可能

使用Nexus搭建私有Nuget倉庫

https://www.cnblogs.com/Erik_Xu/p/9211471.html

前言
  Nuget是ASP .NET Gallery的一員,是免費、開源的包管理工具,專註於在.Net / .Net Core應用開發過程中第三方組件庫的管理,相對於傳統單純的dll引用要方便、科學得多。其中nuget.org是最著名的Nuget公開庫,但是企業內部開發的(業務)公共組件不可能都往公開庫上傳,所以,企業內部需要一個私有的Nuget倉庫來支持。雖然微軟有提供的Nuget Server,但Nuget Server用起來並不那麽順手,或者說感覺有點low。因此,本文將介紹Nexus搭建的Nuget倉庫,希望能給大家多一個選擇。

安裝步驟
安裝環境

Centos 7+, docker

  1. 設置分區
    如果有數據盤需要掛載,可以先設置分區,沒有可跳過此步驟。

mkdir -p /opt/nexus -- 創建存放nexus數據的目錄

fdisk -l -- 查看硬盤信息,確定需要掛載的硬盤信息

mkfs.ext4 /dev/xvde -- 格式化硬盤

mount /dev/xvde /opt/nexus 掛載磁盤

blkid --查看硬盤信息

vim /etc/fstab --將新分區的blkid寫入/etc/fstab,內容參考:

UUID={uuid} /opt/nexus ext4 defaults 0 0

保存退出,並重啟機器。

  1. 禁止SELINNUX
    sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/g‘ /etc/selinux/config

重啟機器。

  1. 安裝docker
    如果已安裝的docker,可跳過此步驟。

yum update

yum install -y docker

systemctl enable docker

systemctl start docker

  1. 拉取Nexus的鏡像
    docker pull sonatype/nexus3:3.12.0

鏡像詳細說明:https://hub.docker.com/r/sonatype/nexus3/

  1. 運行Nexus並把數據持久化到虛擬機或掛載的分區
    mkdir /opt/nexus && chown -R 200 /opt/nexus

docker run -d -p 8081:8081 --name nexus -v /opt/nexus:/nexus-data sonatype/nexus3:3.12.0

稍等片刻,可能是幾分鐘,通過http://serverip:8081就能訪問Nexus了。

Nexus說明

  1. 默認帳號
    Nexus的默認管理員帳號:admin,密碼:admin123。點擊界面右上角可以登錄。

登錄完後,可以看到一個設置按鈕:

點擊Repositories,查看內置的默認倉庫:

  1. 倉庫說明
      其實Nexus默認已經創建好了Nuget的倉庫,並且是創建了3個不同類型的倉庫:nuget-group,nuget-hosted,nuget.org-proxy。

a. nuget.org-proxy

  類型是proxy,表示代理倉庫。我們向它請求包(package)的時候,如果本地有,它就從本地提供,如果本地沒有,它會從nuget.org下載到本地,然後給我提供這個包。

b. nuget-hosted

  類型是hosted,表示托管倉庫。我們一般把自己開發的包上傳到該倉庫中。

c. nuget-group

  類型是group,表示倉庫組,它結合了nuget.org-proxy和nuget-hosted,能對外提供上述兩者中的包。

  簡而言之,nuget-hosted負責包上傳,nuget.org-proxy負責代理包,nuget-group負責提供包。

上傳包(Package)

  1. 下載Nuget
    到https://www.nuget.org/downloads下載最新推薦的nuget.exe。

  2. 添加Nuget Realms
    因為Nexus認證Nuget是通過Realms來認證,因此,要添加Nuget Realms。

  3. 準備Package
    編寫DLL:

設置DLL信息(可選)

打包dll

方法一:使用控制臺

dotnet pack -c Release

方法二:使用Visual Studio

  1. 上傳Package
    指令模板:nuget push {dll}.nupkg {apiKey} -source {http://customsource/}

例如,我這裏是:D:\nuget push E:\WorkPlace\vs2017\Test\ErikDll\ErikDll\bin\Release\ErikDll.1.0.0.nupkg eb0497e8-5519-3f22-8e9f-f2eae720feb5 -source http://192.168.132.137:8081/repository/nuget-hosted/

Nexus上也能看到上傳的package:

其中,apiKey的獲取方法如下:

  1. 使用Package
  2. 打開Visual Studio的Nuget管理器,進行設置

  3. 添加私有Nuget倉庫地址

  4. 添加Package

  5. 調用結果

搭建私有Nuget倉庫