首页 > 其他分享 >使用Github Action实现构建、发布到 nuget.org

使用Github Action实现构建、发布到 nuget.org

时间:2023-10-12 15:57:35浏览次数:46  
标签:Github name -- nuget README Action org dotnet

DimTechStudio.Com

使用Github Action实现构建、发布到 nuget.org

GitHub Actions是GitHub提供的持续集成和持续部署(CI/CD)工具,它能够自动化构建、测试和部署你的项目。在这篇教程中,我们将探讨如何使用GitHub Actions来构建一个.NET项目,并将它发布到 NuGet.org。

配置 NuGet API 密钥

  • 首先进入nuget.org,登录你的microsoft账号
  • 点击右上角账户,API Keys
  • 点击Create
    • 一般填写KeyName
    • 如需设置此Key可管理的程序包权限,填写Global Pattern(如Wlkr.*),或者在对应程序包名前打钩

  • 生成后,你有一次机会查看此Key的值
    如果希望将此Key用于多个库,记得保管好此Key,否则只能重新生成或再新建一个Key。

设置Github Action

  • 登录Github,打开你的remote 代码库 -> Setting -> Secrets and variables -> Actions -> New repository secret,输入刚才复制的Key保存到这里,key名称改为NUGET_API_KEY,后面会用到。
  • 然后打开你的local 代码库,新建文件.github\workflows\nuget-publish.yml
mkdir .github\workflows
echo ^ > .github\workflows\nuget-publish.yml
  • 将以下内容复制进去nuget-publish.yml内保存
name: Publish NuGet Package # Action名称

# 设置触发器
# 以下示例为master分支,Directory.Build.props文件发生变动后,
# 触发本action
on:
  push:
    branches:
      - master # 监听的分支
    paths: # 监听的文件
      - 'Directory.Build.props' 

# 设置运行环境及执行步骤
# 作用见step name
jobs:
  build-and-publish:
    runs-on: windows-latest

    steps:
      - name: Checkout code
        uses: actions/checkout@v2

      - name: Setup .NET Core
        uses: actions/setup-dotnet@v1
        with:
          dotnet-version: '6.x' # 修改为你的.NET版本

      - name: Restore NuGet packages
        run: dotnet restore

      - name: Build
        run: dotnet build --configuration Release

      - name: Pack NuGet package
        run: |
          cd Wlkr.Core.Logger
          dotnet pack Wlkr.Core.Logger.csproj  --configuration Release --no-build      
          
      # 需在github库中设置${{ secrets.NUGET_API_KEY }}
      - name: Publish NuGet package
        run: dotnet nuget push **/*.nupkg --api-key ${{ secrets.NUGET_API_KEY }} --source https://api.nuget.org/v3/index.json --skip-duplicate
  • 新建文件Directory.Build.props,此文件作用是统一设置所有csproj的nuget包信息,如作者、版权、版本号等信息

实际上nuget以外的信息也能设置

<Project>
	<PropertyGroup>
		<Authors>Walker Chan</Authors>
		<Company>广州市增城区黯影信息科技部</Company>
		<Copyright>Copyright 2023 DimWalker</Copyright>
	</PropertyGroup>

	<!-- Calculate the build and revision numbers based on the current date -->
	<PropertyGroup>
		<MajorVersion>1</MajorVersion>
		<MinorVersion>0</MinorVersion>
		<BuildDate>2310</BuildDate>
		<RevisionTime>1200</RevisionTime>
		<!--<MinorVersion>$([System.DateTime]::Now.ToString("yy"))</MinorVersion>-->
		<!--<BuildDate>$([System.DateTime]::Now.ToString("MMdd"))</BuildDate>-->
		<!--<RevisionTime>$([System.DateTime]::Now.ToString("HHmm"))</RevisionTime>-->
		<BuildNumber>$(MajorVersion).$(MinorVersion).$(BuildDate).$(RevisionTime)</BuildNumber>
	</PropertyGroup>
	<!-- Use the calculated version for the NuGet package -->
	<PropertyGroup>
		<VersionPrefix>$(BuildNumber)</VersionPrefix>
		<Version>$(VersionPrefix)</Version>
	</PropertyGroup>

	<PropertyGroup>
		<!-- 设置 SolutionDir 属性为解决方案文件的绝对路径 -->
		<SolutionDir>$(MSBuildThisFileDirectory)</SolutionDir>
	</PropertyGroup>
	<ItemGroup>
		<!-- Nuget的Icon文件 -->
		<None Include="$(SolutionDir)vx_images\DimTechStudio-Icon.png">
			<Pack>True</Pack>
			<PackagePath>\</PackagePath>
		</None>
		<!-- Nuget的自述文件 -->
		<None Include="$(SolutionDir)README.md">
			<Pack>True</Pack>
			<PackagePath>\</PackagePath>
		</None>
	</ItemGroup>
	<PropertyGroup>
		<PackageIcon>DimTechStudio-Icon.png</PackageIcon>
		<!--<PackageReadmeFile>README.md</PackageReadmeFile>-->
	</PropertyGroup>
</Project>
  • 文件中版本号是以1.0.YYMM.DDsn的格式编写,当需要发布时,修改年月日或流水号,git commit并push到remote 代码库即可触发action
  • 效果查看
    图1
    图2

更新Nuget README

  • 方法一,如上图,如果在项目文件中设置了README文件,那么只能通过再次发布nuget包来更新README信息

如上图的图片文件是使用了文件件路径,没法显示在nuget.org,则需要修改README的图片路径为github url,再次发布才能看得见图片

  • 方法二,取消绑定README,登录nuget.org,进入Manage Package,编辑README信息

缺点是每次发布都需要重复一遍此操作

Author Info

DimWalker
©2023 广州市增城区黯影信息科技部
https://www.dimtechstudio.com/

标签:Github,name,--,nuget,README,Action,org,dotnet
From: https://www.cnblogs.com/jine1987/p/17759670.html

相关文章

  • GitHub发布2021年度报告:中国开发者数量全球第2 ,最受欢迎的语言是
    临近年底,各大平台年终报告频频发布。作为程序员,应该关注些什么呢?近日,全球最大开发者社区GitHub重磅发布了《2021年度Octoverse报告》,本报告首次结合了来自GitHub上,超过400万个代码库的数据,共有超过12000多名开发者参与问卷调查。在即将过去的2021年,开发者社区发生了哪些有趣......
  • webapi action 参数
    使用地址参数传递(queryString)数据:eg:http://localhost:5063/WeatherForecast?age=123///<summary>///GET方法///</summary>///<returns></returns>[HttpGet(Name="GetWea阿斯顿rFoasasst")]publi......
  • Bug实录——配置了Github SSHKey之后还需要输入密码
    问题:换了一台新机器,pull了源码进行了更新,然后配置了github的sshkey,但在push时还是提示要输入密码,但我已经在github上关闭了密码提交权限(出于安全和便捷考虑)。然后就提交失败了。分析:可能是我是先pull的代码,然后才去设置的sskkey,导致本地仓库并没有同步到这个sshKey配置信息解......
  • 将Vue3项目部署到Github Pages
    1.创建vue3项目$npminitvue@latest初始化工程,并验证。2.创建github仓库3.连接vue项目到github仓库打开vue项目根目录,初始化本地git仓库$gitinit$gitadd.$gitcommit-m"init"连接vue项目到第二步创建的github仓库$gitremoteaddoriginhttps://gith......
  • 前台首页、导出项目依赖、git介绍和安装、git,github,gitab,gitee介绍、git工作流程、git
    前台首页Header.vur<template><divclass="header"><divclass="slogan"><p>老男孩IT教育|帮助有志向的年轻人通过努力学习获得体面的工作和生活</p></div><divclass="nav"><ulclass="......
  • Programming abstractions in C阅读笔记:p176-p178
    《ProgrammingAbstractionsInC》学习第59天,p176-p178总结。一、技术总结1.addtivesequencestn=tn-1+tn-2序列:3,7,10,17,27,44,71,115,186,301,487,788,1275,...p177,Asageneralclass,thesequencesthatfollowthispatternarecalledadditivesequen......
  • Programming abstractions in C阅读笔记:p176-p178
    《ProgrammingAbstractionsInC》学习第59天,p176-p178总结。一、技术总结1.addtivesequencestn=tn-1+tn-2序列:3,7,10,17,27,44,71,115,186,301,487,788,1275,...p177,Asageneralclass,thesequencesthatfollowthispatternarecalledadditive......
  • git上传至公共或私有github
    1.下载gitbash参考链接:https://git-scm.com/download2.创建git的秘钥gitconfig--globaluser.name"githubname"gitconfig--globaluser.email"githubemail"ssh-keygen-trsa-C"githubemail"其中:githubname是你的名称,githubemail是你的邮箱3.添加de......
  • 查漏补缺,这些热门开源项目你都知道么?「GitHub 热点速览」
    查漏补缺,这些热门开源项目你都知道么?「GitHub热点速览」 本期热点速览的周榜部分的项目,基本上每周都会在GitHubTrending见到它们的身影,因为它们实在太火了。一般来说,这些火爆的项目大家都耳熟能详,但是为了防止有些小伙伴不怎么逛GitHub,以及并没有翻阅之前的月刊或者是......
  • Learn Git in 30 days—— 第 28 天:了解 GitHub 的 fork 与 pull request 版控流程
    写的非常好的一个Git系列文章,强烈推荐原文链接:https://github.com/doggy8088/Learn-Git-in-30-days/tree/master/zh-cn我们知道Git仓库并没有什么「权限控制」的概念,因为他是分散式的版本控制系统,当你执行 gitclone 之后就会把整份拥有完整版本历史的仓库下载回来,接着你就......