基于 .NET 的 Nuget 发版工具
背景
由于 Natasha 及周边项目发版任务多,文件结构也不简单,之前一直使用基于 Github 管道脚本和 XUnit 来发版。这个方案对于发版环境与条件依赖性较强,且不够灵活,因此萌生出做一个本地管理 Nuget 发版工具的想法,取名为 Jester.
下载地址:https://github.com/NMSAzulX/Jester.Tools.Nuget/releases/tag/1.0.0.0
若出现问题可在本篇文章下留言,或在仓储地址中提交 ISSUE.
运行环境
- 采用独立打包。
- Win64。
安全说明
目前不打算公开这种工具类的源代码,因此列出相关依赖项以保证用户自主评估安全风险。
依赖项列表:
Microsoft.CodeAnalysis.CSharp
Roslyn 的 C# 语言构建库, 作者:MicrosoftNuGet.Versioning
Semantic Versioning 的操作库,作者: MicrosoftSpectre.Console
控制台界面,作者: Patrik Svensson, Phil Scott, Nils Andresen, Cedric Luthi, Frank Ray.
Spectre.Console 项目地址:https://github.com/spectreconsole/spectre.console
个人觉得不太好用,还有 BUG.
网络使用:
- 使用 "pl" 命令查看打包信息列表时,向 NUGET 请求包信息。
- 使用 "pack" 命令打包时,向 NUGET 请求包信息以做校验本地包与服务器包上的版本信息。
- 使用 "push" 命令推送包时,向用户指定源服务器或 NUGET 官方源推送包。
文件改变:
- 使用 "pack" 命令时,会更新或创建 csproj 文件的版本信息。
- 使用 "pack" 命令时,会更新或创建 csproj 文件中的 None Include 节点信息。
工具使用
界面与输入端
命令支持
输入命令 {?} 可以查看改工具支持的命令。
Nuget Key 操作
#查看当前 nuget key 列表
nl
#添加一个 nuget key 发布方案
na publishTest oy2nabcdefghiojxv http://公司的nuget地址
#不指定 source 使用 nuget 官方的地址
na publishTest oy2nabcdefghiojxv
#删除发布方案
nd publishTest
Solution 操作
该工具以 sln 解决方案为单位,支持添加、删除、更新 NUGET KEY 等操作。
以下为命令使用案例:
#查看当前存在的解决方案
sl
#增加一个解决方案
sa c://mysolution
#删除列表中第一个方案
sd 0
#让该方案在发布时使用某个 NUGET KEY
#锁定第一个方案
sc 0
检查与打包
该工具以 CHANGELOG.MD 文件为打包发版依据。
#查看当前解决方案列表
sl
#锁定你要操作的解决方案
#锁定列表中第一个解决方案
#若没有 CHANGELOG 文件工具将自动生成一个文件
#CHANGELOG 中有相应的版本说明和使用案例
sc 0
#按照文件中的案例格式编辑被打开的 CHANGELOG 文件
#使用 pl 查看当前 CHANGELOG 文件与当前解决方案的匹配信息【非必要】
pl
#确认无误,打包
pack
#若不发布隐式 using 文件,则
pack --no-using
#若不合并 targets 文件,则
pack --no-combine
#若有多个 targets 文件,则
#1. 去掉文件中的 <project></project> 节点标签,以便 Jester 合并内容到同一个 <project> 节点下。
#2. 不要使用 Jester.Usings.targets 来命名文件,该文件预留给了 Jester 输出隐式命名空间用。
#3. 不要使用 Jester.Combine.targets 来命名文件,该文件预留给了 Jester 合并所有 targets 文件的输出文件使用。
#后续会根据反馈对 pack 策略做出调整。
pl 命令会自动拉去 nuget 官方记录的版本信息,local 为本地工程文件中的版本信息,next 为 CHANGELOG 被打包的版本信息
发布
#如果之前已经锁定解决方案则不用重新锁定了
#若被锁定的解决方案没有关联发布策略
su publishTest
#查看打包好的包 在 your_sln_folder/nugets 文件夹中
#发布
push
退出
按 Q 退出
基于 .NET 的 Nuget 发版工具的更多相关文章
- Jenkins日常运维笔记-重启数据覆盖问题、迁移、基于java代码发版(maven构建)
之前在公司机房部署了一套jenkins环境,现需要迁移至IDC机房服务器上,迁移过程中记录了一些细节:1)jenkins默认的主目录放在当前用户家目录路径下的.jenkins目录中.如jenkins使 ...
- Android 发版的小工具
Android加固包签名 我们知道自己的apk在上传市场的时候, 为了更好的包含我们的代码需要加固服务, 加固后的apk是不能直接安装的, 需要我们手动签名. 关于Android签名的知识就不在赘述了 ...
- 基于数据库的代码自动生成工具,生成JavaBean、生成数据库文档、生成前后端代码等(v6.0.0版)
TableGo v6.0.0 版震撼发布,此次版本更新如下: 1.UI界面大改版,组件大调整,提升界面功能的可扩展性. 2.新增BeautyEye主题,界面更加清新美观,也可以通过配置切换到原生Jav ...
- AEAI Portal V3.5.2门户集成平台发版说明
AEAI Portal门户集成平台为数通畅联的核心产品,本着分享传递的理念,数通畅联将Portal_server.Portal_portlet两个项目开源,目的在于满足客户与伙伴的OEM需求,以及为广 ...
- 使用 shell 脚本自动获取发版指标数据
问题背景 大一点的公司都会建立一套规章流程来避免低级错误,例如合入代码前必需经过同行评审:上线前必需提测且通过 QA 验证:全量前必需经过 1%.5%.10%.20%.50% 的灰度过程.尤其是最后一 ...
- pyDash:一个基于 web 的 Linux 性能监测工具
pyDash 是一个轻量且基于 web 的 Linux 性能监测工具,它是用 Python 和 Django 加上 Chart.js 来写的.经测试,在下面这些主流 Linux 发行版上可运行:Cen ...
- java生产环境增量发版陷阱【原】
前言 在生产环境,我们为了降低发版风险,一般都只做增量发布,不做全量发布. 除非项目只有一到两人开发,对时间线和代码脉络结构一清二楚,才可全量发布. 然而增量发布也是有一定隐藏陷阱在里面的,以下就是笔 ...
- 阿里云移动研发平台 EMAS 助力银行业打造测试中台,提升发版效能
随着移动互联网的发展,手机银行凭借低成本.操作简单.不受时间空间约束等优势,正逐步替代传统的网银交易方式.越来越多的银行开始了“业务移动化”转型之路,“手机APP”已经成为企业价值传递和关系维护的关键 ...
- Git提交代码规范 而且规范的Git提交历史,还可以直接生成项目发版的CHANGELOG(semantic-release)
Git提交代码规范 - 木之子梦之蝶 - 博客园 https://www.cnblogs.com/liumengdie/p/7885210.html Commit message 的格式 Git 每次 ...
- 基于Containerd容器引擎和kubeadm工具部署K8sv1.26.3
前文我了解了基于ubuntu2204部署containerd容器引擎以及containerd客户端工具的部署和使用相关话题,回顾请参考:https://www.cnblogs.com/qiuhom-1 ...
随机推荐
- eclipse安装及配置jdk、tomcat
一.安装eclipse: (安装之前一定要确认jdk是否安装,没安装的一定要安装) 官网下载:Eclipse Downloads | The Eclipse Foundation 下载好如图安装程序: ...
- 关于 JS 函数的一切
本文基于: Bilibili - 自由的加百利 前置条件: 需掌握函数的编写.传参.返回.调用 理解作用域.掌握定时器的用法 知道引用类型和基本数据类型的区别 知道函数也是引用类型 听说过同步异步的概 ...
- synchronized的四种锁状态
Java 多线程的锁都是基于对象的,Java 中的每一个对象都可以作为一个锁. 类锁,其实就是 Class 对象的锁. Class 对象是一种特殊的 Java 对象,代表了程序中的类和接口.Java ...
- redis的主从复制master/slaver
什么是Redis的复制 就是我们常说的主从复制,主机数据更新后根据配置和策略,自动同步到备机的master/slaver机制,Master以写为主,Slave以读为主. 复制原理 Slave启动成 ...
- 使用FastAPI整合Gradio和Django
大家好,我是每天分享AI应用的萤火君! 经常接触机器学习的同学可能都接触过Gradio这个框架,Gradio是一个基于Python的专门为机器学习项目创建的快速开发框架,可以让开发者快速发布自己的模型 ...
- [python]Gunicorn加持,轻松提升Flask超7倍性能
前言 之前学习和实际生产环境的flask都是用app.run()的默认方式启动的,因为只是公司内部服务,请求量不高,一直也没出过什么性能问题.最近接管其它小组的服务时,发现他们的服务使用Gunicor ...
- 看图认识Javascript
- VMware安装教程---------------------以及Windows,Linux,Apple MAC OS系统安装
1.什么是VMware虚拟机 VMware虚拟机是一个虚拟机软件,它可以在一台机器上同时运行多个系统,这些系统包括Windows,Linux,Apple os等. 2.虚拟机有什么用 虚拟机的用处很多 ...
- JBOSS漏洞复现
Jboss漏洞复现 统一靶场:/vulhub/jboss JMX Console 未授权访问漏洞 # 介绍 JBoss的webUI界面 http://ip:port/jmx-console未授权访问( ...
- 学英语工具集KindleVocab和WordSaver
学英语坚持不下去是因为没选好工具. 我现在用的工具是Kindle+网页读新闻 生词点按之后导出到Anki背诵 借助工具,整个过程几乎无痛 1.Kindle生词及所在句子导出软件 KindleVocab ...