Github自动打包并推送Nuget版本
如何将自己的类库,自动打包并自动发布到Nuget?
1. 项目csproject属性修改
新建一个项目GitToNugetPackageTest
不用添加任何类,我们修改csproject属性。
替换为以下模板内容后,并修改以下节点值:
- TargetFrameworks 依赖的框架版本,比如net452;netcoreapp3.1,多个版本以分号隔开Version
- Version 版本号,每次需要升级Nuget版本时,可以修改这个提交一下就行了。
- RespositoryUrl、PackageProjectUrl替换成自己的项目地址和仓库地址
1 <Project Sdk="Microsoft.NET.Sdk.WindowsDesktop"> 2 <PropertyGroup> 3 <TargetFrameworks>net45</TargetFrameworks> 4 <GeneratePackageOnBuild>true</GeneratePackageOnBuild> 5 <Version>1.0.0</Version> 6 <Authors>Kybs0</Authors> 7 <UseWpf>True</UseWpf> 8 <UseWindowsForms>true</UseWindowsForms> 9 <RepositoryUrl>https://github.com/Kybs0/GitToNugetPackageTest.git</RepositoryUrl> 10 <PackageProjectUrl>https://github.com/Kybs0/GitToNugetPackageTest</PackageProjectUrl> 11 <PackageIconUrl></PackageIconUrl> 12 <RepositoryType>git</RepositoryType> 13 <Description>测试:Git自动打包,并推到Nuget源。</Description> 14 <LangVersion>latest</LangVersion> 15 </PropertyGroup> 16 <ItemGroup> 17 <None Remove="GitToNugetPackageTest.csproj.DotSettings" /> 18 </ItemGroup> 19 <ItemGroup> 20 <PackageReference Include="System.ValueTuple" Version="4.5.0" /> 21 </ItemGroup> 22 </Project>
2. 生成并上传Nuget包
在第1步的基础上,鼠标右击项目,点击打包
在Debug下可以查看到本地生成的nuget源包
将此源包上传至https://www.nuget.org/packages/manage/upload。
上传成功后,在头像弹框内点击API KEYS,然后生成一个新的API KEY(关联上GitToNugetPackageTest)
生成成功后,在API Keys列表找到新的Key,点击复制(复制以后保存在你的记事本里,第4步需要)。
注:注意保留API KEY!刷新页面就没有了,除非点击重新生成,但是重新生成的Key就是另一个Key值了。
所以为了减少麻烦,建议一个项目用一个API KEY。
3.新建Action,添加打包流程
在github上新建个repository,并将项目推送上去:https://github.com/Kybs0/GitToNugetPackageTest
然后在Action下新建一个workflow
选.NetCore模板,然后修改为以下内容:
1 name: CI 2 3 on: 4 push: 5 branches: [ master ] 6 pull_request: 7 branches: [ master ] 8 9 jobs: 10 build: 11 runs-on: windows-latest 12 13 # Steps represent a sequence of tasks that will be executed as part of the job 14 steps: 15 # 1.Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it 16 - uses: actions/checkout@v2 17 # 2.runtime environment 18 - name: Setup .NET Core 19 uses: actions/setup-dotnet@v1 20 with: 21 dotnet-version: 3.1.100 22 # 3.build 23 - name: Build with dotnet 24 run: dotnet build --configuration Release 25 # 4.Install Nuget 26 - name: Install Nuget 27 run: | 28 $sourceNugetExe = "https://dist.nuget.org/win-x86-commandline/latest/nuget.exe" 29 $targetNugetExe = "nuget.exe" 30 Invoke-WebRequest $sourceNugetExe -OutFile $targetNugetExe 31 # 5. Push package 32 - name: Push generated package to GitHub registry 33 run: | 34 .\nuget push .\GitToNugetPackageTest\bin\Release\*.nupkg -Source https://api.nuget.org/v3/index.json -SkipDuplicate -ApiKey ${{ secrets.NugetKey }} -NoSymbols
以上对master分支打包,并推送到Nuget。
需要修改的是第5步,如果workflow的yml格式文件是在解决方案下的,需要添加“.\GitToNugetPackageTest\bin\Release\*.nupkg”相对路径,改个名称就好。
4. GitHub关联相应的Nuget源地址
在github项目所在的设置-Secrets页面,添加第二步从nuget生成的API Key。
添加后,尝试修改csproject中的版本号为1.0.1,然后等待github打包,打包完成后,nuget包的版本就更新成1.0.1了:https://www.nuget.org/packages/GitToNugetPackageTest/
以上适合小白浏览的经验步骤~
详细的打包原理及进阶,可以看俩个MVP大佬同事的博客
dotnet 配合 GitHub 的 Action 做自动推 Tag 时打包 NuGet 包
从零开始制作 NuGet 源代码包(全面支持 .NET Core / .NET Framework / WPF 项目)
原文地址:https://www.cnblogs.com/kybs0/p/12982532.html
- IOS学习7——cocoapod安装与使用教程
- 使用Docker环境快速搭建靶机环境
- Java标准I/O流编程一览笔录
- 十分钟学perl够用(客服MM都懂了)
- Java多线程并发编程一览笔录
- Tomcat6/7应用服务器-禁用RC4等弱密码套件
- mybaits3整合spring总结
- 如何使用Airgeddon找回WiFi密码
- 设计缺陷将导致亚马逊Echo变身成为监听设备
- Unity引擎与C#脚本简介
- Redis分布式缓存系统Lua脚本食用指引
- 基于复杂方案OWSAP CsrfGuard的CSRF安全解决方案(适配nginx + DWR)
- XMLHttpRequest对象如何兼容各浏览器使用?
- Java使用wsdl生成axis版本webservice服务端/客户端代码
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 一文概览无监督聚类算法有多少 | 算法基础(10)
- 算法集锦(28)| 智能医疗 | 血液细胞分类算法
- 基于飞桨复现 CVPR2018 Relation Net的全程解析
- 如何将DB2数据库转换成Oracle数据库,这一篇告诉你
- MySQL 8.0 安装部署3个注意事项
- 打卡群刷题总结0802——反转链表 II
- 打卡群刷题总结0801——解码方法
- 动手写简单的嵌入式操作系统二
- C++核心准则E.6:使用RAII防止资源泄露
- C++核心准则E.12: 当不可能或不愿意通过抛出异常退出函数时使用noexcept
- C++核心准则E.13: 直接拥有一个对象所有权时永远不要抛出异常
- C++核心准则E.14:使用根据目的设计的用户定制类型异常(非内置类型)
- C++核心准则E.16:析构函数,内存释放和swap操作永远不能失败
- Eclipse配合GDB和jlinkGDBServer仿真调试STM32
- 单片机程序构架