一.前言

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

.NET Core 从 Github到 Nuget 持续集成、部署的更多相关文章

  1. ASP.NET Core & Docker & Jenkins 零基础持续集成实战

    原文:ASP.NET Core & Docker & Jenkins 零基础持续集成实战 一.本系列教程说明 源代码管理工具:Gogs 持续集成工具:Jenkins 容器:Docker ...

  2. Asp.net Core 使用Jenkins + Dockor 实现持续集成、自动化部署(二):部署

    前面又是废话 我之前写过: Asp.Net Core 程序部署到Linux(centos)生产环境(一):普通部署 Asp.Net Core 程序部署到Linux(centos)生产环境(二):doc ...

  3. Asp.net Core 使用Jenkins + Dockor 实现持续集成、自动化部署(一):Jenkins安装

    2019/1/31更新,经过我一段时间的使用 建议大家的jenkins还是不要使用docker方式安装 建议大家的jenkins还是不要使用docker方式安装 建议大家的jenkins还是不要使用d ...

  4. Azure Terraform(八)利用Azure DevOps 实现Infra资源和.NET CORE Web 应用程序的持续集成、持续部署

    一,引言 上一篇讲解到利用 Azure DevOps 将整个 Azure Web App,Azure Traffic Manager profile,Azure Storage Account,Azu ...

  5. Net 项目构建基于Jenkins + Github + Mono 的持续集成环境

    Net 项目构建基于Jenkins + Github + Mono 的持续集成环境 阅读目录 1 安装 2 配置 3 测试 在Redhat enterprise 6.5 的服务器上,为在gutub 上 ...

  6. [dotnet core]落地微服务特色的DevOps管道,持续集成/部署到kubernetes。

    目录 前言 目标 工具 - 最小的学习成本 方案 - 愿景 1. 持续集成 - CI 2. 持续部署 - CD 部署环境 1. 部署gitlab-runner 2. 注册gitlab-runner 搭 ...

  7. Asp.net Core 使用Jenkins + Dockor 实现持续集成、自动化部署(三):搭建jenkins集群环境

    写在前面 大家可以看到本文的配图,左边是jenkins单机环境,右边是jenkins集群.个中区别,不言而喻,形象生动. 前面我分别介绍了.net core 程序的多种部署方式(无绝对孰优孰劣): 1 ...

  8. Centos7.4简单安装使用gitlab+maven+jenkins实现java代码的持续集成部署

    1.工具的简单介绍 gitlab--源代码版本管理控制工具 maven--java代码编译构建工具 jenkins--基于java开发的自动化持续集成部署工具 sonar--代码质量管理工具 2.gi ...

  9. Devops 开发运维高级篇之Jenkins+Docker+SpringCloud微服务持续集成——部署方案优化

    Devops 开发运维高级篇之Jenkins+Docker+SpringCloud微服务持续集成--部署方案优化 之前我们做的方案部署都是只能选择一个微服务部署并只有一台生产服务器,每个微服务只有一个 ...

随机推荐

  1. 基于python的接口自动化测试+ddt数据驱动

    在测试接口时,一个接口会先写好测试用例,这个用例主要针对功能,传入参时考虑到各种场景,正常的,异常的,如:参数缺省,参数传一个六位数字写用例时考虑边界情况等. 一个接口设计用例时有可能会十几条到几十条 ...

  2. oracle exp(expdp)数据迁移(生产环境,进行数据对比校验)

    前言:客户需要迁移XX 库 ZJJJ用户(迁移到其他数据库),由于业务复杂,客户都弄不清楚里面有哪些业务系统,为保持数据一致性,需要停止业务软件,中间件,杀掉oracle进程. 一.迁移数据倒出部分= ...

  3. Alpha冲刺Day8

    Alpha冲刺Day8 一:站立式会议 今日安排: 经过为期5天的冲刺,基本完成企业人员模块的开发.因第三方机构与企业存在委托的关系.第三方人员对于风险的自查.风险列表的展示以及自查风险的统计展示(包 ...

  4. 基于微信小程序的失物招领系统的Postmortem

    基于微信小程序的失物招领系统的Postmortem 设想和目标 1.我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 对于我们团队要解决的问题和实现的功能在项目开始就 ...

  5. python functools.lru_cache做备忘功能

    import time import functools def clock(func): @functools.wraps(func)#还原被装饰函数的__name__和__doc__属性 def ...

  6. scrapy 修改URL爬取起始位置

    import scrapy from Autopjt.items import myItem from scrapy.http import Request class AutospdSpider(s ...

  7. 项目Beta冲刺Day2

    项目进展 李明皇 今天解决的进度 优化了信息详情页的布局:日期显示,添加举报按钮等 优化了程序的数据传递逻辑 明天安排 程序运行逻辑的完善 林翔 今天解决的进度 实现微信端消息发布的插入数据库 明天安 ...

  8. python小练习之三---购物车程序

    购物车购物的例子 严格来讲,这个例子相对大一些 功能也稍完备一些,具有用户登录,商品上架,用户购物,放入购物车,展示每个用户的购物车里的商品的数量,用户账户余额,支持用户账户充值等 下面展示的代码有些 ...

  9. 智能合约语言 Solidity 教程系列9 - 错误处理

    这是Solidity教程系列文章第9篇介绍Solidity 错误处理. Solidity系列完整的文章列表请查看分类-Solidity. 写在前面 Solidity 是以太坊智能合约编程语言,阅读本文 ...

  10. VMware网络配置

    NAT模式 首先保证虚拟机网卡和主机对接,虚拟机网络连接要和主机在同一网段 1. 控制面板\网络和 Internet\网络连接中配置VMnet8 2. 编辑虚拟机网络配置 此处子网ip需要和Vnet8 ...