Github自动打包并推送Nuget版本

如何将本身的类库,自动打包并自动发布到Nuget?html

1. 项目csproject属性修改

新建一个项目GitToNugetPackageTestgit

不用添加任何类,咱们修改csproject属性。github

替换为如下模板内容后,并修改如下节点值:json

  • 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步的基础上,鼠标右击项目,点击打包windows

在Debug下能够查看到本地生成的nuget源包api

将此源包上传至https://www.nuget.org/packages/manage/uploadapp

上传成功后,在头像弹框内点击API KEYS,而后生成一个新的API KEY(关联上GitToNugetPackageTest框架

生成成功后,在API Keys列表找到新的Key,点击复制(复制之后保存在你的记事本里,第4步须要)。post

注:注意保留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/

VS搜索nuget包:

 

以上适合小白浏览的经验步骤~

详细的打包原理及进阶,能够看俩个MVP大佬同事的博客

 dotnet 配合 GitHub 的 Action 作自动推 Tag 时打包 NuGet 包

从零开始制做 NuGet 源代码包(全面支持 .NET Core / .NET Framework / WPF 项目)

相关文章
相关标签/搜索