一.前言
Nuget 作為一個.NET研發人員,我想你都不會陌生,他為我們提供非常方便的程序包管理,不管是版本,還是包的依賴都能輕松應對,可以說是我們的好助手。而 Nuget 除了官方nuget.org
以外,我們也可以用起提供的程序包快速構建一個Nuget Server,打造企業內部的私有 Nuget,用來管理項目的package是十分方便的,相對於我們直接引用DLL,他可以方便的控制程序集版本和依賴。今天講講Nuget如何進行持續集成、部署,可以減少我們更新package所需時間。
對nuget上傳包以及使用nuget命令有不了解的朋友可以花幾分鍾看下這兩篇文章:
二.為什么用github?
如果用過持續集成的朋友都應該知道持續集成工具從代碼倉庫拉去代碼,今天我選用github來進行講解,因為github作為全球最大的開源社區,聚集了非常多的項目代碼,你是否有注意Nuget上面的程序包很大一部分都是開源的,而且大部分都是開源在github的,所以github結合Nuget是非常不錯的。
三.Jenkin 從配置 github 拉取代碼
Jenkins算是使用量比較多的一個持續集成工具,關於它我們寫了一個系列,可以參考下 http://www.cnblogs.com/stulzq/p/8629165.html
1.創建 github AccessToken
(1) 選擇 用戶下拉列表選項中的 “Setting”
(2) 選擇 “Developer settings”
(3) 選擇 “Personal access tokens”->“Generate new token”
(4) 選擇下圖的權限
然后點生成就可以了,一定要保存好這個token
2.配置Jenkins
(1) 進入 “系統管理”->"管理插件" 安裝 Github Plugin
插件
(2) 然后進入 “系統管理”->“系統設置->Github Server” 添加如下信息
Credentials 那里點擊 Add 添加如下信息
添加完畢之后記得選擇我們剛剛添加的信息
最后點擊"Test Connection"如果配置正確應當有如下顯示:
3.創建任務
(1) 創建一個自由風格的任務:
(2) 勾選 Github Project
填入github倉庫url
(3) 源碼管理選擇git,填寫倉庫git地址,選擇需要構建的分支,我這里選擇master
(** 為選擇所有分支)
(4) 構建觸發器選擇 GitHub hook trigger for GITScm polling
(5) 然后添加構建步驟 Shell
,填入構建和部署的命令
(6) 如何編寫構建命令 按照如下格式編寫
# 編譯項目
echo "begin build..."
dotnet build Alipay.AopSdk.Core.sln -c Release
echo "build success"
# 創建nuget臨時存放目錄和歸檔目錄
mkdir /publish/nuget/aopsdk/$(date +%Y%m%d) -p
mkdir /publish/archives/$(date +%Y%m%d) -p
echo "begin pack..."
# 打包項目 Alipay.AopSdk.Core 並輸出到臨時存放目錄
echo "pack Alipay.AopSdk.Core..."
dotnet pack Alipay.AopSdk.Core/Alipay.AopSdk.Core.csproj -c Release -o /publish/nuget/aopsdk/$(date +%Y%m%d)
echo "pack Alipay.AopSdk.Core success"
# 發布到nuget.org
echo "begin push..."
dotnet nuget push /publish/nuget/aopsdk/$(date +%Y%m%d)/*.nupkg -k <你的api key>-s https://api.nuget.org/v3/index.json
echo "push success"
# 歸檔package
mv /publish/nuget/aopsdk/$(date +%Y%m%d)/* /publish/archives/$(date +%Y%m%d)
最后點擊保存。
4.最后一步,注冊webhook鈎子
回到我們的 "系統管理"->系統設置"->"Github Server" 選擇高級(有兩個高級 別選擇錯了)
然后進行如下操作為我們的倉庫創建鈎子
如果創建成功,到我們github倉庫 “Setting”->"Webhooks" 應當可以看見github插件已經為我們自動創建了一個鈎子:
到此,我們的配置就結束了,如果提交代碼到對應分支,就會觸發構建,如果構建成功就會上傳package到我們的Nuget,十分方便,好了趕緊去享受吧。
如果出錯,我們可以 控制台日志來查出錯誤。
四.常見問題
-
如果部署到企業內部的私有Nuget Server,只需修改
dotnet nuget push -s
參數后的地址就行了。 -
如果采用我前面寫的系列教程安裝的Jenkins由於是采用Docker容器運行的,所以自帶沒有dotnet core的環境,需要進入Docker容器,安裝才行,在dotnet core 官網下選擇安裝的時候,系統選擇
Debian 9
https://www.microsoft.com/net/learn/get-started/linux/debian9 -
搭建私有Nuget ,請看這篇文章 https://www.jianshu.com/p/08e43b822137
五.寫在最后
配置看似很繁瑣,其實很簡單,配置過一次,再配置第二次就是手到擒來,祝大家配置成功,如果有什么問題也可以加入下方QQ群進行提問。最后想說一句話,NET Core 的生態構建需要你的參與,希望大家能共同支持.NET Core成長。歡迎大家加入NCC https://github.com/dotnetcore
NCC 全稱 .NET Core Community(同時保有 .NET China Community 的名稱,其縮寫為 dotnet-china),成立於 2016 年年中。NCC(時名為 .NET Core 中國學習小組)最初項目為微軟 ASP.NET Core 文檔翻譯項目,為第一批學習 ASP.NET Core 的中文圈開發人員提供了巨大便利,后微軟逐步文檔國際化,該翻譯項目完成全部歷史使命。后經歷多次調整,最終更名為 .NET Core Community,是一個目前包括 12 個成員項目(含 1 個外部項目)、4 個子團隊的正不斷成長、完善,並正加速前進的 .NET/.NET Core 開源社區組織。