.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 拉取代码

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 开源社区组织。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏开源项目

码云推荐 | J2EE 快速开发平台 renren-security-boot

renren-security-boot 是一款基于代码生成器的 J2EE 快速开发平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展;使用 Spring...

3248
来自专栏.net core新时代

开源任务管理平台TaskManager介绍

  很早之前准备写Quartz系列文章,现在终于能够实现了。从本篇开始将带你实现一款自己的任务管理平台。在工作中你曾经需要应用执行一个任务吗?这个任务每天或每周...

2049
来自专栏苍云横渡学习笔记

【第七部分-django论坛从搭建到部署】一个完整Django入门指南

欢迎来到我们教程系列的最后一部分!这篇文章,我们将把Django应用程序部署到生产服务器。我们还将为我们的服务器配置Email服务和HTTPS证书。

2552
来自专栏运维咖啡吧

探秘varian:优雅的发布部署程序

varian是我们基于Python3编写的一套部署程序,处在整个部署系统的中心,与CMDB、Jenkins、SVN/Git、镜像仓库Harbor、Kuberne...

807
来自专栏云计算教程系列

如何在Ubuntu 14.04上安装Cassandra并运行单节点集群

Cassandra或Apache Cassandra是一个高度可扩展的开源NoSQL数据库系统,在多节点设置上实现了出色的性能。

1143
来自专栏菩提树下的杨过

silverlight 4 tools for vs2010无法在vs2010 SP1上安装的解决办法

环境:英文版vs2010 sp1 + vs2013 RC 90天体验版 原来可以正常做silverilght 4 项目开发,今天因为vs2013 RC过了90天...

1835
来自专栏PHP实战技术

微信开发中网页授权access_token与基础支持的access_token异同

问题1:网页授权access_token与分享的jssdk中的access_token一样吗? 答:不一样。网页授权access_token 是一次性的,而基础...

3338
来自专栏杨建荣的学习笔记

密码管理的初步实现

之前写了一版密码管理,主要针对的是对于发送密码方面的安全考虑,今天说的这个是对于密码的统一管理。

803
来自专栏程序员的碎碎念

拥有了这些工具,你还需要鼠标?

相信大家平时在使用电脑的过程中,总会有一些坏习惯,有时候把强迫症的把文件、软件和图片分类好;有时候先会把文件保存在桌面,然后在放到自己想放的位置;

881
来自专栏张戈的专栏

解决网站404页面返回200状态码问题

好久没打理博客,突然收到 CDN 流量预警,发现平均每天 40G 流量消耗!what?就现在这个访问量,不存在的。看了下 CDN 日志发现有小人一直在请求博客页...

533

扫码关注云+社区