目標
使用 GitHub Package Registry 建立一個自已的 Nuget Server。
步驟
前置作業
申請
GitHub Package Registry 還在 Beta 階段,需要申請才能取得試用。
過程並不複雜,在此不贅述,請再自行查找網路。
建立 Repository
實測的結果,nuget push
並無法建立 Repository ,
並且會導致發佈失敗,故必需 優先建立 Packages 的 Repository 。
Repository 可以包含多個專案,並獨立發佈(發佈指令詳見下文)。
建立 .nuget 文檔
請以專案名稱命名檔案,ex:Marsen.Utility.nuget
請依實際情況調整 id、version 與 projectUrl
特別是 version 代表的是 Packages 的版本
更多訊息請參考
1 |
|
取得授權 token
請參考 Configuring NuGet for use with GitHub Package Registry 或是 Creating a personal access token for the command line
至少需要以下權限
- repo Full control of private repositories
- repo:status Access commit status
- repo_deployment Access deployment status
- public_repo Access public repositories
- repo:invite Access repository invitations
- write:packages Upload packages to github package registry
- read:packages Download packages from github package registry
下載/安裝/設定 Nuget
- 下載 Latest Nuget,取得 nuget.exe
- 設定 Path (以 Windows 10 為例)
- 控制台
- 系統設定>進階設定
- 環境變數 > Path
- 設定完 path 記得重啟 Terminal Session
新增 Nuget Source
新增
Name 、 Source 與 UserName 網址請依實際調整參數
Password 請代入 token
1 | nuget sources Add -Name "Marsen.Nuget sources" / |
設定 Key
1 | nuget setapikey 3*******************************1 -Source "Marsen Nuget Sources" |
刪除
1 | nuget sources Remove -Name "Marsen.Nuget sources" |
查詢
1 | nuget sources |
打包
1 | nuget pack Marsen.Package.csproj -OutputDirectory c:\local_nugets |
發佈
1 | nuget push c:\local_nugets\Marsen.Utility.1.0.0.nupkg -Source "Marsen Nuget Sources" |
結果
下一步
- 每次都要打版號好麻煩,能不能自動化 ?
- 透過 CI 建立,並傳入參數作為版號 ?
- 每次 commit 只要通過 UT 測試就發佈.beta 版 ? CI 發佈正式版 ?
more…
參考
- Configuring NuGet for use with GitHub Package Registry
- Creating a personal access token for the command line
- https://www.nuget.org/
- https://docs.microsoft.com/zh-tw/nuget/install-nuget-client-tools
- https://docs.microsoft.com/zh-tw/nuget/reference/nuspec
(fin)