介绍
在DevOps的现代时代,自动化已变得越来越流行,而创建/上传软件包已成为过去。而且,软件包的数量在开发人员的生活中日益增加。因此,在NuGet.org上手动构建、发布和部署所有软件包并不容易。我们可以手动管理几个软件包(1-2),但是如果我们需要管理更多的软件包(5,10,依此类推),那么它将变得很繁琐。
使用GitHub的actions,我们可以使此过程完全自动化。
这是逐步指导如何自动将程序包生成、发布和部署(发布)到NuGet。
步骤
1
在GitHub上创建一个新的存储库并上传您的代码。
2
创建一个GitHub Action,使构建和发布变得容易。当我们创建工作流程时,它将创建一个.yaml文件。在此示例中,我将为.NET Core(C#)创建工作流。
3
上一步创建.NET Core环境的工作流。它具有预定义的结构,这是构建和测试的良好起点。它具有以下示例代码。
# This workflow will build a .NET project
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-net
name: .NET
on:
push:
branches: [ "master" ]
pull_request:
branches: [ "master" ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup .NET
uses: actions/setup-dotnet@v3
with:
dotnet-version: 6.0.x
- name: Restore dependencies
run: dotnet restore
- name: Build
run: dotnet build --no-restore
- name: Test
run: dotnet test --no-build --verbosity normal
4
上面的默认代码足以构建和测试代码。但是我们需要在NuGet.org上发布该软件包。为此,我们需要在.yaml文件中添加一个发布步骤。
注意:我添加了工作目录标签,因为在同一解决方案中有多个项目。
- name: Publish
uses: brandedoutcast/[email protected]
with:
PROJECT_FILE_PATH: AllenDynamicExpressions/AllenDynamicExpressions.csproj
NUGET_KEY: ${{secrets.NUGET_API_KEY}}
brandedoutcast创建了可重用的GitHub Action以发布NuGet软件包。此操作将查找对.csproj文件中的
在NuGet.org上进行部署时,我们需要一个API密钥来对此进行验证。为此,我们使用了变量。
5
从NuGet.org创建API密钥,然后将其添加到GitHub存储库中的“设置” >Secrets下。创建一个变量名“NUGET_API_KEY”。
6
保存.yaml文件并开始操作。您将看到该解决方案将构建并发布在NuGet.org上。
7
已经自动打包到NuGet.org
摘要
每当我们更新软件包并在master分支中推送代码时,GitHub action都会自动启动并将软件包推送到NuGet.org。现在,我们无需手动管理软件包,也无需担心软件包的数量。
只有发布的时候往Master分支合并 修改版本号 就行了,其他时候代码提交在别的分支.
- notnet.yml实例
# This workflow will build a .NET project
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-net
name: Publish
on:
push:
branches: [ "master" ]
pull_request:
branches: [ "master" ]
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup .NET
uses: actions/setup-dotnet@v3
with:
dotnet-version: 6.0.x
- name: Restore dependencies
run: dotnet restore
- name: Build
run: dotnet build --configuration Release --no-restore
working-directory: ./AllenDynamicExpressions/
- name: Publish
uses: brandedoutcast/[email protected]
with:
PROJECT_FILE_PATH: AllenDynamicExpressions/AllenDynamicExpressions.csproj
NUGET_KEY: ${{secrets.NUGET_API_KEY}}
标签:Github,name,Actions,NuGet,actions,软件包,dotnet,org
From: https://www.cnblogs.com/vsnb/p/17130204.html