1. 程式人生 > >.NET Core 從 Github到 Nuget 持續整合、部署

.NET Core 從 Github到 Nuget 持續整合、部署

一.前言

Nuget 作為一個.NET研發人員,我想你都不會陌生,他為我們提供非常方便的程式包管理,不管是版本,還是包的依賴都能輕鬆應對,可以說是我們的好助手。而 Nuget 除了官方nuget.org以外,我們也可以用起提供的程式包快速構建一個Nuget Server,打造企業內部的私有 Nuget,用來管理專案的package是十分方便的,相對於我們直接引用DLL,他可以方便的控制程式集版本和依賴。今天講講Nuget如何進行持續整合、部署,可以減少我們更新package所需時間

對nuget上傳包以及使用nuget命令有不瞭解的朋友可以花幾分鐘看下這兩篇文章:

二.為什麼用github?

如果用過持續整合的朋友都應該知道持續整合工具從程式碼倉庫拉去程式碼,今天我選用github來進行講解,因為github作為全球最大的開源社群,聚集了非常多的專案程式碼,你是否有注意Nuget上面的程式包很大一部分都是開源的,而且大部分都是開源在github的,所以github結合Nuget是非常不錯的。

三.Jenkin 從配置 github 拉取程式碼

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

五.寫在最後

配置看似很繁瑣,其實很簡單,配置過一次,再配置第二次就是手到擒來,祝大家配置成功,如果有什麼問題也可以加入下方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 開源社群組織。

相關推薦

.NET Core GithubNuget 持續整合部署

一.前言 Nuget 作為一個.NET研發人員,我想你都不會陌生,他為我們提供非常方便的程式包管理,不管是版本,還是包的依賴都能輕鬆應對,可以說是我們的好助手。而 Nuget 除了官方nuget.org以外,我們也可以用起提供的程式包快速構建一個Nuget Server,打造企業內部的私有 Nuget,用來管

ASP.NET Core + Docker +Jenkins 實現持續整合

本文為 docker-compose 方式,但自從 Visual Studio 2017 15.8 版本更新以後,通過VS新增的 Docker 支援預設就只有 Dockerfile 了,所以請參見這篇文章:https://www.cnblogs.com/stulzq/p/9201830.html 準備 我

Asp.net Core 使用Jenkins + Dockor 實現持續整合自動化部署(二):部署

前面又是廢話 我之前寫過: Asp.Net Core 程式部署到Linux(centos)生產環境(一):普通部署 Asp.Net Core 程式部署到Linux(centos)生產環境(二):docker部署 大家可能會有疑問,分散式環境當中的部署還是跟我們在windows一樣,一臺機一臺機的去

Asp.net Core 使用Jenkins + Dockor 實現持續整合自動化部署(一):Jenkins安裝

寫在前面 其實園子裡很多大佬都寫過,我也是一個搬運工很多東西不是原創的,不過還是想把自己安裝的過程,記錄下來如果能幫到大家的忙,也是一件功德無量的事; 執行環境 centos:7.2 cpu:1核 2G記憶體 1M頻寬 其實用的騰訊雲 安裝jenkins 這裡的jenkins就不從docker

.NET Core部署到linux(CentOS)最全解決方案,入魔篇(使用Docker+Jenkins實現持續整合自動化部署)

通過前面三篇: [.NET Core部署到linux(CentOS)最全解決方案,常規篇](http://blog.rdiframework.net/article/244) [.NET Core部署到linux(CentOS)最全解決方案,進階篇(Supervisor+Nginx)](http://bl

Azure Terraform(八)利用Azure DevOps 實現Infra資源和.NET CORE Web 應用程式的持續整合持續部署

一,引言   上一篇講解到利用 Azure DevOps 將整個 Azure Web App,Azure Traffic Manager profile,Azure Storage Account,Azure Key Vault 部署到 Azure 上,我們也知道整個 Infra 架構已經實現了自動化部署,而

【開源】使用.Net CoreGitHub Actions實現嗶哩嗶哩每日自動簽到投幣領取獎勵

![2233](https://i0.hdslb.com/bfs/article/ee7f266c8ecddf0827526a089b028451e75bb97a.jpg) [![GitHub Stars](https://img.shields.io/github/stars/RayWangQvQ

使用 Swagger 自動生成 ASP.NET Core Web API 的文檔在線幫助測試文檔(ASP.NET Core Web API 自動生成文檔)

地址 .cn 名稱 cor 生成文檔 def pos 構建 回車 對於開發人員來說,構建一個消費應用程序時去了解各種各樣的 API 是一個巨大的挑戰。在你的 Web API 項目中使用 Swagger 的 .NET Core 封裝 Swashbuckle 可以幫助你創建良好

.NET Core RSA密鑰的xmlpkcs1pkcs8格式轉換和JavaScriptJava等語言進行對接

math sax generator 支持 pkcs8 www stl body down 眾所周知在.NET下的RSA類所生成的密鑰為Xml格式,而其他語言比如java一般使用pkcs8格式的密鑰,JavaScript一般使用pkcs1格式。我們在開發過程中很可能遇到需要

Asp.Net Core MailKit 完美附件(中文名長文件名)

釋放 body 解決 n) .... osi count() 查看 get 最近在使用MailKit組件發送郵件,看了一些博客其實還是蠻簡單的,但是發送附件的時候卻產生了不小的問題,附件的中文名字是亂碼的,或者附件的名字過長就會無效,附件的名字在QQ郵箱中會變成類似 tc

.Net Core下基於NPOI對ExcelWord操作封裝

框架與依賴 框架:.NET Standard 2.0 依賴:DotNetCore.NPOI https://github.com/dotnetcore/NPOI http://www.cnblogs.com/savorboard/p/netcore-npoi.html

.net core依賴注入容器獲取物件

建立引擎方法:改方法用於在不使用構造注入的情況下從依賴注入容器中獲取物件 /// <summary> /// 一個負責建立物件的引擎 /// </summary> public interface IEngine { T Res

.net core執行dotnet ef migrations createmodeldotnet ef migrations add initial等命令出錯

.net core執行dotnet ef migrations createmodel、dotnet ef migrations add initial等命令出錯   執行dotnet ef migrations createmodel、dotnet ef migrations add initial等命令

在滴滴雲上使用 Jenkins 搭建基於 GitHub持續整合環境

簡介 Jenkins 是一個可擴充套件的持續整合引擎,主要用於持續、自動地構建/測試軟體專案,還可用於監控一些定時執行的任務。 本文將介紹如何在滴滴雲上,使用 Jenkins 作為持續整合伺服器,Git 倉庫作為程式碼儲存庫,實現工程的自動構建、部署等過程。 安裝 以下均基於

ASP.NET Core 專案實戰(持續更新~~~)

 一、前言   準備寫這個系列文章的設想開始於今年9月,毫無意外,期間又又又又拖了很長時間,文章主要是為了記錄自己學習使用 ASP.NET Core Web API 與 Vue 建立一個前後端分離的專案的整個過程。嗯,2018年快要結束了,應該能在 .NET Core 3.0 正式版和 Vue 3

簡單理解持續整合持續交付持續部署

「持續整合(Continuous Integration)」、「持續交付(Continuous Delivery)」和「持續部署(Continuous Deployment)」這三個概念有很詳細的解釋。這裡借用文中的插圖,說一下我對這三個概念的理解。 持續整合

談談持續整合持續交付持續部署

經常會聽到持續整合,持續交付,持續部署,三者究竟是什麼,有何聯絡和區別呢?什麼是“持續”? 所謂的持續,就是說每完成一個完整的部分,就向下個環節交付,發現問題可以馬上調整。是的問題不會放大到其他部分和後面的環節。 這種做法的核心思想在於:既然事實上難以做到事先完全瞭解完整

ASP.NET Core框架揭祕(持續更新中…)

之前寫了一系列關於.NET Core/ASP.NET Core的文章,但是大都是針對RC版本。到了正式的RTM,很多地方都發生了改變,所以我會將之前釋出的文章針對正式版本的.NET Core 1.0進行改寫。除此之外,我還會撰寫一系列與此相關的文章,這些文章以ASP.NET Core為核心,我個人將它們分成三

持續整合持續交付持續部署

1.持續整合 網際網路軟體的開發和釋出,已經形成了一套標準流程,最重要的組成部分就是持續整合(Continuous integration,簡稱CI)。 持續整合指的是,頻繁地(一天多次)將程式碼整合到主幹。 它的好處主要有兩個: 快速發現錯誤。 防止分支大

持續整合持續交付GoCD中文網開通啦

如果大家使用過Jenkins那麼相信大家對於持續整合非常熟悉。今天要給大家介紹的是另一個非常強大的CD工具GoCD官方對其也稱之為GO但是要明白他和go語言golang是沒有多大關係的,他是使用java語言開發的。如果你真在使用Jenkins你肯定在疑惑為什麼要