实际开发中我们需要对一些公共类库进行开发,并基于Jenkins进行CI/CD(CI:持续集成,CD:持续部署),其他项目通过NuGet引用。上文讲述了如何搭建本地NuGet服务器并发布NuGet包,这里不再赘述。

CI/CD流程如下图:

首先公共类库代码通过Git管理,编辑完代码后上传到Git服务器。

配置Jenkins Job,按设定的触发条件进行构建任务。

构建开始,删除Workspace中旧文件,从Git服务器下载最新代码,执行编译,生成NuGet包,上传到NuGet服务器。

这样,别人就可以引用或者更新最新的公共类库的NuGet包进行业务开发了。

在Visual Studio中操作

  • 自定义打包类库

新建一个.net core 的类库,在工程文件处右键,选择属性,在“打包”中勾选“在版本中生成NuGet包”,然后设置基本信息。如下图:

编译生成,就会在Debug/Release目录生成一个nupkg文件:

  • 自动更新编译版本

关于版本号:
这里指Net Framework风格的版本号,
即,主版本号.子版本号[.编译版本号[.修订版本号]]
英文对照:
Major_Version_Number.Minor_Version_Number[.Build_Number[.Revision_Number]]
主版本号和次版本号是必选的;
编译版本号和修订号是可选的,但是如果定义了修订号部分,则编译版本号就是必选的。
所有定义的部分都必须是大于或等于 0 的整数。
应根据下面的约定使用这些部分:
Major :具有相同名称但不同主版本号的程序集不可互换。例如,这适用于对产品的大量重写,这些重写使得无法实现向后兼容性。
Minor :如果两个程序集的名称和主版本号相同,而次版本号不同,这指示显著增强,但照顾到了向后兼容性。例如,这适用于产品的修正版或完全向后兼容的新版本。
Build :编译版本号(内部版本号)的不同表示对相同源所作的重新编译。这适合于更改处理器、平台或编译器的情况。
Revision :名称、主版本号和次版本号都相同但修订号不同的程序集应是完全可互换的。这适用于修复以前发布的程序集中的安全漏洞。

在Visual Studio中选择NuGet包管理器,搜索“MSBump”,安装,然后在工程文件下新建一个.msbump文件,写入如下代码:

{Configurations: {    "Debug": {BumpLabel: "dev",LabelDigits: 4},    "Release": {BumpRevision: true,ResetLabel: "dev"}}
}

上文表示:当编译配置为“Debug”时,版本号生成一个dev前缀后面跟四位数字的标签,数字从0001开始递增。当编译配置为“Release”时,修订版本号会+1,清除dev标签。当然,也可以直接在.msbump中这样写:

{BumpRevision: true}

意思就是每次编译不管debug还是release,都会使修订版本号+1

在Jenkins中操作

前提操作:
需要下载NuGet.exe,并且把NuGet.exe所在目录和MSBuild所在目录加入到环境变量中,这样方便在Jenkins中直接使用msbuild和nuget命令。

  • 安装Jenkins

这里不再赘述,自行百度,就是安装Java那套环境

  • 新建任务

新建任务,起个名字,选择“构建一个自由风格的软件项目”,点击“OK”:

  • 编辑配置信息

我们用的是Git管理代码,所以源代码管理里选择Git,输入仓库地址和用户名密码,选择需要拉取的分支名称:

触发条件,可以根据自己的需求,比如每日定时调度:

编译环境中选择编译开始前清空Workspace,保证拉取最新代码不冲突:

编译步骤中,选择执行Windows批处理命令,主要执行如下操作:
1.进入工程文件目录
2.还原所有依赖的包
3.执行编译Release版本
4.进入Releas目录
5.将生成的nupkg文件推送到NuGet服务器
6.由于生成操作修改的修订版本号,所以将修改的文件提交

代码:

cd GAIA.GIS\
msbuild -t:restore
msbuild /p:Configuration=Releasecd bin\Release\
nuget push *.nupkg -Source http://192.168.1.209:1024/nuget iwehave2305!
git commit -a -m updateversion

如图 :

创建编译后事件,将修改记录推送到git服务器,也可以加失败邮件通知等等操作:

保存

立即构建测试一下,大功告成~

原文地址: https://www.cnblogs.com/hao-zhang/p/10178641.html

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

开发.NET Core NuGet包并实现CI/CD相关推荐

  1. 开发人员必知的5个CI/CD工具

    一旦你选择了最好的CI/CD工具,你将继续你的DevOps生命周期.如果操作得当,它将能够提高产品质量并鼓励你的团队充满自信地进行发布游戏. 软件工程的最新规范是"以更快的速度同时保证产品质 ...

  2. [NET Core] Nuget包发布流程

    1.新建一个.NET Core类库 2.新增一个方法,并编译项目 3.下载Nuget.exe,与刚才新建的类库放在同一目录下 下载地址:https://www.nuget.org/downloads ...

  3. 如何使用命令行清除NuGet包缓存?

    本文翻译自:How to clear NuGet package cache using command line? I can clear my dev computer's NuGet packa ...

  4. CI/CD——构建企业级Docker+Jenkins+Git+Harbor流水线自动化持续集成持续发布平台

    构建企业级Docker+Jenkins+Git+Harbor流水线自动化持续集成持续发布平台 CI/CD是什么? 持续集成(CI)/持续交付(CD)的优势 自动化部署流程图 Git Github Gi ...

  5. 如何能在git bash中使用mvn命令_使用Github Actions完成CI/CD工作

    在本文中,我们将介绍如何使用 Github Actions 自动化开发部署工作流,使版本控制和 CI/CD 平台在同一个地方完成. 自2019年开始,github便提供了CI/CD工具,对于publi ...

  6. 【壹个小技巧】一看就会的CI/CD :Github Actions

    什么是 CI/CD? 我这里先不说概念,先说一个平时开发的场景问题: 我们平时开发一个项目,经常会遇到这些"小"问题: 就是如何保证自己的项目是正确的,至少拿给别人的时候,可以编译 ...

  7. qa/qc_专业QA如何实施可靠的CI / CD管道?

    qa/qc 过时的传统软件开发方法并不能接管不断升级的市场趋势,并且这些方法缺乏解决方案,无法解决引入" 持续集成(CI)和持续交付(CD) "的快速软件发布需求的增长. 除了CI ...

  8. CI/CD是什么?如何理解持续集成、持续交付和持续部署

    CI/CD 是一种通过在应用开发阶段引入自动化来频繁向客户交付应用的方法.CI/CD 的核心概念是持续集成.持续交付和持续部署.作为一个面向开发和运营团队的解决方案,CI/CD 主要针对在集成新代码时 ...

  9. 【运维面试】DevOps CI/CD常见面试题

    文章目录 1. 什么是DevOps 2. 什么是持续集成 3. 什么是持续交付 4. 什么是持续部署 5. 什么是持续测试及其好处 6. 什么是版本控制及其用途? 7. 什么是 Git? 8. 解释 ...

最新文章

  1. Python·Jupyter Notebook各种使用方法
  2. 其利断金前一句是什么_绍兴晚报丨裘亚黎说|围城外的灵魂拷问:人为什么要结婚?...
  3. 文字转wav_这6款超良心语音转文字工具,真让人省心!
  4. 关于使用fastjson统一序列化响应格式。
  5. sklearn 3. 实例:随机森林在乳腺癌数据上的调参
  6. php访问方法外变量
  7. Raspberry 安装vstudio
  8. Struts2面试题分析
  9. wo-27s管理员账户和密码_获取电信天翼网关超级密码,修改路由模式为桥接模式...
  10. Nik Collection v3.0.7 2020 Mac/Win PS/LR超强调色滤镜合集Nik插件中文版+中文教程
  11. 选择一个网络托管业务域名代备案提供全面的解决方案
  12. 【Python入门】Turtle海龟库:利用海龟画笔交互绘制字符旋涡
  13. 广东省本科学校列表(附官网地址)
  14. 15kw科比服务器型号,KEB变频器/keb伺服技术/KEB制动器
  15. 进店率、提袋率、客单价
  16. WCF 项目应用连载[2] - 创建Lig日志系统
  17. 公司注册地址可以随便写吗,如何注册企业工商营业执照
  18. likely()和unlikely()
  19. 温度自动控制系统matlab,某温度控制系统的MATLAB仿真
  20. 计算机中用户必须调入,外存储器中的信息,必须首先调入 ______ ,然后才能供CPU使用。...

热门文章

  1. 公用ip地址查询_是什么使您无法更改公用IP地址并在Internet上造成严重破坏?
  2. 循序渐进DB2(第2版)——DBA系统管理、运维与应用案例
  3. 打游戏要存进度-备忘录模式
  4. Netty1:初识Netty
  5. centos6,7的启动流程
  6. mongoDB的副本机制
  7. Scribefire发CSDN博客
  8. Spring 事物传播特性
  9. 介绍一款受欢迎的.NET 开源UI库
  10. 如何对一组 IP 地址 进行排序?