.NET Core 从 Github到 Nuget 持续集成、部署

一.前言

Nuget 作为一个.NET研发人员,我想你都不会陌生,他为我们提供非常方便的程序包管理,不管是版本,还是包的依赖都能轻松应对,可以说是我们的好助手。而 Nuget 除了官方nuget.org以外,我们也可以用起提供的程序包快速构建一个Nuget Server,打造企业内部的私有 Nuget,用来管理项目的package是十分方便的,相对于我们直接引用DLL,他可以方便的控制程序集版本和依赖。今天讲讲Nuget如何进行持续集成、部署,可以减少我们更新package所需时间

对nuget上传包以及使用nuget命令有不了解的朋友可以花几分钟看下这两篇文章:

  • 发布你的程序包到Nuget

  • 使用 dotnet cli 命令上传 nuget 程序包

二.为什么用github?

如果用过持续集成的朋友都应该知道持续集成工具从代码仓库拉去代码,今天我选用github来进行讲解,因为github作为全球最大的开源社区,聚集了非常多的项目代码,你是否有注意Nuget上面的程序包很大一部分都是开源的,而且大部分都是开源在github的,所以github结合Nuget是非常不错的。

三.Jenkin 从配置 github 拉去代码

Jenkins算是使用量比较多的一个持续集成工具,关于它我们写了一个系列,可以参考下 http://www.cnblogs.com/stulzq/p/8629165.html

1.创建 github AccessToken

(1) 选择 用户下拉列表选项中的 “Setting”

640?wx_fmt=png&wxfrom=5&wx_lazy=1

(2) 选择 “Developer settings”

640?wx_fmt=png

(3) 选择 “Personal access tokens”->“Generate new token”

640?wx_fmt=png

(4) 选择下图的权限

640?wx_fmt=png

然后点生成就可以了,一定要保存好这个token

2.配置Jenkins

(1) 进入 “系统管理”->"管理插件" 安装 Github Plugin插件

640?wx_fmt=png

(2) 然后进入 “系统管理”->“系统设置->Github Server” 添加如下信息

640?wx_fmt=png

Credentials 那里点击 Add 添加如下信息

640?wx_fmt=png

添加完毕之后记得选择我们刚刚添加的信息

最后点击"Test Connection"如果配置正确应当有如下显示:

640?wx_fmt=png

3.创建任务

(1) 创建一个自由风格的任务:

640?wx_fmt=png

(2) 勾选 Github Project 填入github仓库url

640?wx_fmt=png

(3) 源码管理选择git,填写仓库git地址,选择需要构建的分支,我这里选择master (** 为选择所有分支)

640?wx_fmt=png

(4) 构建触发器选择 GitHub hook trigger for GITScm polling

640?wx_fmt=png

(5) 然后添加构建步骤 Shell ,填入构建和部署的命令

640?wx_fmt=png

(6) 如何编写构建命令 按照如下格式编写

# 编译项目echo "begin build..."dotnet build Alipay.AopSdk.Core.sln -c Release
echo "build success"# 创建nuget临时存放目录和归档目录mkdir /publish/nuget/aopsdk/$(date +%Y%m%d) -pmkdir /publish/archives/$(date +%Y%m%d) -pecho "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.orgecho "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"# 归档packagemv /publish/nuget/aopsdk/$(date +%Y%m%d)/* /publish/archives/$(date +%Y%m%d)

最后点击保存。

4.最后一步,注册webhook钩子

回到我们的 "系统管理"->系统设置"->"Github Server" 选择高级(有两个高级 别选择错了)

640?wx_fmt=png

然后进行如下操作为我们的仓库创建钩子

640?wx_fmt=png

如果创建成功,到我们github仓库 “Setting”->"Webhooks" 应当可以看见github插件已经为我们自动创建了一个钩子:

640?wx_fmt=png

到此,我们的配置就结束了,如果提交代码到对应分支,就会触发构建,如果构建成功就会上传package到我们的Nuget,十分方便,好了赶紧去享受吧。

640?wx_fmt=png

如果出错,我们可以 控制台日志来查出错误。

四.常见问题

  • 如果部署到企业内部的私有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 开源社区组织。

原文地址 :http://www.cnblogs.com/stulzq/p/8877652.html

.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

640?wx_fmt=jpeg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/321561.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

P2336-[SCOI2012]喵星球上的点名【SA,树状数组】

正题 题目链接:https://www.luogu.com.cn/problem/P2336 题目大意 nnn个名字(每个名字两个串)&#xff0c;mmm次点名&#xff0c;如果一次点名里是一个名字两个串中的子串该人就要答到。 对于每次点名求多少个人答到&#xff0c;每个名字求答到多少次。 解题思路 先考虑第一…

11、oracle数据库下的事务和触发器

ORACLE下的事务和触发器 1.事务 事务是数据库的一种机制&#xff0c;当执行一系列操作时&#xff0c;事务可以保证这一系列操作都能完成&#xff0c;在此期间如果出现问题&#xff0c;则这一系列操作导致的结果均回退到原始状态。这样就保证了数据的一致性&#xff0c;事务在…

微软发布自己定制的 Linux 内核和发行版,面向物联网

微软首次发布了自己的定制 Linux 内核和发行版。在旧金山举行的新闻发布会上&#xff0c;微软宣布了针对物联网设备的解决方案 Azure Sphere。Azure Sphere 包含三个组件。其中之一是微软设计的 Sphere MCU&#xff0c;将免费提供给厂商&#xff0c;联发科将在今年晚些时候推出…

P3804-[模板]后缀自动机【SAM】

正题 题目链接:https://www.luogu.com.cn/problem/P3804 题目大意 长度为nnn的串&#xff0c;求一个出现次数不小于2的子串使得子串长度乘上出现次数最大。 解题思路 构建SAMSAMSAM的时候统计一下每个子串出现多少次即可。 codecodecode #include<cstdio> #include&l…

MEDIATR 一个低调的中介者类库

微软官方的开源项目eShopOnContainers中&#xff0c;用到了一个实现中介者模式的类库&#xff1a;MediatR。这个类库的作者叫Jimmy Bogard&#xff0c;在其gtihub主页上可以看到&#xff0c;注明的对象映射组件AutoMapper 就是他写的。其博客上的自我介绍是这么写的&#xff1a…

12、oracle数据库下的存储过程和函数

ORACLE下的存储过程和函数 存储过程和函数是一种操作块&#xff0c;用来流程化、整体化处理业务逻辑的数据库操作方式。我理解的是相当于java开发语言中方法的概念&#xff0c;存储过程和函数的区别在于函数可以有返回值&#xff0c;而过程没有返回值。 1.存储过程 -- 创建存…

Codeforces Gym 101173 CERC 16 D BZOJ 4790 Dancing Disks

Codeforces Gym 101173 CERC 16 D & BZOJ 4790 Dancing Disks 强烈安利这道构造题目&#xff0c;非常有意思。 这里用到的思想是归并排序&#xff01; 多路归并排序&#xff01; 我们这样想&#xff0c;假设6*6的网格中除了最后一个网格外&#xff0c;其他的凡是有元素…

P5496-[模板]回文自动机【PAM】

正题 题目链接:https://www.luogu.com.cn/problem/P5496 题目大意 长度为nnn的字符串&#xff0c;求每个字符串作为结尾有多少个回文串。 解题思路 PAMPAMPAM。 下面是个人对PAMPAMPAM的一些理解(不是讲解)&#xff1a; 每个节点表示一个回文串&#xff0c;就是根到其的路径…

ApacheSkyWalking APM 生态衍生多语言监控, 支持 .NET Core

Apache SkyWalking .NET core 探针发布&#xff01;GitHub: https://github.com/apache/incubator-skywalking 码云Gitee: https://gitee.com/OpenSkywalking/sky-walkingApache SkyWalking在4月初&#xff0c;发布了加入Apache孵化器后的第一个版本&#xff1a;5.0.0-alpha。…

13、oracle数据库下的游标

ORACLE下的游标操作 游标是sql的一个内存工作区&#xff0c;由系统或者用户以变量的形式定义。游标的作用是用于临时存储从数据库中提取的数据块。游标有静态游标、动态游标之分&#xff0c;静态游标又可分为隐式游标和显式游标。静态游标是在编译时期就决定了结果集的&#x…

背包系列

庆功会&#xff08;ssl 2289&#xff09; Description 为了庆贺班级在校运动会上取得第一名的成绩&#xff0c;班主任决定开一场庆功会&#xff0c;为此拔款购买奖品奖励运动员&#xff0c;期望拔款金额能购买最大价值的奖品&#xff0c;可以补充他们的精力和体力。 Input …

使用TFS CI/CD 完成 VSTS 插件自动化部署和发布

Visual Studio Team Service 经过了13年的版本演进和5年的在线运营&#xff0c;现在已经是最成熟的商用DevOps工具链&#xff0c;Marketplace作为VSTS为全球开发者提供各种类型的插件市场&#xff0c;为Visual Studio, Visual Studio Code和Visual Studio Team Service本身提供…

P4248-[AHOI2013]差异【SAM or SA】

正题 题目链接:https://www.luogu.com.cn/problem/P4248 题目大意 TiT_iTi​表示后缀i∼ni\sim ni∼n 一个字符串求 ∑i1n∑jinlen(Ti)len(Tj)−2∗lcp(Ti,Tj)\sum_{i1}^n\sum_{ji}^nlen(T_i)len(T_j)-2*lcp(T_i,T_j)i1∑n​ji∑n​len(Ti​)len(Tj​)−2∗lcp(Ti​,Tj​) 解题…

14、ORACLE下的基本SQL操作

ORACLE下的基本SQL操作 1.获取表字段 select * from user_tab_columns where Table_Name用户表 order by column_name2.获取表注释 select * from user_tab_comments where Table_Name用户表 order by Table_Name3.获取字段注释 select * from user_col_comments where Table_…

暗黑破坏神(ssl 2295)

暗黑破坏神&#xff08;ssl 2295&#xff09; Description 无聊中的小x玩起了Diablo I... 游戏的主人公有n个魔法 每个魔法分为若干个等级&#xff0c;第i个魔法有p[i]个等级(不包括0) 每个魔法的每个等级都有一个效果值&#xff0c;一个j级的i种魔法的效果值为w[i][j] 魔法升…

用C# (.NET Core) 实现迭代器设计模式

本文的概念来自深入浅出设计模式一书项目需求有两个饭店合并了, 它们各自有自己的菜单. 饭店合并之后要保留这两份菜单.这两个菜单是这样的:菜单项MenuItem的代码是这样的:最初我们是这样设计的, 这是第一份菜单:这是第2份菜单:同时有两个菜单存在的问题问题就是多个菜单把事情…

P4287-[SHOI2011]双倍回文【PAM】

正题 题目链接:https://www.luogu.com.cn/problem/P4287 题目大意 长度为nnn的字符串。定义wRw^RwR表示字符串www的翻转。 一个双倍回文可以表示为wwRwwRww^Rww^RwwRwwR且这是个回文串。 求最长的子串是双倍回文。 解题思路 我们在构建PAMPAMPAM的时候维护一个halfhalfhal…

2020-09-18

1.处理调用子组件方法时&#xff0c;报错undefined问题 2.var 、const 、let区别 3. curl -X GET --header "Accept: */*" "访问地址" 4.mysql中的日期格式化 5. ant-design-vue-jeecg

低价购买(洛谷 1108)

低价购买&#xff08;洛谷 1108&#xff09; 题目描述 “低价购买”这条建议是在奶牛股票市场取得成功的一半规则。要想被认为是伟大的投资者&#xff0c;你必须遵循以下的问题建议:“低价购买&#xff1b;再低价购买”。每次你购买一支股票,你必须用低于你上次购买它的价格购…

.NET Core/.NET之Stream简介

之前写了一篇C#装饰模式的文章用.NET Core实现装饰模式和.NET Core的Stream简介 提到了.NET Core的Stream, 所以这里尽量把Stream介绍全点. (都是书上的内容).NET Core/.NET的Streams首先需要知道, System.IO命名空间是低级I/O功能的大本营.Stream的结构.NET Core里面的Stream主…