开发.NET Core NuGet包并实现CI/CD

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

CI/CD流程如下图:
640?wx_fmt=png

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

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

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

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

在Visual Studio中操作

  • 自定义打包类库

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

编译生成,就会在Debug/Release目录生成一个nupkg文件:
640?wx_fmt=png

  • 自动更新编译版本

关于版本号:
这里指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”:
640?wx_fmt=png

  • 编辑配置信息

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

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

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

编译步骤中,选择执行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

如图 :
640?wx_fmt=png

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

保存

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

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

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

640?wx_fmt=jpeg


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

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

相关文章

acwing221 龙哥的问题

acwing221 龙哥的问题 文章目录题目&#xff1a;题解&#xff1a;代码&#xff1a;题目&#xff1a; 题解&#xff1a; 代码&#xff1a; #include <bits/stdc.h> using namespace std; typedef long long ll;int phi(int x) {int ansx;for(int i2;(ll)i*i<x;i)if(x%…

AT2363-[AGC012C]Tautonym Puzzle【构造】

正题 题目链接:https://www.luogu.com.cn/problem/AT2363 题目大意 给出nnn&#xff0c;要求构造一个字符串sss&#xff0c;使得能够找出恰好nnn个子序列使得这个子序列能划分成前后相等的两份。 要求∣s∣≤200|s|\leq 200∣s∣≤200&#xff0c;字符集为[1,100][1,100][1,1…

8.10模拟:贪心、最优化思路

文章目录前言最大的收获&#xff1a;考场流程T1 alignmentT2 flowerT3 reformatT4 inverse复盘T2 flowerT3 reformatT4 inverse总结前言 305分 今天考得还算不错&#xff01;awa &#xff08;冷静&#xff0c;明天数据结构还是要先写暴力&#xff09; 因为数据结构的题就是为了…

DP专练3:征途

虽然只有1道题&#xff0c;但是含金量还是够够di 文章目录题目题解代码实现题目 题解 我们直接对答案输出格式进行处理&#xff1a;设第 iii 天走的路程为 aia_iai​&#xff0c;总路程为 S∑i1nleniS\sum_{i1}^nlen_iS∑i1n​leni​&#xff0c;那么 v∑i1m(ai−Sm)2mv∑_{i1…

云时代的.NET

编程语言从最初的0101机器码到汇编语言再到面向对象的编程&#xff0c;不断的发展&#xff0c;整个发展趋势呈现高内聚、低耦合、可重用、可理解的特点。最早编程是用机器码&#xff0c;人的大脑不像电脑&#xff0c;无法处理0101&#xff1b;后来汇编语言还是太费解&#xff0…

P6295-有标号 DAG 计数【多项式求逆,多项式ln】

正题 题目链接:https://www.luogu.com.cn/problem/P6295 题目大意 求所有nnn个点的弱联通DAGDAGDAG数量。 1≤n≤1051\leq n\leq 10^51≤n≤105 解题思路 先不考虑弱联通的限制&#xff0c;求nnn个点的DAGDAGDAG数量。 设为fif_ifi​&#xff0c;那么有式子 fn∑i1n(ni)2i(…

研究性学习:APP的隐私问题

文章目录写在前面背景&#xff08;problem&#xff09;一个实例(example)手机App用户输入隐私数据的识别与检测技术研究&#xff08;solution&#xff1f;&#xff09;&#xff08;官方&#xff09;概览背景介绍4.系统设计隐私政策引言1.收集信息2. 信息使用3. 信息披露4. 信息…

DP专练4:[SCOI 2010]股票交易(单调队列优化dp)

昨天晚上&#xff0c;初见它时&#xff0c;月黑风高&#xff0c;一个电脑&#xff0c;一支笔&#xff0c;一个人 今天秋高气爽&#xff0c;再一瞥&#xff0c;回眸间 我又来了&#xff0c;honey题目题解代码实现题目 题解 首先这种 iii 天与前面 jjj 天有关联&#xff0c;而…

【做题记录】[NOIP2016 普及组] 魔法阵

P2119 魔法阵 2016年普及组T4 题意&#xff1a; 给定一系列元素 \(\{X_i\}\) &#xff0c;求满足以下不等式的每一个元素作为 \(a,b,c,d\) 的出现次数 。 \[\begin{cases}X_a<X_b<X_c<X_d \\ X_a-X_b2\times (X_d-X_c) \\X_b-X_a<\dfrac{X_c-X_b}{3}\end{cases} \]…

P3812 【模板】线性基

P3812 【模板】线性基 题目描述 给定n个整数&#xff08;数字可能重复&#xff09;&#xff0c;求在这些数中选取任意个&#xff0c;使得他们的异或和最大 题解&#xff1a; 把所有数insert进入线性基&#xff0c;把线性基中所有元素xor起来 ans 代码&#xff1a; #incl…

“被狗啃”的按钮引发的开源社区信任危机

昨天&#xff0c;在国外民众还在欢度圣诞期间&#xff0c;开发者社区却对 Antd 开发团队发起了连番的炮轰。一觉醒来&#xff0c;他们发现由自己参与设计的、公司内网、办事系统等网页上&#xff0c;有一些按钮的上面多了一团白色的“积雪”&#xff0c;在白背景下&#xff0c;…

牛客练习赛89E-牛牛小数点【数论】

正题 题目链接:https://ac.nowcoder.com/acm/contest/11179/E 题目大意 定义f(x)f(x)f(x)表示1x\frac{1}{x}x1​的混循环节长度&#xff08;如果没有循环节就是000&#xff09;&#xff0c;TTT组询问给出l,rl,rl,r求 ∑ilrf(i)\sum_{il}^rf(i)il∑r​f(i) 1≤T≤100,1≤l≤r≤…

8.11模拟:数据结构

文章目录前言考场复盘T1 forwardT2 basketT4 square总结前言 320分 还不错啦 没有挂分还是很可贵的 &#xff08;暴力TLE就不怪我了&#xff09; T4反过来想其实就很可做了 逆向的思想需要培养&#xff08;今天T1、昨天T2也是&#xff09; 说实话今天早上状态不太好 特困生 不…

[COCI2017-2018#5] Pictionary(并查集+dfs)

贼ex的一道&#xff0c;卡了本仙女整整7个小时orz 思路容易理解&#xff0c;but码力very重要orz 我愿意花五毛钱提升我的码力&#xff0c;换个脑子也行&#xff0c;不换脸这张脸生得俊俏 luogu传送door 题目 在宇宙一个不为人知的地方&#xff0c;有一个星球&#xff0c;上面…

P4570 [BJWC2011]元素

题目描述&#xff1a; 每个矿石有序号和魔力值&#xff0c;每个矿石最多使用一次&#xff0c;且多个矿石序号不能异或为0的前提下&#xff0c;问最多可以得到多少魔力值 题解&#xff1a; 异或运算的最终结果只和用于运算的数的各位上1的数量有关&#xff0c;与各数字运算的…

Docker最全教程——从理论到实战(九)

在本系列教程中&#xff0c;笔者希望将必要的知识点围绕理论、流程&#xff08;工作流程&#xff09;、方法、实践来进行讲解&#xff0c;而不是单纯的为讲解知识点而进行讲解。也就是说&#xff0c;笔者希望能够让大家将理论、知识、思想和指导应用到工作的实际场景和实践之中…

【做题记录】CF1444A Division

CF1444A Division 题意&#xff1a; 给定 \(t\) 组询问&#xff0c;每组给两个数 \(p_i\) 和 \(q_i\) &#xff0c;找出最大的整数 \(x_i\) &#xff0c;要求 \(p_i\) 可被 \(x_i\) 整除&#xff0c;且 \(x_i\) 不可被 \(q_i\) 整除 。 题解&#xff1a; 呜呜呜这道题总共算下来…

CF891C-Envy【可撤销并查集】

正题 题目链接:https://www.luogu.com.cn/problem/CF891C 题目大意 nnn个点mmm条边的一张无向联通图&#xff0c;每次询问一个边集能否同时出现在同一棵最小生成树上。 1≤n,m,q,wi,∑k≤51051\leq n,m,q,w_i,\sum k\leq 5\times 10^51≤n,m,q,wi​,∑k≤5105 解题思路 考虑K…

[2019CSP多校联赛普及组第五周] 调度CPU (贪心)

来来来&#xff0c;走过路过不要错过题目题解代码实现1代码实现2题目 ⼩Y同学有⼀块超级CPU&#xff0c;它有两个超级核⼼A和B。 A核⼼可以同时处理多项任务&#xff0c;每项任务处理时间为x&#xff0c;B核⼼只能同时处理⼀项任务&#xff0c;每项任务处理时间为y。 这⼀天…

8.12模拟:dp递推

文章目录前言本次最大收获考场复盘T1 lectureT2 n-thlonT3 assignmentT4 recoverset总结前言 245分 100704035 不太满意qwq &#xff08;被KH暴打 &#xff09; 后三道题全是部分分 而且T2和T3关键性质都出来了&#xff0c;距离正解只差临门一脚 但是就差了这一脚 感觉今天T2、…